프로토콜 데이터 단위(Protocol Data Unit)는 데이터 통신에서 상위 계층이 전달한 데이터에 붙이는 제어정보를 말한다.
모든 계층에서 전송하는 데이터 자체는 동일하지만, 각 레이어를 거치면서 헤더 정보가 추가되며 이름이 달라진다.
OSI 모델에서 Packet은 네트워크 계층 내의 데이터 단위이다.
네트워크에서 Sourse와 Destination 간 통신의 기본 단위가 패킷이다.
네트워크를 통해 전송된 데이터는 패킷으로 분할되고 대상 장치에서 재결합된다.
데이터를 패킷으로 나누면 네트워크에서 서로 다른 대역폭, 경로 및 데이터를 공유하고 서로 독립적으로 패킷을 수신하는 여러 연결장치를 관리할 수 있다.
이론적으로는 파일과 데이터는 패킷으로 쪼개지 않고 인터넷을 통해 전송할 수 있다.
하나의 컴퓨터는 끊어지지 않는 긴 비트 라인 형태로 다른 컴퓨터에 데이터를 보낼 수 있다.
하지만 2대 이상의 컴퓨터가 관련되면 문제가 생긴다. 긴 비트 라인이 두 컴퓨터 사이에서 전송되는 동안 제 3의 컴퓨터는 차례를 기다려야 하기 때문이다.
그렇지만 인터넷은 기본적으로 패킷 교환 네트워크(Packet Switching Network)를 이용한다.
패킷을 교환 함으로써, 여러 대의 컴퓨터가 동일한 네트워크 장비로 서로 연결할 수 있다.
결과적으로 동시에 수많은 장치가 인터넷에서 동시에 데이터를 주고 받을 수 있게 되는 것이다.
각 패킷은 목적지에 도달하는 데 필요한 정보를 가지고 있다.
보낸 사람의 IP 주소, 받는 사람의 IP 주소, 해당 데이터가 얼마나 많은 패킷으로 분할되었는지 등등.
패킷에는 약 1000 ~ 1500 byte의 데이터가 포함될 수 있으므로 전체 데이터를 구성하는 패킷의 수는 데이터 크기에 따라 다를 수 있다.
패킷 헤더는 패킷의 내용, 출발지 및 목적지에 대한 정보를 제공하는 일종의 label이다.
패킷 길이, 동기화, 패킷 번호, 프로토콜, 목적지, 발신지
패킷의 본문 또는 데이터라고 한다.
패킷이 만약 고정된 길이라면 페이로드에 빈 정보를 채워 올바른 크기로 만들 수 있다.
패킷의 footer라고도 불린다.
일반적으로 수신 장치에 패킷의 끝에 도달하였음을 알려주는 몇 개의 비트가 포함되어 있다.
또한, 일종의 오류 검사가 포함되어 있다.
패킷에 사용되는 가장 일반적인 오류 검사를 CRC (Cyclic Redundancy Check)라고 한다.
각 네트워크에는 MTU (Maximum Transmitted Unit)라고 하는 최대 전송 데이터 크기가 존재한다.
패킷은 종종 최대 크기보다 클 수 있으므로 각 패킷은 Fragment라는 더 작은 데이터 조각으로 나뉜다.
네트워크 계층이 Fragmentation을 담당한다.
네트워크마다 고유한 MTU 용량이 있으므로 전송을 위해서는 패킷의 Fragmentation이 필요하다.
수신자는 IP fragment를 패킷으로 재조립해서 상위 계층으로 전달한다.
네트워크 계층은 패킷을 받으면 패킷의 MTU를 확인하고 패킷 길이가 MTU보다 크다면 네트워크 계층은 패킷과 관련된 Don't Fragment (DF) Flag를 확인한다. DF flag가 1이라면 패킷을 버리고 1이 아니라면 네트워크 계층이 fragment 크기를 결정한 뒤, 헤더 내에 fragment를 넣어서 상위 계층으로 전달한다.
패킷과 프레임의 주요 차이점은 OSI 계층과의 연결이다.
패킷이 네트워크 계층에서 사용되는 데이터 단위라면
프레임은 OSI 모델의 데이터 링크 계층에서 사용되는 데이터 단위이다.
프레임에는 패킷보다 더 많은 정보를 포함한다.
데이터그램은 네트워크에서 데이터 전송 단위를 나타낸다.
전송 계층에서의 데이터 단위이지만, TCP가 아닌 UDP에서는 패킷이 아니라 데이터그램이라고 부른다.
패킷은 연결지향 프로토콜인 TCP에서 사용하는 반면, 데이터그램은 UDP에서 사용되므로 응답메세지가 필요하지 않다.
그래서 정보를 적게 전달한다. 데이터그램은 헤더, Sourse 및 Destination의 IP 주소, 데이터로 구성된다.
데이터그램의 문제는 후속 또는 이전 데이터 통신을 관리할 수 없다는 점이 있다.
세그먼트는 전송 계층에서의 데이터 단위이며, 각 패킷에 TCP 헤더가 있는 패킷 조각이다.
소스 및 대상 포트와 함께 네트워크를 통해 전달된 데이터의 정확성을 보장하는 checksum 필드가 포함되어 있다.
세그먼트는 네트워크 성능의 효율성을 높이고 보안을 향상시킨다.
예로 상위 계층에서 데이터를 전달받은 전송 계층에서는 발신지 포트, 목적지 포트, 순서 번호, 오류 검출 코드의 정보들을 추가하여 그룹화 한다.
순서 번호 : 순차적으로 전송할 경우 순서를 붙이며, 순서가 어긋나면 목적지 프로토콜이 바로 잡는다.
오류 검출 코드 : 발신지와 목적지 프로토콜은 세그먼트를 연산하여 오류 검출 코드를 각각 만든다.
만약 발신지에서 전송한 세그먼트에 포함된 오류 검출 코드와 목적지에서 만든 오류 검출 코드가 다르다면 전송되는 과정에서 오류가 발생한 것이다. 이 경우, 수신측은 그 세그먼트를 폐기하고 복구 절차를 밟는다. 오류 검출 코드는 checksum이라고 부른다.