IP Fragmentation(단편화), Reassembly(재조립)
네트워크 링크는 MTU(Maximum Transmission Unit, 최대 패킷 크기)를 가집니다. MTU란, 링크가 수용할 수 있는 최대 전송 사이즈를 의미합니다.
그래서 Sender가 전송하고자 하는 데이터그램의 크기가 물리적인 링크에서 수용할 수 있는 데이터의 크기보다 크면, 데이터그램을 전송하지 못하는 상황이 발생할 수 있습니다.
이러한 문제를 해결하기 위한 방법이 Fragmentation(단편화) 입니다. 데이터가 크면 MTU에 맞춰 자르는 것입니다. 그리고 쪼개진 패킷들은 도착지에 도착하면 다시 합쳐집니다. 이것은 Reassemble(재조립)이라고 합니다.
아래와 같은 상황에서 IP Fragmentation이 어떻게 이뤄지는지 살펴보겠습니다.
4000 byte Datagram에 MTU는 1500byte인 상황입니다.
4000byte Datagram 를 MTU인 1500byte로 쪼갤 때 각각의 fragment에도 헤더가 존재해야 하므로 20byte의 헤더와 1480byte의 페이로드로 구성되어야 합니다.
따라서 1480byte, 1480byte, 1040byte의 fragment로 단편화할 수 있습니다.
Fragmentation 과정에 필요한 IP 헤더
Fragmentation 과정에 필요한 것이 IP 헤더 중 16-bit identifier, flgs, offset입니다. 위 사진에서 ID, fragflag, Offset이 바로 각각에 해당하는 값입니다.
ID는 같은 데이터그램으로부터 쪼개진 frag임을 명시하기 위해 표기합니다. 그리고 fragflag는 다음 flag가 존재하는 지의 여부에 따라 1(다음 frag 존재) 또는 0(마지막 frag)로 주어집니다. Offset은 나누어진 데이터그램의 순서를 알아보기 위한 값입니다. 그 데이터그램의 시작부분에 8을 나눈 수로 표현합니다. 8로 나누는 이유는 오프셋 단위가 8이기 때문입니다.
이렇게 세 조각을 받은 수신자는 Offset을 보고 순서를 맞춰 재결합하여 원래의 데이터그램으로 복원시키는 것입니다.
만약 쪼개진 패킷이 유실됬을 경우 도착지에서 reassemble이 되지 않습니다. 그래서 해당하는 패킷은 버려지고 전체를 재전송해야합니다.
ICMP(Internet Control Message Protocol)
데이터 전송시 네트워크상의 환경을 알려주는 프로토콜입니다. 다시 말해, 사용자 데이터가 아니라 네트워크 상에서 발생한 이벤트를 알기 위한 컨트롤 메시지를 운반하는 프로토콜입니다.
정상적으로 목적지 HOST에 패킷이 도달하는 경우에는 IP 통신이 성공하고, 종료되므로 문제가 생기지 않습니다.
하지만 다음과 같은 두가지 상황을 고려해볼 수 있습니다.
1. 목적지 도달 불가
목적지 호스트가 존재하지 않거나, 네트워크가 연결되어 있지 않은 경우와 같이 비정상적으로 패킷 전송이 종료된다면, 이 패킷 전송을 한 출발지 HOST에게 이 사실을 알려, 재전송과 같은 다른 수행을 해야하는데 IP에는 그러한 에러 처리 방법이 존재하지 않습니다. 이러한 IP의 부족함을 보충할 수 있습니다. ICMP는 송신자에게 이러한 정보를 알려 재전송 등의 조치를 취하도록 합니다.
2. 라우터 통과 시 TTL 감소
각 IP 패킷은 TTL(Time to Live) 값을 가지고 있고, 이 값은 패킷이 라우터를 거칠 때마다 감소됩니다. TTL이 0이 되어 패킷이 삭제되면, 소스는 무슨 일이 발생했는지 알 수가 없습니다. 그래서 해당 라우터는 소스에게 패킷이 드랍된 사실과 그 원인을 알리는 ICMP 메시지를 보냅니다.
간단히 말해, ICMP는 Network transport layer에 속하면서 IP 프로토콜과 같이 사용하여 에러를 확인하는 역할을 합니다. 해당 호스트가 없거나, 해당 포트에 대기 중인 서버 프로그램이 없는 상황과 같은 에러가 발생할 경우에 IP header에 기록되어 있는 출발지 HOST로 에러 상황을 전송하는 역할을 수행하는 것입니다.
참고자료
[컴퓨터 네트워크 - 한양대학교 이석복 교수님]
http://www.kocw.net/home/cview.do?cid=6166c077e545b736
https://the-square-of-y.tistory.com/217
https://blog.naver.com/ds4ouj/222323400062
Computer Networking _ A Top Down Approach, 7th
'CS > Network' 카테고리의 다른 글
[네트워크] 데이터 링크 계층 : MAC Protocol (0) | 2024.02.26 |
---|---|
[네트워크] 라우팅 알고리즘 (Routing Algorithms) (0) | 2024.02.23 |
[네트워크] DHCP (0) | 2024.02.21 |
[네트워크] NAT(Network Address Translation) (0) | 2024.02.20 |
[네트워크] 네트워크 계층 : Internet Protocol(IP) (0) | 2024.02.19 |