Network/네트워크보안과프로그래밍
Introduction
와븨
2022. 9. 24. 21:57
개요
- 네트워크는 대부분 TCP/IP로 이루어져서 TCP/IP 프로토콜 그룹이라고도 함
계층화
TCP/IP 프로토콜 집합의 4계층
- 응용 계층 (application) - Telnet, FTP, e-mail
- 전송 계층 (transport) - TCP, UDP
- 네트워크 계층 (network) - IP, ICMP, IGMP
- 링크 층 (network interface) - 장치 드라이버와 인터페이스
OSI 7계층 : 물리계층, 데이터링크계층, 네트워크계층, 트랜스포트계층, 세션계층, 프레젠테이션계층, 애플리케이션계층
링크 계층, 데이터링크 계층, 네트워크 인터페이스 계층
- 운영체제의 디바이스 드라이버와 네트워크 인터페이스 카드(LAN CARD) 포함
- 연동되어 있는 케이블의 물리적인 인터페이스와 관련된 하드웨어적인 부분 제어
네트워크 계층, 인터넷 계층
- 네트워크 상의 패킷의 이동 제어(패킷 라우팅)
- IP, ICMP, IGMP로 구성
IP | unique한 주소를 통해 목적지에 다가갈 수 있도록 함 (전세계에 하나밖에 없어서 어디든지 갈 수 있다) |
ICMP | IP 패킷 전송 중 에러 발생 시 에러 발생 원인을 알려주거나 네트워크 상태를 전달하는 프로토콜 |
IGMP | 서브넷(로컬 네트워크) 상의 멀티캐스팅을 위한 프로토콜 |
트랜스포트 계층
- 상위 응용 층에 대해 두 호스트간의 데이터 흐름을 제공
- TCP, UDP
TCP | - 두 호스트간의 신뢰성 높은 데이터 흐름을 제공 (분할, 패킷 식별, 타임 아웃 설정-재전송 관련 기능) => 타임 아웃 기능을 활용해 전송되지 못한 잃어버린 패킷을 확인 - 대용량 데이터 전송 : 대용량 데이터를 분할하여 전송하고 재조립을 하는데, 이 때 재조립을 TCP가 담당 |
UDP | - 아주 단순한 서비스를 응용 계층에 제공 - 90% 정도를 전송 - 빠른 전송 -> 빠른 응용에 사용 |
응용 계층
- 특정 응용에 대한 상세한 동작을 처리
- 공통 응용 : HTTP-웹, Telnet-원격 접속 후 연결, FTP-파일 전송, 두개의 연결(실질적 파일 전송, 컨트롤), SMTP-네트워크 통계 자료 받음, SNMP-시스템이나 장비 모니터링
인터넷을 구성하는 가장 쉬운 방법
- 라우터를 통해 둘 또는 그 이상의 네트워크를 연결
- 멀티 홈드 시스템 : 복수의 인터페이스를 갖는 시스템 => 호스트가 라우터 기능을 수행하도록 구성 가능
- Bridge/Hub : 네트워크를 연결하는 또 다른 방법으로 링크 계층에 접속
+) 인터넷이 강력하고 편한 이유 : 응용으로부터 네트워크 접속에 따른 물리적인 부분이 감추어져 있기 때문이다.
TCP/IP 계층화
TCP 응용
- HTTP
- Telnet과 Rolgin
- FTP
- SMTP
UDP 응용
- DNS
- TFTP
- Bootstrap Protocol
- SNMP
- QUIC
IP
ICMP(Internet Control Message Protocol)
- IP층을 이용해서 에러메세지 교환과 다른 중요한 정보를 다른 호스트나 라우터의 IP층과 교환
- 응용 계층에서 직접 액세스 -> PING(네트워크 상황 판단에 사용), Traceroute(hop에 limit을 줘서 패킷 죽으면 에러 m을 전송하고 hop을 1씩 더함)
IGMP(Internet Group Management Protocol)
- 복수의 호스트에 UDP 데이터 그램을 송신하는 멀티캐스팅에 이용되는 프로토콜
ARP와 RARP
- IP 주소와 MAC 주소 간의 변환에 사용
IP 주소 | - Global하게 고유함 - 네트워크 계층 |
MAC 주소 | - Local 내에서만 고유함 (Local 외에서는 중복도 상관없음) - 링크 계층 |
인터넷 주소
- 인터넷 상의 모든 인터페이스는 고유의 인터넷 주소(IP 주소)를 갖는다.
- IP 주소는 A~E의 5개의 클래스로 나눈다.
IP 주소의 유형
- 유니캐스트(Unicast, 단일 호스트)
- 브로드캐스트(broadcast, 특정 네트워크 상의 모든 호스트)
- 멀티캐스트(multicast, 멀티 캐스트 그룹에 속하는 호스트)
네트워크 IP 주소 관리 조직
- InterNIC(Internet Network Information Center) : 등록서비스, 디렉토리와 데이터 베이스 서비스, 정보 서비스
- KRNIC : 국내의 IP 주소와 도메인 이름 할당
DNS
- IP 주소와 호스트 이름간의 대응 관계 정보를 제공하는 분산 데이터 베이스
캡슐화 (Encapsulation)
TCP를 이용한 데이터 전송
- 데이터의 전송 시 각 계층은 데이터가 목적지에 전달되도도록 수신된 데이터에 각종 헤더와 데이터 트레일러 정보를 추가
- TCP 세그먼트(segment) : TCP가 IP에 전송하는 데이터 단위
- IP 데이터그램(datagram) : IP가 네트워크 인터페이스로 전송하는 데이터 단위
- 프레임(frame) : 이더넷 네트워크를 통하여 전달되는 비트 스트림
TCP를 이용한 데이터 전송 : 각 계층은 수신된 데이터에 각종 헤더와 데이터 트레일러 정보를 추가
이더넷 프레임의 물리적 특성에 따른 데이터 크기 : 46~1500 바이트
UDP 이용한 데이터 전송
- UDP가 IP로 전송하는 정보 단위는 UDP 데이터 그램
- UDP 헤더의 크기 : 8바이트
TCP와 UDP의 16비트 포트번호
- 헤더에 응용을 식별하기 위한 발신지 포트 번호와 목적지 포트 번호를 저장
이더넷 헤더의 16비트 프레임 타입 필드
- 네트워크층 프로토콜이 데이터를 생성한 것을 식별
역다중화 (Demultiplexing)
- 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업
- 동작 방식 : 세그먼트가 호스트에 도착하면 트랜스포트 계층은 세그먼트 안의 목적지 포트번호를 검사 -> 상응하는 소켓으로 세그먼트 전송
클라이언트-서버 모델
반복 서버
- TCP 서버
- 순서 : 클라이언트의 요청 대기 -> 요청 처리 -> 클라이언트에게 응답 전송 -> 다시 요청 대기
- 동시 서비스 제공 불가
병렬 서버
- UDP 서버
- 순서 : 클라이언트의 요청 대기 -> 요청 처리를 위한 새로운 서버를 시작 -> 처리 후 서버 종료 -> 다시 요청 대기
- 동시 서비스 제공 : 새로운 별도의 서버를 가동하여 복수의 클라이언트가 동시에 서비스를 받을 수 있음
포트 번호
- TCP와 UDP가 응용을 식별하기 위해서 16비트 포트 번호를 이용
- 클라이언트 포트 번호 : 하나의 클라이언트는 사용자가 서비스를 필요로 하는 동안만 존재
- 1~1024번은 지정 포트, 1025번 부터는 랜덤 포트
- UNIX 시스템에서의 포트 번호 : ~/etc/services 파일에 들어있음
RFC
- 프로토콜을 규정한 문서 (인터넷에서 기술을 구현하는 데에 필요한 절차 등을 제공하는 공문서 간행물)
- 인터넷에 대한 모든 공식적인 표준안에 대한 문서 양식으로 고유 번호가 부여됨
- FTP와 전자 메일을 통해 RFC의 자료를 입수
- 할당된 번호 RFC는 인터넷 프로토콜에서 사용하고 있는 모든 매직 넘버나 정수 등이 정의되어 있음
- IAB의 공식 프로토콜 표준은 현재 RFC 1600까지 되어 있음
- 호스트 요구사항 RFC : RFC 1122(링크층, 네트워크 층, 트랜스포트 층 대상), RFC 1123(응용 층 대상)
- 라우터의 요구사항 RFC : RFC 1009
인터넷
- 소문자로 된 인터넷 (internet) : 공통 프로토콜 그룹을 사용하는 복수의 네트워크로 접속한 것
- 대문자로 된 인터넷 (Internet) : TCP/IP를 사용하여 전세계의 호스트와 상호 통신이 가능한 대규모 네트워크
+) 대문자로 된 인터넷은 소문자로 된 인터넷도 되지만, 그 역은 성립하지 않음
응용 프로그램 인터페이스 (API)
소켓
- 네트워크 환경에 연결할 수 있게 만들어진 연결부
- 생성과 설정 과정이 끝나면 운영체제의 통신 관련 정보를 참조해 다양한 작업을 편리하게 할 수 있는 데이터 타입
- 버클리 소켓(Berkely sockets)이라고도 함
TLI(Transport Layer Interface)
- 서비스의 품질과 정보의 정확한 전달을 담당하는 계층인 트랜스포트층에 정해진 인터페이스
- XTI(X/Open Transport Interface)라고 부르기도 함