패킷
거대한 가구를 작은 부품 상자 여러 개로 쪼개어 배송한 뒤, 집에서 다시 조립하는 택배 시스템과 같아요.
정의 패킷(Packet)은 인터넷이나 컴퓨터 네트워크에서 데이터를 주고받을 때 쓰는 가장 기본적인 전송 단위예요. 크기가 큰 파일이나 동영상을 잘게 쪼개어 작은 상자에 담아 보낸 뒤, 목적지에서 원래대로 다시 합치는 방식으로 작동해요.
거대한 파일도 잘게 쪼개면 빠르게 지나가요
인터넷에서 고화질 영화 한 편을 내려받을 때, 그 거대한 파일이 통째로 전선 하나를 타고 한 번에 쏟아져 들어오는 것은 아니에요. 만약 큰 데이터 덩어리를 통째로 보낸다면, 그 데이터가 지나가는 동안 다른 모든 사람의 인터넷 통신이 꽉 막히고 말 거예요. 도로에 거대한 초대형 트럭 한 대가 길을 전부 가로막고 달리는 상황과 같아요.
그래서 컴퓨터는 커다란 데이터를 잘게 나눈 다음 각각의 상자에 나누어 담아요. 이렇게 쪼갠 작은 데이터 묶음을 패킷이라고 불러요. 크기가 작아진 패킷들은 여러 통신 경로로 나뉘어 동시에 달릴 수 있어요. 특정 도로가 막히면 다른 우회로를 찾아서 지나가기도 해요.
덕분에 네트워크 선로 하나를 수많은 사용자가 사이좋게 나누어 쓸 수 있어요. 동영상을 보는 도중에도 옆 방 사람이 웹 서핑을 막힘없이 할 수 있는 이유가 바로 데이터를 잘게 쪼개어 보내는 방식 덕분이에요.
패킷의 앞머리에는 운송장이 붙어 있어요
택배 상자를 보낼 때 상자 겉면에 보내는 사람, 받는 사람 주소, 상자 번호가 적힌 송장을 붙여요. 패킷도 이와 똑같이 구성되어 있어요. 패킷은 크게 실제 전달할 데이터가 담긴 몸체와, 안내 정보가 적힌 머리 부분으로 나뉘어요.
컴퓨터 분야에서는 이 머리 부분을 '헤더(Header)', 실제 내용물을 '페이로드(Payload)'라고 불러요. 헤더에는 출발지 IP 주소와 목적지 IP 주소, 그리고 데이터가 몇 번째 조각인지 알려주는 순서 번호가 꼼꼼하게 적혀 있어요.
이 운송장 정보가 있기에 인터넷 공유기와 라우터(네트워크 중계기)가 패킷을 보고 어느 길로 보내야 할지 판단할 수 있어요. 또한 목적지 컴퓨터는 흩어져 도착한 패킷들을 헤더의 순서 번호를 보고 원래 파일로 완벽하게 조립해 내요.
조금 더 정확히 말하면: 길을 잃어도 다시 받아요
조금 더 정확히 말하면, 쪼개진 수많은 패킷은 목적지까지 모두 같은 길로만 가는 것이 아니에요. 인터넷 세상에는 수많은 교차로가 있어서, 패킷마다 가장 덜 막히는 최적의 길을 찾아 제각각 따로 이동해요. 그러다 보니 먼저 출발한 1번 패킷보다 나중에 출발한 2번 패킷이 목적지에 먼저 도착하는 일도 흔히 일어나요.
게다가 통신 상태가 나쁘면 도중에 패킷이 사라지는 '패킷 손실'이 생기기도 해요. 이때 컴퓨터는 헤더에 적힌 순서 번호를 대조해 중간에 빠진 번호가 있는지 확인해요. 만약 3번 패킷이 빠졌다면 보내는 쪽에 '3번만 다시 보내줘'라고 요청해서 빈틈을 메워요.
물론 실시간 음성 통화나 온라인 게임처럼 아주 빠른 속도가 더 중요한 상황에서는 손실된 패킷을 다시 받지 않고 그냥 넘어가는 통신 방식을 쓰기도 해요. 상황에 맞게 규칙을 바꾸며 데이터를 안전하고 빠르게 주고받는 것이죠.
🤔 흔한 오해
인터넷으로 파일을 보낼 때는 하나의 선로를 통해 파일 전체가 일직선으로 한 번에 전송된다.
데이터는 수천, 수만 개의 패킷으로 잘게 쪼개져 서로 다른 경로를 거쳐 전송된 뒤 목적지에서 순서대로 다시 조립돼요.
🧺 일상에서 만나요
패킷은 데이터를 잘게 쪼갠 택배 상자로, 주소와 순서가 적힌 헤더 덕분에 여러 경로로 빠르게 흩어져 이동한 뒤 완벽하게 다시 조립돼요.