Shine's dev log

IP 프로토콜 (IP header, fragmentation) 본문

컴퓨터 네트워크

IP 프로토콜 (IP header, fragmentation)

dong1 2021. 3. 3. 00:53

1. IP 프로토콜

 

다양한 프로토콜이 뒤섞여있는 다른 layer와는 다르게 network layer는 IP 프로토콜이 거의 유일하다고 볼 수 있다.

 

과거에는 network layer에 다양한 프로토콜이 존재하였으나 시간이 흐르고, 결국 살아남은 프로토콜은 IP(Internet Protocol) 하나뿐이다.

 

IP의 특징으로는 크게 비신뢰성(unreliability)비연결성(connectionlessness)가 있다.

 

비신뢰성은 IP 프로토콜이 전송하는 데이터가 정확하게 갔는지 확인하지 않는 것이고, 비연결성은 데이터 전송 이전에 미리 설정과정을 거치지 않는 것이다.

따라서 신뢰성있는 통신을 하기 위해서는 상위 레이어의 TCP와 같은 프로토콜을 활용해야 한다.

 

 

 

2. IP header

 

IP 프로토콜의 payload 앞에 붙는 IP header는 아래 그림과 같이 생겼다.

 

IP header

 

기본적으로 IP header는 '패킷을 어디로 어떻게 처리할지'를 위한 정보를 담고있다.

따라서 패킷 처리에 필요한 정보들을 IP header에서 관리하고 있다. 대표적인 내용을 살펴보면 아래와 같다.

 

1) ver : IP 프로토콜의 버전 정보

2) header len : 헤더의 길이. 옵션의 유무에 따라 달라진다.

3) type of service : network layer에서 제공해주는 서비스에 필요한 정보.

4) identifier, flags, offset : fragmentation에 필요한 정보

5) time to live : 패킷이 살아있을 수 있는 hop 수

6) upper layer : payload의 데이터를 상위 레이어의 누가 처리할지에 대한 정보

 

참고로 기본적으로 IP header는 20bytes이다.

 

 

 

3. MTU (Maximum Transmission Unit)

 

MTU는 network layer에서 보낼 수 있는 최대의 payload 크기이다.

payload 크기이므로 header의 크기는 제외하고 계산한다.

 

참고로 transport layer에서 나오는 개념인 MSS는 transport layer에서 보낼 수 있는 최대의 segment 크기로, header도 포함하여 계산한다.

 

 

 

4. IP fragmentation

 

IP 패킷 (datagram)은 다양한 라우터들을 거쳐 전송된다.

 

전송되는 과정에서 사용하게되는 link의 크기가 크면 좋겠지만, 중간에 작은 크기의 link를 지나갈 수도 있다. 이럴때, 큰 크기의 datagram은 통과할 수 없으므로 이를 파편화? fragmentation 시키는 과정이 필요하다.

즉, 하나의 datagram이 여러개의 datagram으로 잘라지는 것이다.

 

중요한 점은 잘려진 datagram들은 link가 넓어졌다고 다시 바로 합쳐지는게 아니라, 목적지 host에 모두 도착하고 나서야 다시 합쳐진다는 점이다.

 

앞서 IP header에서 볼 수 있었던 identifieroffset 값이 바로 여기서 사용된다.

identifier는 하나의 datagram이 조각났을 경우, 조각난 datagram들은 원래 서로 같은 덩어리였음을 식별하기 위해 사용된다.

offset은 같은 identifier를 가진 datagram들끼리 순서를 맞출 때 사용한다.

 

 

예를 들어 살펴보자.

1500bytes 짜리 datagram이 있으며, MTU가 1000bytes, 500bytes인 link를 지나간다고 가정해보면, 아래 그림과 같이 fragmentation이 진행될 것이다.

 

IP fragmentation

 

그림을 보면 알겠지만, fragmentation이 진행될때마다 IP header를 위해 20bytes씩 추가되는 것을 알 수 있다.

 

또한가지 중요한 점은 IP는 fragmentation을 진행할 때, segment(transport layer의 패킷)의 내용은 신경쓰지 않는다는 것이다. 그 속에 TCP header가 있든 말든 상관없이 일정한 크기로 쪼개는 일에 집중한다.

 

 

오늘 배운 내용을 정리해보면,

 

1. IP 프로토콜은 network layer의 거의 유일한 프로토콜로, '패킷을 어디로 어떻게 처리할지'를 담당한다.

 

2. IP 프로토콜의 최대 payload 크기를 MTU라 한다.

 

3. 전송되는 과정중에 fragmentation이 발생하기도 하며, 목적지에 도착하고 나서 재조합된다.

 

위 내용은 공부하며 작성한 것으로, 오류가 있을 수 있습니다.

'컴퓨터 네트워크' 카테고리의 다른 글

NAT(Network Address Translation) 의 개념  (0) 2021.03.07
IP addressing (CIDR, DHCP)  (0) 2021.03.04
Network layer 개요  (0) 2021.02.28
TCP congestion control  (0) 2021.02.26
TCP 연결 (3 way-handshake)  (0) 2021.02.25