본문 바로가기

CS/네트워크

TCP Header

TCP Header 구조

TCP 헤더 필드

  1. Source Port & Destination Port
    • 송수신 포트 주소
  2. Sequence Number
    • 송신 프로세스가 지정하는 순서 번호
    • 세그먼트 전송 과정에서 전송되는 바이트의 수를 기준으로 증가
    • TCP에서는 전송 데이터의 각 바이트마다 순서 번호가 존재
  3. Acknowledgement Number
    • 수신 프로세스가 제대로 수신한 바이트의 수를 읍닫하기 위해 사용
    • ACK 플래그 비트가 지정된 경우에만 유효
    • 다음에 수신을 기대하는 데이터의 순서 번호를 표시
    • ACK 응답을 받은 송신 프로세스는 ACK Number-1까지의 모든 데이터가 올바로 전송되었음을 확인할 수 있다.
  4. Data Offset
    • TCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치를 나타낸다.
    • TCP 헤더의 크기
  5. Window
    • 슬라이딩 윈도우 프로토콜에서 수신 윈도우의 버퍼 크기를 지정하기 위해 사용
    • 수신 프로세스가 수신할 수 있는 바이트의 수
  6.  Checksum
    • TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터 모두에 대한 변형 오류를 검출하기 위해 사용
    • IP 프로토콜에서 사용하는 오류 검출 알고리즘을 사용
  7. Urgent Pointer
    • 긴급 데이터를 처리하기 위함
    • URG 플래그 비트가 지정된 경우에 유효
    • Sequence Number = 2,000, Urgent Pointer = 100으로 지정한 패킷을 전송하면 순서 번호 2,000~2,099번의 데이터는 긴급 데이터로 전송되며, 2,100번 이후는 다시 정상 데이터로 전송된다.

 

TCP 헤더 플래그 비트

  • URG: Urgent Pointer 필드가 유효한지를 나타낸다.
  • ACK: Acknowledgment Number 필드가 유효한지를 나타낸다.
  • PSH: 현재 세그먼트에 포함된 데이터를 상위 계층에 즉시 전달하도록 지시할 때 사용
    • 수신 프로세스로부터 PSH 세그먼트에 대한 응답 프레임이 도착하면, 프레임의 Acknowledgement Number 필드에 표시한 숫자까지의 모든 데이터가 상대 프로세스의 상위 계층에 전달되었음을 의미
    • 수신 프로세스의 TCP 계층에 버퍼링된 데이터를 즉시 상위 계층에 전송함으로써 전송 지연이 감소되는 효과를 얻을 수 있음
  • RST: 연결의 리셋 또는 유효하지 않은 세그먼트에 대한 응답용
    • 전송했지만 수신 프로세스에 아직 도착하지 못한 세그먼트, 수신 프로세스가 아직 긍정 응답하지 않은 세그먼트는 연결이 재설정되었을 때 재전송되어야 한다.
  • SYN: 연결 설정 요구를 의미하는 플래그 비트, 가상 회선 연결을 설정하는 과정에서 사용
  • FIN: 연결 종료 플래그로 송수신 프로세스 모두 FIN 플래그를 전송해야 연결이 종료된다.

혼잡 제어

  • ECE
    • 네트워크 트래픽이 많아질 때 라우터가 송신 프로세스에 명시적으로 혼잡을 알리려고 사용
    • 송신 프로세스에 직접 전달하지 않고, IP 헤더의 ECN 필드에 CE 값을 지정하여 간접적으로 수신 프로세스에 알려준 후에 수신 프로세스의 중개를 거쳐 송신 프로세스에 통지
    • 수신한 송신 프로세스는 네트워크 부하를 줄이기 위해 전송 윈도우 크기를 줄인다.
  • CWR
    • ECE 비트를 수신한 송신 프로세스가 전송 윈도우 크기를 줄였음을 통지하는 것이 목적
    • 더 이상의 ECE를 전송하지 말라는 의미

'CS > 네트워크' 카테고리의 다른 글

HTTP와 HTTPS 프로토콜  (0) 2025.03.21
TCP/IP  (0) 2025.03.06
프로토콜과 OSI 7 Layer  (0) 2025.03.06
네트워크 기초  (0) 2025.03.06