티스토리 뷰
패킷(Packet)
네트워크에서 데이터를 주고받을 때 사용되는 데이터 조각을 의미합니다. 패킷의 본 정의는 소포, 통이라는 뜻을 가지고 있습니다. 하나의 완전한 데이터를 나눠서 각 조각을 소포같이 포장한 것이 바로 네트워크에서 가리키는 패킷입니다.
인터넷을 통해 우리가 주고받는 데이터는 모두 패킷으로 전달되고 수신됩니다. 이메일을 보낼 때나, 웹페이지에 접속할 때, 영상을 스트리밍할 때 모두 패킷으로 데이터가 오고 가고 있습니다. 각 패킷에는 수신사자 요청한 데이터뿐만 아니라 데이터가 잘 도착하기 위해 필요한 IP 주소, 패킷의 개수, 인터넷 프로토콜 등 다양한 정보도 같이 있습니다. 이런 정보가 있어야 패킷으로 나뉜 데이터를 수신자가 다시 합칠 수 있습니다.
패킷의 구성
일반적으로 패킷은 1,000 ~ 1,500byte의 크기이며, 3가지 요소로 이루어져 있습니다.
- 헤더(Header): 패킷에 대한 메타정보를 담고 있습니다. 패킷의 길이, 번호, 네트워크 프로토콜, 수신자 및 발신자의 IP 주소 등 데이터가 잘 전달되기 위해 필요한 정보가 있습니다. 사용하는 IP 버전에 따라 헤더의 내용은 조금씩 바뀔 수 있습니다.
- 페이로드(Payload): 수신자가 요청한 데이터입니다. 이메일을 받는 수신자라면 이메일의 본문 내용이고 이미지를 클릭한 사용자라면 이미지 데이터입니다. 페이로드는 Body라고 표현하기도 합니다.
- 트레일러(Trailer): 패킷의 끝을 나타내기 때문에 여러 패킷의 경계를 뚜렷하게 알리는 역할을 합니다. 트레일러는 오류 검출 역할을 하기도 합니다. 체크섬(Checksum) 또는 CRC(Cyclic Redundancy Check)와 같은 오류 검출 코드가 트레일러에 포함되어 있으면 전송 중에 데이터 손실과 같은 오류가 발생했는지 판단할 수 있습니다.
예를 들어, "안녕하세요, 토스페이먼츠 개발자센터입니다." 라는 메일 본문 데이터를 3개의 패킷으로 나눈다고 생각해보겠습니다.
각 패킷의 헤더에는 IP 주소, 수신자의 주소, TCP와 같은 프로토콜 정보, 그리고 패킷 번호(1~3)등 메타데이터가 있습니다. 페이로드에는 이메일 내용이 나뉘어 포함됩니다. 트레일러에는 CRC 값과 같은 오류 검출 코드가 있어요 수신자가 패킷을 받은 다음에 CRC 값을 계산하고 트레일러에 있는 값과 같은지 확인합니다. 만약 일치하지 않는다면 수신자는 발송자에게 다시 패킷 전송을 요청합니다.
패킷이 왜 필요할까요?
왜 데이터를 통째로 보내지 않고 번거롭게 나누었다가 다시 합칠까요?
먼저 데이터를 하나로 보내게 되면 여러 문제에 직면할 수 있습니다. 만약, 전송 과정에서 오류가 일어나면 전체 데이터가 손실될 위험이 있습니다. 그리고 손실의 경우 전체 데이터를 다시 전송해야 되기 때문에 시간이 오래 소요되고 네트워크 자원이 낭비됩니다. 또 대용량 데이터를 전송하려면 네트워크가 혼잡해지고 네트워크를 사용하는 모든 사용자의 속도가 저하될 수 있습니다.
반면, 데이터를 작은 용량의 패킷으로 나누어 발송하면 패킷을 여러 서버로 분산시킬 수 있습니다. 특정 네트워크에 부담이 되지 않고 트래픽을 균일하게 분배할 수 있습니다. 여러 서버를 사용하기 때문에 데이터 전송을 병렬로 처리하기도 용이합니다. 데이터 전송 시간을 줄이고 사용자에게 좋은 경험을 제공할 수 있습니다. 그리고 만약 발송 중에 특정 패킷의 데이터가 손실되어도 해당 패킷의 데이터만 재전송하면 되기 때문에 효율적입니다.
참고
'Network' 카테고리의 다른 글
[Network]네트워크의 계층 구조(OSI 7계층, TCP/IP 4계층) (0) | 2024.11.04 |
---|---|
[Network]백본(Backbone), 백본망? (0) | 2024.10.08 |
- Total
- Today
- Yesterday