네트워크를 통해 전달되는 데이터와 패킷
네트워크를 통해 전달되는 데이터와 패킷입니다. header, payload, trailer, PDU, encapsulation, decapsulation, MAC/IP/port 차이를 정리했습니다.
네트워크를 통해 전달되는 데이터와 패킷
패킷은 네트워크를 통해 전달되는 데이터 단위를 넓게 부르는 말이다. 정확히는 계층마다 부르는 이름이 다르며, 각 계층은 자기 역할에 필요한 header를 붙여 아래 계층으로 넘긴다. 이 과정을 encapsulation이라고 하고, 수신 측에서 반대로 벗겨내는 과정을 decapsulation이라고 한다.
Header, Payload, Trailer
대부분의 네트워크 데이터는 제어 정보와 실제 데이터로 나뉜다. header에는 출발지/목적지 주소, 포트, 순서, 오류 검출에 필요한 정보가 들어가고, payload에는 상위 계층에서 내려온 데이터가 들어간다. 일부 계층은 trailer를 사용한다.
[ header ][ payload ][ trailer ]
header : 전달과 제어에 필요한 정보
payload : 실제로 운반하는 상위 계층 데이터
trailer : 오류 검출 등 뒤쪽에 붙는 정보계층별 PDU 이름
PDU는 Protocol Data Unit의 약자다. 같은 데이터를 보더라도 계층에 따라 이름이 달라진다.
Application layer : data 또는 message
Transport layer : TCP segment / UDP datagram
Network layer : packet
Data link layer : frame
Physical layer : bits캡슐화 흐름
웹 요청을 보낸다고 가정하면 애플리케이션 데이터가 TCP header, IP header, Ethernet header를 차례로 얻어 아래 계층으로 내려간다.
HTTP data
TCP header + HTTP data
IP header + TCP segment
Ethernet header + IP packet + Ethernet trailer
bits on wire역캡슐화 흐름
수신 측은 반대로 Ethernet frame을 받고, 목적지 MAC 주소와 오류 검사를 확인한 뒤 IP packet을 꺼낸다. IP 계층은 목적지 IP를 확인하고 TCP segment를 올린다. TCP는 port와 sequence 정보를 처리한 뒤 애플리케이션에 데이터를 넘긴다.
bits on wire
Ethernet frame
IP packet
TCP segment
HTTP data주소가 계층마다 다른 이유
- MAC address: 같은 링크 또는 같은 VLAN 안에서 frame을 전달할 때 사용한다.
- IP address: 네트워크 사이에서 packet을 라우팅할 때 사용한다.
- Port number: 한 호스트 안에서 어떤 프로세스와 통신할지 구분한다.
간단한 확인 명령
Linux에서 직접 확인할 수 있는 기본 명령이다. 캡처는 본인이 관리하는 장비와 네트워크에서만 수행한다.
ip addr show
ip route show
ss -tn
sudo tcpdump -ni any 'tcp port 80 or tcp port 443'정리
패킷이라는 말은 넓게는 네트워크 데이터 전체를 가리키지만, 계층을 엄밀히 구분할 때는 L3의 PDU를 packet이라고 부른다. 장애 분석에서는 frame, packet, segment 중 어느 계층에서 문제가 나는지 구분해야 원인을 좁힐 수 있다.