Version
IP Protocol version을 나타냅니다. 주로 사용되는 version은 IPv4와 IPv6가 있습니다.
각각 4, 6으로 표시됩니다. IPv4라면 0100, IPv6라면 0110
다른 값들은 현재 사용되지 않거나 예약되어 있을 수 있습니다.
IHL(Internet Header Length)
IP header의 길이를 나타내는 Field입니다. 4bit이기에 0-15사이의 값을 표현할 수 있습니다.
이 값에 4를 곱하게 되면 IP header의 실제 길이가 계산됩니다.
IHL Field의 값이 5라면 IP header의 length는 20byte가 됩니다.
TOS(Type of Service)
이전에는 QoS 관련 정보를 가지고 있었지만 더 나은 Service를 위해 DSCP개념으로 확장되었습니다.
TOS가 QoS로 사용되고 있었을 때에는 0-2 field까지만 사용하여 Precedence를 지정하여 사용하였습니다.
DSCP로 사용될 때는 TOS Field의 6bit를 사용하여 Traffic의 우선순위를 부여하는데 사용합니다.
QoS의 3bit, 와 비교하여 보면 더욱 세분화된 Service 제공이 가능한 것을 알 수 있습니다.
Total Length
IP Packet의 전체 길이를 의미합니다. 즉 IP Header와 Payload를 더한 크기입니다.
Total length는 16bit로 표현되며 최대 값은 65,535 (2^16 - 1) 입니다.
Total Length Field값은 IP Header와 IP Data를 더한 값이기 때문에
Total Length - IHL 을 계산하게 되면 Payload(IP Data) 값을 알 수 있습니다.
예를 들어 Total Length 값이 100이고 IHL 필드 값이 5인경우
Payload 계산을 해보면 100 - (5 * 4) = 80byte가 됩니다.
Identification
IP Packet을 구별하기 위해 사용되는 Field입니다.
이 값은 송신측에서 패킷을 생성할 때마다 증가시키는 방식으로 할당됩니다.
해당 필드는 IP Packet의 중요도나 우선순위를 나타내는 것이 아니고
패킷의 유일성 보장(중복제거)하고 Packet 조립에 사용됩니다.
Flags
3bit로 구성되어 있습니다.
1. Reserved Flag
예약된 비트로 현재는 사용되지 않고 항상 0으로 설정되어 있어야 합니다.
2. Don't Fragment (DF) Flag
이 Flag가 설정되면 (1) IP Packet은 분할되지 않고 원본 크기 그대로 전송되어야 함을 나타냅니다.
만약 data가 MTU를 초과하면 Drop 됩니다.
3. More Fragments (MF) Flag
이 Flag가 설정되면 (1), IP Packet이 분할된 Packet 중 마지막 패킷이 아님을 나타냅니다. 따라서 이 플래그가
설정되어 있으면 패킷을 수신한 호스트는 추가로 분할된 패킷이 존재함을 알 수 있습니다.
Fragment Offset
IP Packet이 분할되었을 때, 원래 패킷 에서의 위치를 나타내는 값입니다.
Fragment Offset을 이용하여 패킷 조각들을 정확한 순서로 재조립할 수 있습니다.
예를 들어 3020 byte data를 전송하고자 하고 MTU가 1500byte일 경우
데이터는 3개로 분할됩니다.
1500, 1500, 20
이 때의 fragment offset은 0, 1499, 2999가 됩니다.
즉 데이터의 시작지점을 나타낸다고 생각하면 됩니다.
TTL(Time to Live)
8bit로 0-255까지의 값을 표현할 수 있습니다.
TTL Field는 IP Packet의 Loop를 방지하기 위해서 만든 Field입니다.
Hop(Router)를 지날 때 마다 TTL Count가 -1되어 0이 되면 Drop되어 Loop을 방지합니다.
패킷의 수명을 추적하는데도 사용됩니다.
Protocol
IP Packet(L3)에서 L4 계층 프로토콜을 식별하는데 사용되는 Field입니다.
3계층에서 미리 4계층의 정보를 식별하여 IP Packet이 4계층에서 어떤 프로토콜을 사용할 지 알 수 있고
수신자는 해당 프로토콜에 맞게 패킷을 처리할 수 있습니다.
※ Protocol Number와 Port Number의 차이
Protocol Number
IP Header Protocol Field 에서 사용되는 값입니다. 네트워크 계층에서 사용되며
라우팅, 패킷 전달 과정에서 프로토콜을 식별하는 데 활용됩니다.
1 → ICMP
6 → TCP
17 → UDP
41 → IPv6
89 → OSPF
143 → IMAP
....
Port Number
Port number 는 전송 계층에서 동작하는 프로그램이 특정 service를 식별하기 위해 사용하는 값입니다.
TCP, UDP 프로토콜에서 사용되며, 16비트 정수로 표현됩니다.
Well-Known Port, Registered Port, Dynamic/Private Port 등 범위로 구분되어 있으며, 각각 특정 서비스나 프로그램에
할당된 포트 번호를 나타냅니다.
20 → FTP Data
21 → FTP Control
22 → SSH
23 → Telnet
53 → DNS
143 → IMAP
...
IMAP이나 SCTP, RDP, STMP, SNMP 등 Procotol Number와 Port Number가 같은 경우도 있지만
의미는 다릅니다.
Header Checksum
IP Packet의 무결성을 확인하기 위한 체크섬 값입니다. IP Header에 있는 모든 Field의 bit를 계산한 값으로
header 내용이 올바른지 확인을 위해 사용됩니다. 송신자는 Checksum을 계산하여 Field에 넣고
수신자는 Packet의 checksum을 계산하여 IP Packet이 전송되는 동안 오류가 발생하지 않았는지 체크합니다.
Source IP address
송신자의 IP 주소 입니다.
Destination IP address
수신자의 IP 주소 입니다.
'네트워크' 카테고리의 다른 글
[Protocol] STP (Spanning-tree Protocol) (0) | 2023.06.03 |
---|---|
[L2] BPDU Format (0) | 2023.05.23 |
[L2] Ethernet Frame (0) | 2023.05.19 |
[Wireshark] "end of file on pipe magic during open" 오류 (0) | 2023.05.17 |
네트워크란 무엇인가? (0) | 2023.05.14 |