article thumbnail image
Published 2019. 8. 24. 18:06

TCP 헤더 (TCP Header)

 

TCP의 세그먼트는 [그림 9-8]과 같은 헤더 구조로 시작하고, 전송 데이터가 뒤따른다. 그림 상단의 숫자는 비트 수다.

마지막 줄의 Options와 Padding은 생략할 수 있으므로 TCP 헤더의 최소 크기는 20바이트다. Options 필드는 다양한 종류의 부가 정보를 전달하는 데 사용하며, 최대 40바이트의 크기를 지원한다. Padding 필드는 헤더의 크기를 4바이트 단위로 맞추려고 사용한다.

 

[그림 9-8] TCP 헤더

 

TCP 헤더의 필드

TCP 헤더(TCP Header)는 중간에 위치한 여섯 개의 플래그 비트를 비롯해 제법 많은 필드를 사용하므로 데이터 전송 과정이 UDP보다 복잡하다. TCP 헤더에서 정의된 필드의 의미와 용도는 다음과 같다.

• Source Port/Destination Port(송신 포트/수신 포트) : TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당된 네트워크 포트 주소다. 인터넷 환경에서는 통신을 원하는 프로세스가 실행되는 호스트 주소와 호스트 내부에서 다른 프로세스와 구분할 수 있는 프로세스 전용의 고유 주소가 필요하다. 호스트 주소는 IP 프로토콜에서 정의된 호스트의 IP 주소를 사용해 구분할 수 있다. 프로세스에 할당되는 네트워크 자원을 포트(Port)라고 하는데, 포트를 구분하기 위한 고유 주소가 포트 번호다. 포트 번호는 TCP와 UDP가 별도의 주소 공간을 갖기 때문에 같은 번호를 사용할 수 있다.

• Sequence Number(순서 번호) : 송신자가 지정하는 순서 번호다. 세그먼트 전송 과정에서 전송되는 바이트 수를 기준으로 증가한다. 즉, TCP에서는 전송 데이터의 각 바이트마다 순서 번호가 존재한다. 크기가 32비트인 필드로 표시할 수 있고 최대 범위가 232개 가능해 크기가 충분히 크므로 순서 번호가 쉽게 중복되지 않는다. 송신자가 최초 데이터를 전송할 때는 임의의 순서 번호를 선택해 전송한다. 이는 전송 연결이 예기치 않은 이유로 끊어졌을 때 순서 번호가 혼선되는 것을 방지하기 위함이다.

• Acknowledgement Number(응답 번호) : 수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용한다. 필드 값은 ACK 플래그 비트가 지정된 경우에만 유효하며, 다음에 수신을 기대하는 데이터의 순서 번호를 표시해야 한다. ACK 응답을 받은 송신 프로세스는 Acknowledgement Number-1까지의 모든 데이터가 올바로 전송되었음을 확인할 수 있다. 연결 설정이나 연결 해제처럼 데이터 세그먼트가 없는 경우에도 순서 번호가 1씩 증가한다.

• Data Offset(데이터 옵셋) : TCP 세그먼트가 시작되는 위치를 기준으로 데이터의 시작 위치를 나타내므로 TCP 헤더의 크기가 된다. 32비트 워드 단위로 표시된다.

• Reserved(예약) : 예약 필드다.

• Window(윈도우) : 슬라이딩 윈도우 프로토콜에서 수신 윈도우의 버퍼 크기를 지정하려고 사용하며, 수신 프로세스가 수신할 수 있는 바이트의 수를 표시한다. 수신자의 버퍼 용량 초과 등으로 인해 데이터를 더는 수신할 수 없으면 Window 필드 값을 0으로 지정한다. 이 경우에 송신 프로세스는 데이터를 더 전송하면 안 된다.

• Checksum(체크섬) : TCP 세그먼트에 포함되는 프로토콜 헤더와 데이터 모두에 대한 변형 오류를 검출하려고 사용한다. IP 프로토콜에서 사용하는 오류 검출 알고리즘을 사용한다.

• Urgent Pointer(긴급 포인터) : 긴급 데이터를 처리하기 위한 것으로, URG 플래그 비트가 지정된 경우에만 유효하다. 이 필드를 사용해 송신 프로세스가 긴급히 처리하려는 데이터를 전송할 수 있다. 예를 들어, Sequence Number = 2,000, Urgent Pointer = 100으로 지정한 패킷을 전송한다면 순서 번호 2,000번~2,099번의 데이터는 긴급 데이터로 전송되고 2,100번 이후는 다시 정상 데이터로 전송된다.

TCP 헤더의 플래그 비트

TCP 헤더에는 플래그 비트가 6개 정의되어 있다. 필드 값이 1이면 다음과 같이 각 플래그에 해당하는 의미를 갖는다.

• URG : Urgent Pointer 필드가 유효한지를 나타낸다. 긴급 데이터를 전송하기 위해 사용한다.

• ACK : Acknowledgment Number 필드가 유효한지를 나타낸다. 정상적인 피기배킹 방식의 양방향 통신 환경에서, 양단 프로세스가 쉬지 않고 데이터를 전송한다고 가정하면 최초 연결 설정 과정에서 전송되는 첫 번째 세그먼트를 제외한 모든 세그먼트의 ACK 비트가 1로 지정된다고 생각할 수 있다.

• PSH : 현재 세그먼트에 포함된 데이터를 상위 계층에 즉시 전달하도록 지시할 때 사용한다. 수신자에게서 PSH 세그먼트에 대한 응답 프레임이 도착하면, 프레임의 Acknowledgement Number 필드에 표시한 숫자까지의 모든 데이터가 상대 프로세스의 상위 계층에 전달되었음을 의미한다.

• RST : 연결의 리셋이나 유효하지 않은 세그먼트에 대한 응답용으로 사용한다. 송신자가 전송을 마쳤으나 수신자에게 아직 도착하지 못한 세그먼트, 혹은 수신자가 아직 긍정 응답하지 않은 세그먼트는 연결이 재설정되었을 때 반드시 재전송되어야 한다.

• SYN : 연결 설정 요구를 의미하는 플래그 비트므로 가상 회선 연결을 설정하는 과정에서 사용된다.

• FIN : 한쪽 프로세서에서 더는 전송할 데이터가 없어 연결을 종료하고 싶다는 의사 표시를 상대방에게 알리는 데 사용한다. 현재 전송 과정에 있는 데이터는 계속 처리할 수 있으며, 상대편 프로세스의 데이터 전송에 장애가 발생하지 않는다. 따라서 연결 해제는 양쪽 프로세스 모두가 FIN 플래그를 전송해야 완료된다.

[출처]

http://terms.naver.com/entry.nhn?docId=2271914&cid=51207&categoryId=51207

'Cisco' 카테고리의 다른 글

패스워드와 배너설정(글로벌 모드)  (0) 2017.08.30
복사했습니다!