TCP Header   Transmission Control Protocol Header   TCP 헤더

(2023-04-30)

초기 순서번호, ISN, Window Size , 윈도우 크기 , Windowsize, Acknowledgement Number, 확인응답 번호


1. TCP 세그먼트헤더 구성

    

  ※ [참고]  TCP 헤더 크기  :  (기본 20 ~ 최대 60 바이트)


2. 각 필드에 대한 설명

  ㅇ Sourse/Destination Port Number (각 16 비트)             ☞ 포트 번호 참조
     - IP 주소 + 포트 번호 = 소켓 주소소켓, 소켓 주소 참조
        . 양쪽 호스트 내 종단 프로세스 식별                  ☞ SAP(서비스 엑세스점) 참조

  ㅇ Sequence Number (32 비트)                               ☞ 순서번호 참조
     - 바이트 단위로 구분되어 순서화되는 번호임
        . 이를 통해, TCP에서는 신뢰성흐름제어 기능 제공  ☞ 슬라이딩 윈도우 참조 

     - 순서 가능 범위
        . 시작 : 임의 값으로 시작하여, 최대값(4,294,967,295) 이후에는 `0`으로되어 시작함
        . 최대 : 32 비트이므로 최대 4기가 바이트(232) 크기의 송신 데이터에,
                 순서화된 일련번호를 붙일 수 있음

     - 순서번호 의미
        . TCP 세그먼트의 첫번째 바이트에 부여되는 번호 

     - 초기 순서번호 (ISN, Initial Sequence Number)           ☞ TCP 연결 설정 참조
        . 초기 TCP 연결설정을 위함
        . 난수 발생기로 초기 순서번호(ISN)를 생성하고, 이를 순서번호 필드에 넣어 보냄
           .. 난수 발생기 : 매 4 ㎲ 마다 1씩 증가하는 12 비트 카운터에 의해 구현됨
        . TCP는 양방향이므로 각 방향 마다 다른 ISN 번호가 사용됨 

  ㅇ Acknowledgement Number (확인응답 번호 / 승인 번호) (32 비트)    ☞ TCP 확인응답 참조
     - 수신하기를 기대하는 다음 바이트 번호 = (마지막 수신 성공 순서번호 + 1)
         헤더 길이 필드 (Header length, HLEN, 4 비트)
     - TCP 헤더 길이를, 4 바이트(32 비트) 단위로 표시
        . TCP 헤더 길이는, 최소 4 x 5 = 20 바이트 부터 ~ 4 x (24 - 1) = 60 바이트 이하

  ㅇ 6 개의 Flag bits (URG, ACK, PSH, RST, SYN, FIN)         ☞ TCP 제어 플래그 참조
     - TCP 세그먼트 전달과 관련되어 TCP 회선 및 데이터 관리 제어 기능을 하는 플래그
        . 관계된 기능 : 흐름제어,연결설정,연결종료,연결리셋,데이터전송모드

  ㅇ 윈도우 크기 (Window size, 16 비트)                      ☞ 슬라이딩 윈도우 참조
     - 흐름제어를 위해 사용하는 16 비트 필드 (65,535 bytes까지 가능)
        . TCP 흐름제어를 위해 송신자에게 자신의 수신 버퍼 여유용량 크기를 지속적으로 통보
           .. TCP 연결은 양방향이므로, 매 TCP 세그먼트를 보낼시 마다, 
           .. 이 필드에 자신의 수신 버퍼 용량 값을 채워 보내게 됨 (지속적인 현행화)
        . 결국, 양방향 각각의 수신측에 의해 능동적으로 흐름제어를 수행하게 됨

  ㅇ Checksum (16 비트)                           ☞ TCP Checksum(TCP 가상헤더) 참조
     - 검사합

  ㅇ Urgent pointer (16 비트)
     - TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호
        . 현재 일련번호(sequence number)로부터 긴급 데이터까지의  바이트 오프셋(offset)
        . 해당 세그먼트의 일련번호에 urgent point 값을 더해 긴급 데이터의 끝을 알수있음

  ㅇ 옵션                                         ☞  TCP 옵션  참조
     - 최대 40 바이트까지 옵션 데이터 포함 가능
        . TCP MSS 옵션을 협상하거나,  (MSS)
        . 주어진 윈도우 크기 보다 더 크게 사용하거나,  (Windowing)
        . 선택확인응답을 하거나,  (SACK)
        . 타임스탬프 옵션 정의  (Timestamp) 등


3. 위 필드 중 상대쪽에서 오는 방향과 관련된 필드들 TCP 헤더 내 대부분의 필드들은 양방향 모두 쓰이나,
     - 특히, 다음 4개 필드는, 상대측으로부터 받는 방향에 쓰여지는 필드들임

  ㅇ TCP 제어 플래그 내 `ECE`,`ACK 제어 비트`    ☞ TCP 제어 플래그 참조
     - 확인응답번호 필드에 확인응답번호(Acknowledgement Number) 값이 셋팅됐음 등을 알림

  ㅇ `확인응답 번호 (Acknowledgement Number)`
     - 통상,  `순서번호 + 1`로 설정됨

  ㅇ `윈도우 크기 (window size)`    ☞ 수신 윈도우 참조

TCP 패킷(세그먼트)
   1. TCP 헤더   2. TCP 제어 비트   3. TCP 옵션   4. TCP MSS 옵션   5. TCP 세그먼트  


Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"