뭉크테크
IPv4 헤더 형식 본문
패킷이라는 것은 header 시작부터 payload 끝까지이며 최대 크기를 MTU라고 하고 통상의 경우 1500byte의 크기를 가진다. 이 패킷의 IP Header의 option이라는 것이 붙지 않으면 header의 크기는 20byte정도이고 payload는 1500 - 20 = 1480byte정도 된다. 그런데 위 그림을 보면 좀 이상한게 보이는데 data 부분이 최대 65515로 되어있는데 결국 패킷의 크기가 64KB정도 될수는 있다고 볼 수 있다. 하지만 실제로는 그렇지 않고 MTU에 맞춰서 운영이 된다. MTU가 늘어나는 사례도 있기는 하지만 이런 특수한 환경은 지금은 일단 생각하지 말자.
아무튼 IP Header는 보통의 경우 20byte정도이다. 위 그림을 보면 위 그림의 가로 시작부터 끝까지 32bit 단위로 데이터를 끊은것을 볼 수 있다. 8bit는 1byte인데 여기서 8bit는 4bit + 4bit로 조합될텐데 4bit에서 나올 수 있는 경우의 수가 2^4 = 16가지 경우가 있고 16진수로 패킷의 header나 data를 표기한다. 대표적으로 WireShark이라는 프로그램을 통해 확인이 가능하다.
패킷에 대해 위의 그림과 같이 한번 분석해보자. 처음으로 보이는 것이 Version이 있는데 이것은 IP주소의 version이 V4인지 V6인지 나타내는 것으로 크기는 보통 4bit정도 차지한다. 그리고 밑에 어렵게 써져 있는 16진수들이 나열되어 있지 않은가? 저기서 45 라는 부분부터 IP 프로토콜의 header 부분이 시작되는데, 4는 IP 버젼을 의미하고, 5는 Header Length 를 의미한다.
IHL
IHL은 Internet Header Length인데 이 Header Length가 앞서 설명한 IP Header 20byte를 의미한다. 이렇게 계산된 이유도 options 위를 보면 총 5개의 횡이 있고, 이 5개의 횡에다 32bit 즉 4bytes를 곱한 것이 20bytes 이기 때문이다.
TOS
그 다음 Type Of Service라는 TOS가 있고 Total Length라는 것이 보이는데 이것은 패킷의 길이이다. 이 Total Length가 16bit로 되어있고 나올 수 있는 경우의 수가 2^16=65536가지이다. 즉, 최대 65535까지 나올 수 있다. 그래서 패킷은 나올수 있는 최대 크기가 이론상 64KB라는 것이다.
2번째 행 단편화
그 다음 2번째 행에도 여러 정보가 있는데 이 2번째 행은 전부 '단편화'라는 것과 관련이 있다. 단편화란 패킷이 예를 들어 1500byte인데 어느 네트워크에 갔더니 MTU가 1300밖에 안되는 경우가 있다 이런 경우 패킷을 그 크기에 맞게 잘라야하는데 그런게 단편화이다. 실제 와이어 샤크를 이용해서 패킷 헤더를 까봤더니, 저 패킷은 fragment를 쓰지 않았다.
TTL
그 다음 TTL을 주목해야 하는데 TTL은 TimeToLive라고 하고, TTL값을 보면 8bit 값이고 최대 크기가 255인데 이게 0이되면 이 패킷은 버려진다. 유통과정에서 TTL값은 라우터와 같은 홉을 지날때마다 감소한다.
그 다음 protocol이라는 것은 패킷의 payload에 또 다른 header가 올 수 잇는데 이 header를 어떤 형식으로 해석해야하는지 프로토콜에 기술되어 있다. 보통의 경우 TCP 헤더가 오고 이 프로토콜 값은 TCP를 나타내는 고유번호가 기술되어 있다. 그래서 실제로
wireshark를 이용하여 패킷을 따본 결과, Protocal이 TCP 라는 걸 알 수 있고, 번호는 6번인 것도 알 수 있다.
또 header의 checksum이라는것이 있는데 checksum이 뭐냐면 검사합 값이다. 보안성은 없고 즉, 네트워크로 데이터 즉, 패킷을 송수신하는 과정에서 패킷이 손상되었을수 있다는것을 고려해 이것들을 검사하기 위한 값이다.
다음으로 출발지, 목적지 IP주소가 존재한다. 아무튼 이런것들을 wireshark을 통해 16진수로도 확인이 가능하고 16진수들을 한글로 해석도 해주므로 이 프로그램을 잘 다룰줄 알아야하며 16진수랑도 친해져야 한다.
출처
외워서 끝내는 네트워크 핵심이론 - 기초 강의 | 널널한 개발자 - 인프런
널널한 개발자 | TCP/IP에서 HTTP까지! 네트워크에 대한 기본 이론이 부족한 분들이 '외워서'라도 전공 이론을 이해하고자 희망하는 분들을 위해 준비한 강의입니다. 할 수 있습니다!, 네트워크, 외
www.inflearn.com
'네트워크' 카테고리의 다른 글
Broadcast IP (0) | 2025.01.08 |
---|---|
서브넷 마스크와 CIDR (1) | 2025.01.08 |
TCP/IP 송수신 구조 (0) | 2025.01.08 |
IPv4란 무엇인가, 패킷의 생성과 소멸 과정 (0) | 2025.01.07 |
L2 수준에서 알아야할 것들 (0) | 2025.01.06 |