메뉴바로가기 본문바로가기

[네트워크 상식 29] 패킷은 어떻게 분할되는지 알아보자

관리자 | 2024-03-11 | 조회 18

[네트워크 상식] 패킷은 어떻게 분할되는지 알아보자

 

 

다양한 유형의 네트워크를 통해 패킷을 중개하려면, IP 프로토콜이 패킷을 각 네트워크에서

처리하기 편한 크기로 분할(Fragmentation)해야 한다.

예를 들어 X.25 프로토콜에서의 프레임 크기와 이더넷에서의 프레임 크기는 다르다.

따라서 상위계층에서 더 큰 데이터 전송을 요구하면 IP 프로토콜에서 패킷 분할 과정을 먼저

수행해 전송한다.

분할된 데이터(payload)는 통상 48바이트 ~ 4,000바이트로 이루어지며 패킷의 길이는 각각의 시스템에서 정해지고, 수신처에서 다시 원래 데이터로 재조립 된다.

 

분할의 필요성

하부 계층의 관점에서 보면, TCP에서 설정되는 논리적 가상 연결은 여러 종류의 네트워크를

거쳐서 설정된다. 그러나 TCP 계층에서는 패킷 전송 과정에 위치하는 네트워크 유형에 따라

패킷 크기를 조절하기가 쉽지 않으므로 IP 프로토콜에서 이 기능을 수행해야 한다.

상기 그림은 패킷 분할의 필요성을 설명한다. 맨 밑에 위치한 데이터 링크 계층의 프로토콜

프레임은 크기가 프로토콜마다 다르다. 따라서 상위계층에서 내려온 데이터를 계층 2의

프레임 틀에 담을 수 있도록 IP 프로토콜에서 분할 과정을 거친 후에 전송하고, 수신측에서는

이를 다시 합치는 작업을 수행한다.

IP 프로토콜의 분할 기능은 전송 경로에 위치한 라우터에 의해 수행된다. 라우터의 좌우에 연결된 LAN이 서로 다를 수 있기 때문에 상기 그림의 데이터 링크 계층에 위치한 프레임 크기가 프로토콜마다 달라진다. 따라서 데이터를 수신한 이후에 패킷을 중개하는 방향에 위치한 LAN에 맞도록 프레임을 분할해 주어야 한다. 분할된 패킷을 수신할 때는 패킷을 다시 모으는 병합 기능을 수행해야 한다.

분할의 예

아래 그림은 IP 프로토콜에서의 패킷 분할 과정 예를 설명한다. IP 헤더를 제외한 전송

데이터의 크기는 380바이트고, 패킷은 최대 크기가 128바이트라고 가정하였다.

 

 

먼저 Fragment Offset 필드를 계산해야 하는데, 이 값에 8을 곱한 크기가 분할 전의 데이터

위치다. 패킷 전체의 최대 크기인 128바이트에서 헤더인 20바이트를 빼면 108바이트가

되므로 분할 패킷에 보관할 수 있는 데이터의 최대 크기는 (108을 8로 나눈 몫(정수값))

×8=104바이트다. 따라서 분할된 패킷의 개수는 4개(=380을 104로 나눈 몫+1)이며,

각 패킷의 Fragment Offset 필드 값은 0, 13, 26, 39가된다.

 

분할 패킷인 분할 1, 분할 2, 분할 3은 데이터 크기 104바이트에 헤더 크기 20바이트를

더해 124가 되므로 패킷의 전체 크기 Packet Length=124바이트다. 마지막 분할 패킷은,

전체 데이터의 크기 380에서 세 개의 분할 패킷 크기 3×104를 빼면 68바이트의 여분을

얻을 수 있는데 이 값에 헤더 크기인 20바이트를 더해 Packet Length=88바이트다.

 

분할한 패킷의 Identification 필드에는 동일한 번호를 부여해야 한다. 그림에서는 임의로

1254번을 가정하였다. MF 필드는 마지막 패킷만 제외하고 1을 지정해 분할 패킷이 이어

지고 있음을 표시해 주어야 한다. DF 비트는 지정되지 않은 것으로 가정하였다.

 

참조문헌: 데이터 통신과 컴퓨터 네트워크