IP헤더 형식과 의미

    

    

ip

    

2022년 현재 MTU는 여전히 1500byte이다. 또한 IP는 주로 20byte를 가지고 얘기한다.

패킷의 전체길이인 Total length는 16bit인 64KB이다. IP의 버전은 v4와 v6가 있는데 일반적으로 4bit이고 IHL(Internet Header Langth)는 주로 5bit이다. TOS(Type of Service)는 대역폭 품질과 관련 되어있는데 TOS는 여기서 자세히 다루지는 않겠다.

    

Identification / Flags/ Fragment offset 는 단편화와 관련되어 있다.

단편화란 MTU는 보통 1500byte지만 가끔 1400byte 밖에 안되는 경우가 있다. 그럼 1500byte를 보내면 수신을 못한다. 그래서 1500을 나눠서 두번보낸다. 단편화가 되면 안그래도 작은 패킷이 또 분할되기 때문에 추후에 이를 다시 재조립을 해야하므로 안일어나는게 가장 좋다.

  • 기본적으로 재조립은 데이터 단편을 수신하는 단말쪽에서 하게 되어있다.
  • 2022년 현재 단편화는 거의 일어나지않는다.
  • 현재 단편화의 주원인은 VPN이다. 그중에서도 IPsec VPN로 인해 많이 발생한다.

    

단편화는 MTU 1500byte인것들을 1400byte로 하향평준화하면 일어나지않는다.

이러면 성능이 떨어지는게 아닐까 생각할 수도 있다. 네트워크 단위를 나타낼 때 bpspps가 있다. bps는 데이터의 양만가지고 얘기하고 pps는 Packet의 개수로 얘기한다. 그래서 같은 량이라도 여러 Packet으로 데이터가 갈수도 있다. 결국 네트워크란 Packet이란 단위로 처리가 이뤄지기 때문에 pps를 떨어트리는 것이 성능을 유지할 때 굉장히 중요하다.(bps가 중요하지않다는 것이 아님)

    

TTL(Time To Live)은 인터넷이라는 네트워크는 Router의 거대한 집합체임을 생각해보면 Router들이 패킷을 유통하는 중에 가끔 목적지를 못찾거나 다른 문제가 발생할 수 있다. Router들이 인접 Router들을 지나갈때마다 TTL이 1씩 감소한다.(Router와 Router의 간격을 Hop이라고 한다.)위에서 TTL은 8bit이므로 나올 수 있는 경우의 수가 256가지(0~255)이므로 Router들을 255번 지나고나면 TTL이 0이 된다. 만약 TTL이 0이 되면 패킷을 버린다.

    

만약에 Router #1 → Router #2 → Router #3 → Router #4 → Router #6 → Server로 가야하는데 Router #1 → Router #2 → Router #3 → Router #4 → Router #5 로 가서 빙글빙글 돌 수도 있다 .이런 네트워크 장애중 Looping 이라고 하며 Cpu가 튀어오르며 엮어있는 모든 장치에 문제가 생긴다.

    

이때 빙글빙글돌다가 Router #5에서 TTL이 0이 되면 패킷을 버려야하는데 ICMP로 처음 패킷을 보낸 PC에 Server에 보내려던 TTL이 0이되서 버렸다는 응답을 줄 수 있다. 다만.. 이러한 ICMP는 설정을 해줘야하지만 보안때매 안하는 경우도 있음을 참고삼아 알아두자.

    

  • Protocol(형식)을 통해 4계층 Header 값이 뭔지보고나서 Data를 값으로 볼건지 TCP, UDP가 또나올건지 알 수있다.
  • Source address는 출발지 주소
  • Destination address는 목적지 주소