전송 제어 프로토콜: 두 판 사이의 차이
내용 삭제됨 내용 추가됨
잡 오탈자 제거 |
잔글 봇: 린트 오류 및 스타일 정리 |
||
30번째 줄:
|-
! style="border-top: none" | 옥텟
! <
|-
! 0
!<
| colspan="16"| Source port || colspan="16"| Destination port
|-
! 4
!<
| colspan="32"| Sequence number
|-
! 8
!<
| colspan="32"| Acknowledgment number (if <
|-
! 12
! <
| colspan="4"| Data offset || colspan="3"| Reserved<br /><
|-
! 16
!<
|colspan="16"| Checksum || colspan="16" | Urgent pointer (<
|-
! 20<br />...
!<
| colspan="32" style="background:#ffcc88;"| Options (''data offset'' > 5인 경우. 필요시 끝부분에 "0" 바이트로 패딩 됨.)<br />...
|}
60번째 줄:
;Destination port (16 비트):수신 포트
;Sequence number (32 비트):
:* <
:* <
;Acknowledgment number (32 비트):<
;Data offset (4 비트):32-bit 워드 단위로 나타낸 TCP 헤더 크기값이다. 헤더의 최소 크기는 5 워드이며 최대 크기는 15 워드이다. 따라서 최솟값은 20바이트, 최댓값은 60바이트가 되며, 헤더에 선택 값을을 위해 최대 40 바이트가 더 추가될 수 있다. 데이터 오프셋이라는 명칭은 이것이 실제 데이터 상에서의 TCP 세그먼트의 시작 위치의 오프셋이기 때문에 붙여졌다.
;Reserved (3 비트):미래에 사용하기 위해 남겨둔 예비 필드이며 0으로 채워져야 한다.
;Flags (9 bits) (혹은 Control bits):9개의 1-비트 플래그를 포함
:* <
:* <
:* <
::* <
::* <
:* <
:* <
:* <
:* <
:* <
:* <
;Window size (16 비트):''수신 윈도''의 크기. 해당 세그먼트의 송신측이 현재 수신하고자 하는 윈도 크기(기본 단위는 바이트). acknowledgment 필드의 시퀀스 번호보다 큰 값이어야 한다.
;Checksum (16 비트):헤더 및 데이터의 에러 확인을 위해 사용되는 16 비트 [[체크섬]] 필드
;Urgent pointer (16 비트):<
;Options (가변 0–320 비트, 32의 배수):이 필드의 길이는 데이터 오프셋 필드에 의해 결정된다. 이 부분은 Option-Kind (1 바이트), Option-Length (1 바이트), Option-Data (가변) 이렇게 최대 3개의 필드로 구성될 수 있다. Option-Kind 필드는 옵션의 종류를 나타내며, 세 가지 필드 중 유일하게 필수값이다. 옵션의 종류에 따라 나머지 두 개의 필드가 설정될 수 있다. Option-Length 필드는 옵션의 전체 길이를 나타내며, Option-Data 필드는 적용 가능한 경우 해당 옵션의 값을 나타낸다. 예를 들어, Option-Kind 바이트 값이 0x01인 경우 이는 패딩의 용도로만 사용되는 옵션없음(No-Op) 옵션을 의미하며, 이 때에는 뒤따라 오는 Option-Length나 Option-Data 값이 존재하지 않는다. Option-Kind 바이트 값이 0인 경우 이는 옵션종료(End Of Options) 옵션을 의미하며, 전자와 마찬가지로 뒤따라 오는 추가 옵션 필드가 없다. Option-Kind 바이트 값이 0x02인 경우 이것은 최대 세그먼트 크기(Maximum Segment Size) 옵션을 의미하며, 그 뒤에는 MSS 필드의 길이값(0x04여야 함)이 따라오게 된다. 이 길이값은 Option-Kind와 Option-Length를 포함한 주어진 옵션 필드의 전체의 길이를 나타내는 것이다. 따라서 MSS 값은 일반적으로 2 바이트로 표현되며, 해당 필드의 길이는 4 바이트(kind와 length의 2바이트를 더한 값)가 된다. 실제 예를 들어 설명하면, 0x05B4라는 값을 갖는 MSS 옵션 필드는 (0x02 0x04 0x05B4)의 형태로 TCP 옵션 섹션에 나타날 것이다.
:일부 옵션은 <
:* 0 (8 비트) – End of options list
:* 1 (8 비트) – No operation (NOP, Padding) 이것은 속도 향상을 위해 옵션 필드를 32 비트 길이에 맞추기 위해 사용될 수 있다.
:* 2,4,''SS'' (32 비트) – Maximum segment size (''[[#최대 세그먼트 크기|최대 세그먼트 크기]] 참조'') <sup><tt style="color:#000; background:#ccc;">[SYN]</
:* 3,3,''S'' (24 비트) – Window scale (''[[#윈도 조정|윈도 조정]] 참조'') <sup><tt style="color:#000; background:#ccc;">[SYN]</
:* 4,2 (16 비트) – Selective Acknowledgement permitted. <sup><tt style="color:#000; background:#ccc;">[SYN]</
:* 5,''N,BBBB,EEEE,...'' (variable bits, ''N'' is either 10, 18, 26, or 34)- Selective ACKnowledgement (SACK)<ref>[http://tools.ietf.org/html/rfc2018#section-3 RFC 2018, TCP Selective Acknowledgement Options, Section 3]</ref> 이 첫 2 바이트 뒤에는 선택적 확인응답을 받는 1-4개 블럭의 리스트가 따라오게 되며, 이들은 32 비트 시작/종료 포인터로 구분된다.
:* 8,10,''TTTT,EEEE'' (80 비트)- Timestamp and echo of previous timestamp (''see [[#TCP 타임스탬프|TCP 타임스탬프]] 참조'')<ref>[http://tools.ietf.org/html/rfc1323#page-11 RFC 1323, TCP Extensions for High Performance, Section 3.2]</ref>
:* 14,3,''S'' (24 비트) – TCP Alternate Checksum Request. <sup><tt style="color:#000; background:#ccc;">[SYN]</
:* 15,''N,...'' (가변 비트) – TCP Alternate Checksum Data.
:(이외의 옵션들은 더이상 사용되지 않거나, 시험용이거나, 아직 표준화되지 않았거나, 또는 할당되지 않은 것들임)
|