[네트워크] IP 헤더 형식

Robert.Yang·2023년 5월 13일
1

Network

목록 보기
18/59
post-thumbnail

이 포스트는 널널한 개발자님 강의를 참조하여 작성한 포스트입니다.

IP 헤더 형식

패킷이라는 것은 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정도 차지한다. IHL은 Internet Header Length인데 이 Header Length가 앞서 설명한 IP Header 20byte를 의미한다. 그 다음 Type Of Service라는 TOS가 있고 Total Length라는 것이 보이는데 이것은 패킷의 길이이다. 이 Total Length가 16bit로 되어있고 나올 수 있는 경우의 수가 2^16=65536가지이다. 즉, 최대 65535까지 나올 수 있다. 그래서 패킷은 나올수 있는 최대 크기가 이론상 64KB라는 것이다.

그 다음 2번째 행에도 여러 정보가 있는데 이 2번째 행은 전부 '단편화'라는 것과 관련이 있다. 단편화란 패킷이 예를 들어 1500byte인데 어느 네트워크에 갔더니 MTU가 1300밖에 안되는 경우가 있다 이런 경우 패킷을 잘라야하는데 그런게 단편화이다. 그 다음 TTL을 주목해야 하는데 TTL은 TimeToLive라고 이게 세포로 치면 텔로미오같은 것인데 TTL값을 보면 8bit 값이고 최대 크기가 255인데 이게 0이되면 이 패킷은 버려진다. 유통과정에서 TTL값은 어떤 단위를 지날때마다 감소한다.

그 다음 protocol이라는 것은 패킷의 payload에 또 다른 header가 올 수 잇는데 이 header를 어떤 형식으로 해석해야하는지 프로토콜에 기술되어 있다. 보통의 경우 TCP 헤더가 오고 이 프로토콜 값은 TCP를 나타내는 고유번호가 기술되어 있다. 그래서 header 구조가 보통 이렇다.

또 header의 checksum이라는것이 있는데 checksum이 뭐냐면 검사합 값이다. 보안성은 없고 즉, 네트워크로 데이터 즉, 패킷을 송수신하는 과정에서 패킷이 손상되었을수 있다는것을 고려해 이것들을 검사하기 위한 값이다.

다음으로 출발지, 목적지 IP주소가 존재한다. 아무튼 이런것들을 wireshark을 통해 16진수로도 확인이 가능하고 16진수들을 한글로 해석도 해주므로 이 프로그램을 잘 다룰줄 알아야하며 16진수랑도 친해져야 한다.

profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글