본문으로 건너뛰기
Post

What is Packet?

인터넷 데이터의 기본 전송 단위인 패킷의 헤더와 페이로드 구조, 분할과 재조립 과정을 설명합니다.

What is Packet?

가장 간단하게 말해, 패킷은 인터넷에서 데이터를 전송하기 위해 작게 나눈 데이터 덩어리 이다. 인터넷은 마치 고속도로와 같아서, 모든 데이터가 동시에 한 길로만 갈 수는 없다. 데이터를 작게 나누어 여러 길로 분산시켜 보내야 효율적으로 전송할 수 있다. 이것이 바로 패킷의 핵심 목적이다.

패킷의 구성 요소

하나의 패킷은 크게 3가지 주요 부분으로 구성된다.

  1. Header 패킷의 맨 앞부분에 위치하며, 패킷을 올바르게 전달하고 재구성하기 위한 제어 정보를 담고 있다. 헤더에 포함되는 주요 정보는 아래와 같다.
    • 출발지(Source) 주소: 패킷을 보낸 컴퓨터의 IP 주소
    • 목적지(Destination) 주소: 패킷을 받을 컴퓨터의 IP 주소
    • 패킷 번호(Sequence Number): 전체 데이터 중 이 패킷이 몇 번째 순서인지를 나타낸다. 예를 들어, 100개의 패킷 중 5번째 패킷이라면 ‘5’ 라는 번호가 붙는다. 수신 측에서 이 번호를 보고 패킷을 원래 순서대로 재조립한다.
    • 데이터 길이(Data Length): 패킷에 포함된 데이터의 크기이다.
    • 프로토콜 정보(Protocol Information): 이 패킷이 어떤 프로토콜(Ex. TCP, UDP)를 사용하는 지 명시한다.
  2. Payload or Data 실제로 전달하려는 실제 정보가 담겨 있는 부분이다. 예를 들어, 이메일 내용, 웹페이지의 HTML 코드, 동영상의 일부 등이 여기에 포함된다. 이 부분이 패킷의 대부분을 차지한다.
  3. Trailer or Footer 패킷의 맨 끝부분에 위치하며, 주로 오류 검출을 위한 정보가 들어있다. 가장 흔한 것이 CRC(Cyclic Redundancy Check) 정보이다. 이 정보는 패킷이 전송되는 도중에 데이터가 손상되지 않았는지 확인하는 데 사용된다. 수신 측은 트레일러의 정보를 바탕으로 데이터의 무결성을 검증한다.

패킷의 작동 원리 (데이터 전송 과정)

  1. 데이터 분할(Segmentation) 하나의 큰 데이터는 TCP와 같은 상위 프로토콜에 의해 여러 개의 작은 조각으로 나뉜다. 이때, 각 조각에 순서 번호가 매겨진다.
  2. 패킷화(Packetization) 각 데이터 조각에 위에서 설명한 헤더와 트레일러가 추가된다. 이 과정을 통해 완전한 패킷이 생성된다.
  3. 경로 설정(Routing) 이렇게 만들어진 패킷들은 인터넷 라우터들을 통해 목적지로 전송된다. 각 라우터는 패킷의 목적이 IP 주소를 확인하여 가장 효율적인 경로로 패킷을 전달한다. 이때, 같은 데이터에서 분할된 패킷들이라도 서로 다른 경로를 통해 전송될 수 있다.
  4. 패킷 재조립(Reassembly) 모든 패킷이 목적지에 도착하면, 수신 컴퓨터는 패킷들의 순서 번호를 보고 흩어진 패킷들을 원래의 순서대로 다시 재조합한다.
  5. 오류 검출 및 처리 만약 특정 패킷이 도착하지 않았거나(손실), 데이터가 손상된 경우(오류), 수신 컴퓨터는 이를 감지하고 보낸 컴퓨터에게 해당 패킷을 다시 보내달라고 요청한다. 이 과정 덕분에 데이터가 안전하고 완전하게 전달될 수 있다.

패킷의 장점

  • 효율성: 데이터를 작게 나누어 동시에 여러 경로로 보낼 수 있기 때문에, 인터넷 회선의 효율을 극대화할 수 있다. 만약 패킷 단위가 아니라 전체 파일 단위로 보내면, 하나의 파일이 전송을 마칠 때까지 다른 데이터가 기다려야 한다.
  • 신뢰성: 만약 전송 중에 패킷 하나가 손실되더라도 전체 데이터를 재전송할 필요 없이 손실된 패킷만 다시 보내면 된다.
  • 유연성: 네트워크 혼잡 상황에서 트래픽을 분산시키기에 용이하다. 예를 들어, 한쪽 경로에 트래픽이 몰리면 라우터가 다른 경로로 패킷을 우회시킬 수 있다.
This post is licensed under CC BY 4.0 by the author.