네트워크 정리6

윤석주·2022년 8월 25일
1

네트워크

목록 보기
12/13

본 포스팅은 널널한 개발자님의 네트워크 강의를 보고 정리한 내용입니다.

packet의 소멸과 TTL

ip헤더에는 TTL(Time To Live)라는 값이 존재합니다. 이 값은 8bit로 0~255의 값을 가질 수 있습니다. 네트워크의 한 라우터부터 다른 라우터까지를 1hop이라고 합니다. TTL은 1hop마다 1씩 감소하며 0이 되면 packet이 소멸됩니다. 소멸되는 경우 ICMP로 origin에 알려주도록 설정도 가능합니다.

운영체제마다 설정값이 다르지만 window를 기준으로 과거에는 128bit로 기본 설정되어 있었다고 합니다. 이렇게 packet의 timeout을 설정하는 이유는 네트워크의 여러가지 오류로 인해 패킷이 도착하지 못하고 쌓이는 경우 Looping과 같은 오류가 발생할 수 있기 때문입니다.

Looping은 패킷이 목적지에 도착하지 못하고 Router를 루프를 돌며 계속 전달되는 현상으로 네트워크의 전체적인 성능을 떨어트리게 됩니다. 이런 상황의 방지를 위해 TTL값이 존재합니다.

MTU와 단편화


ip헤더에 보면 Identification, Flags, Fragment offset이 존재하는데요. 이들은 단편화와 관련된 헤더값입니다. 단편화란 하나의 패킷이 여러개로 쪼개지는 현상을 말하며 네트워크 성능에 안좋은 영향을 끼칩니다. 단편화가 나오는 상황을 간단히 확인해보겠습니다.

다음과 같은 네트워크가 있다고 해봅시다. 경로는 PC#1 -> R1 -> R2 -> ... -> Server로 이어진다고 하겠습니다. 여기서 모든 host와 라우터의 MTU가 1500이지만 R2의 MTU값만 1400인 경우를 생각해봅시다.

PC#1에서 1500MTU의 패킷을 보내게 되면 R1->R2로 가는 구간에 패킷을 한 번에 받을 수 없으므로 Packet은 쪼개지게 됩니다.

이때 각각의 packet의 IP헤더에서 Identification값을 동일한 값으로 유지해 같은 packet임을 나타냅니다. 또한 2번째 IP헤더의 Fragment offset값을 표시하여 payload의 어디서 잘렸는지를 표시하며 재조립에 사용됩니다.

이렇게 MTU의 차이가 나는 경우 필연적으로 패킷 단편화가 발생하게 됩니다. 이런 단편화는 기본적으로 수신쪽에서 재조립을 하도록 되어 있으며 당연히 수신자(위의 예시에선 Server)의 부하가 증가합니다. 따라서 단편화가 일어나지 않도록 하는 것이 가장 좋습니다.

단편화를 없애는 방법은 하향 평준화 입니다. PC#1이 MTU가 1500이지만 경로에 1400이 포함되어 있으므로 이에 맞춰 자신의 MTU를 1400으로 조절하여 패킷을 생성하는 것이죠. 이렇게 되면 패킷의 단편화는 발생하지 않습니다. bps는 나빠질 수 있지만 pps값을 낮게 유지할 수 있는 것이죠. 패킷의 단편화는 일어나지 않는 것이 가장 좋습니다.

2022년을 기준으로 장비의 최신화로 인해 단편화는 거의 나지 않고 있습니다. 하지만 아직까지고 가끔 일어나는 현상이며 VPN에서 많이 일어난다고 합니다.

<출처>

profile
웹 개발을 공부하고 있는 윤석주입니다.

0개의 댓글