IP datagram 형식
version | header length | type of service | length |
---|
16-bit identifier | | flags | fragment offset |
time to live | upper layer | headerchecksum | |
32 bit 출발지 IP주소 | | | |
32 bit 목적지 IP주소 | | | |
옵션 | | | |
데이터 (가변 길이, 주로 TCP 또는 UDP segment) | | | |
- version (4bit) : IP 프로토콜 버전
- header length (4bit) : 헤더의 길이 (bytes)
- type of service (8bit) : 데이터 타입
- length (16bit) : 전체 데이터그램 길이 (bytes)
- TTL (time to live) (8bit) : 남아있는 최대 hop수
- upper layer (8bit) : payload를 전달할 상위 계층 프로토콜
- identifier, flags, fragment offset : 단편화 / 재결합을 위해 사용
- identifer (16bit) : 쪼갠 데이터의 번호
- flags (3bit) : 내 뒤에 다른 조각이 있는가 ?
- fragment offset (13bit) : 몇 번 byte에서 시작하는가 ?
- header checksum (16bit) : 데이터에 에러가 있는지 확인 (header의 에러만 확인)
IP 단편화와 재결합
- 네트워크 링크에는 MTU(Maximum Transmission Unit), 즉 frame의 최대 크기가 존재
- 큰 IP datagram은 네트워크 내에서 쪼개진다 (단편화)
- 한 datagram이 여러 개로
- 최종 목적지에서 재결합된다
- IP 헤더의 비트들을 이용해 관련 조각들을 식별하고 순서를 맞춤
IP 주소 체계
- IP 주소 : 호스트, 라우터의 인터페이스를 위한 32-bit 식별값 (IPv4)
- 네트워크를 나타내는 부분과 네트워크 안의 호스트를 나타내는 부분으로 나누어짐.
- 인터페이스 : 호스트 / 라우터와 물리 링크 간의 연결
- 라우터는 보통 복수의 인터페이스 보유
- 호스트는 한 개 또는 두 개의 인터페이스 보유
서브넷
- IP 주소에서 subnet 부분이 동일한 장치 인터페이스들
- 중계 라우터 없이도 서로 물리적으로 도달할 수 있음
- subnet을 결정하려면, 호스트 / 라우터에서 각 인터페이스를 분리하여, 섬처럼 격리된 네트워크를 만든다.
- 격리된 각 네트워크를 subnet이라고 부른다.
- subnet mask: IP 주소에서 네트워크 주소와 호스트 주소를 구분하는 것 ex) /24
- Class A : 1~127.x.x.x
- Class B : 128 ~ 191.x.x.x
- Class C : 192 ~ 223.x.x.x
Host ID 영역을 더 잘게 쪼개서 관리할 수도 있다.
CIDR (Classless InterDomain Routing)
- 주소의 subnet 부분을 임의의 길이로 설정 (cf. 고전적 클래스 주소 체계)
- 주소 형식: a.b.c.d/x, 여기에서 x는 주소에서 subnet 부분의 bit 수를 나타냄
Q. 호스트는 어떻게 IP 주소를 얻는가 ?
- 고정 IP : 관리자가 수동으로 시스템 파일에 설정 (허가받은 주소만을 사용)
- DHCP (Dynamic Host Configuration Protocol)
- 서버로부터 주소를 동적으로 얻음
- “plug-and-play”
- 사용중인 주소의 대여기간을 갱신할 수 있다.
- 주소 재사용을 허용한다 (연결되어 있을 때만 주소를 점유할 수 있음)
DHCP 동작 개요
- 호스트가 “DHCP discover” 메시지를 브로드캐스트
- DHCP 서버가 “DHCP offer” 메시지로 응답
- 호스트는 IP 주소를 요청한다 : “DHCP request” 메시지
- DHCP 서버는 응답에 대한 응답을 보낸다 : “DHCP ack” 메시지
⇒ DHCP client-server 시나리오
DHCP는 할당된 IP 주소 이상의 정보를 제공함
- 첫 번째 hop 라우터(=디폴트 게이트웨이)의 주소
- DNS server의 이름과 IP 주소
- network mask