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)` ☞ 수신 윈도우 참조
1.
2.
3.
4.
5.