Internet Layer
네트워크의 주소를 정의하고 IP 패킷의 전달 및 라우팅을 담당하는 계층이다.
Internet Protocol
Internet Protocol(IP)은 네트워크 계층의 프로토콜이고 JAVA가 이해하는 유일한 프로토콜이다. IPv4(32비트 주소)와 IPv6(128비트 주소) 두 가지 프로토콜이 있으며 데이터그램이라는 패킷으로 인터넷 계층을 통해 전송 된다.
IPv4 데이터그램은 20~60바이트 길이의 헤더와 최대 65,515바이트의 데이터를 포함하는 페이로드를 포함한다.
WireShark로 IPv4 살펴보기
- 첫 바이트(45) : IP version이 4, Header Length가 20바이트인 것을 확인할 수 있다.
- 4bytes * 5(IHL에 들어가는 필드 값) = 20bytes
- 두번 째 바이트(00) : Type of service로 DSCP필드와 ECN필드로 구성되어 있다.
- DCSP(Differentiated Services Code Point (6bits))
- 요구되는 서비스 우선순위에 대한 유형을 나타냄
- ECN(Explicit Congestion Notification (2bits))
- 혼잡을 알리기 위해 사용, 라우터가 즉각 폐기하지 않고, 최종 노드에게 혼잡을 알리는 용도
- 3~4번 째 바이트(02 2d) : Datagram length로 헤더(20bytes)와 데이터의 길이를 합한 값이다. 최대 65535bytes까지 표현할 수 있다.
- 5~6번 째 바이트(df c4) : Fragmentation Identifier 데이터그램의 고유번호이다. 큰 IP 패킷들은 여러개의 작은 패킷으로 쪼개어 전송하기 때문에 이를 이용하여 같은 패킷을 식별한다.
- 7~8번째 바이트(00 00) : Fragmentation Flag, Fragmentation Offset
- Fragmentation Flag(3bits) : 분열의 특성을 나타내는 플래그
- 첫번 째 bit : 미사용(항상 0)
- 두번 째 bit : D F bit
- 0 : 라우터에서도 분열이 가능함을 뜻
- 1 : 중간에 라우터로 하여금 데이터그램을 분열하지 말라는 뜻
- 세번 째 bit : M F bit(More Fragment)
- 현재 조각이 마지막으면 0
- 더 많은 조각이 뒤에 계속 있으면 1
- Fragmentation Offset(13bits) : 8바이트 단위로 최초 분열 조각으로 부터 어떤 곳에 붙여야하는지 위치를 나타냄
- 첫 단편 옵셋 : 0, 둘째 단편 옵셋 : 첫 단편 크기 만큼
6. 9번 째 바이트(ff) : Time To Live : 라우터를 통과할 수 있는 최대 홉 수를 지정한다.
7. 10번 째 바이트(11) : Protocol Identifier 프로토콜의 종류를 나타내는 식별자
- TCP(6, 0x06), UDP(17, 0x11)
8. 11~12번 째 바이트(f3 ce) : Header Checksum 헤더에 대한 오류검출
9. 13~16번 째 바이트() : Source IP Address 송신처 IP 주소
10. 17~20번 째 바이트() : Destination IP Address 목적지 IP 주소