전송계층에서의 PDU(프로토콜 데이터 단위) 는 Segment 이다.
application layer 에서 TCP 헤더를 붙여 캡슐화 하면 TCP segment 가 된다.
network layer 에서 받은 패킷에서 IP header 를 제거하는 역캡슐화를 거쳐도 TCP segment 가 된다.
전송계층에 핵심이 되는 TCP(Transmission Control Protocol)은 신뢰성과 정확성의 특징을 지닌다.
데이터 전송 과정에서 연결을 확립하는 연결형 통신을 수행한다.
TCP header는 목적지 까지 데이터를 신뢰성있게 전송하기 위한 정보들을 가지고 있다.
TCP 세그먼트의 핵심이 되는 TCP 헤더의 구조는 아래와 같다.
1. Source port, Destination port
직관적으로 이름에서 알 수 있듯이 출발지,목적지 응용 프로세스의 포트번호이다.
2. Sequence number
순서번호/일련변호 라고 부르며, 예를들어 100이라는 번호를 가진 데이터를 전송한 다음에는
101번의 데이터를 전송하게 된다.
즉, TCP 에서는 데이터를 보낼 때마다 각 데이터에 고유한 번호를 부여해서 전송을 시도한다.
3. Acknowledgement number
데이터를 전상적으로 수신 하였을 경우에
받은 데이터의 Sequence number에 자신이 받은 data의 bytes 더하여 해당 데이터를 정확히 받았음을
알리는 .Acknowledgement number 를 생성해낸다.
그리고 이 번호는 다음에 받을 데이터의 Sequence number 라고 볼 수 있다.
4. Dataoffset
해당 세그먼트 중 헤더가 아닌 데이터가 시작되는 위치가 어디서부터인지 표시해주는 정보를 가지고 있다.
5. Reserved
나중에 사용하기 위해 남겨둔 예비 필드라고 생각하면 된다.
6. Flags
Flags 라는 코드 비트는 총 6개의 비트로 구성된다.
URG | Urgent Pointer(긴급 포인터) 필드에 값이 채워져 있음을 알리는 플래그. 이 포인터가 가리키는 긴급한 데이터는 높게 처리되어 먼저 처리된다 |
ACK | Acknowledgment(승인 번호) 필드에 값이 채워져 있음을 알리는 플래그. 이 플래그가 0이라면 승인 번호 필드 자체가 무시된다. |
PSH | Push 플래그. 수신 측에게 이 데이터를 최대한 빠르게 응용프로그램에게 전달해달라는 플래그. 이 플래그가 0이라면 수신 측은 자신의 버퍼가 다 채워질 때까지 기다린다. 즉, 이 플래그가 1이라면 이 세그먼트 이후에 더 이상 연결된 세그먼트가 없음을 의미하기도 한다. |
RST | Reset 플래그. 이미 연결이 확립되어 ESTABLISHED 상태인 상대방에게 연결을 강제로 RESET 해달라는 요청의 의미이다. |
SYN | Synchronize 플래그. 상대방과 연결을 생성할 때, 시퀀스 번호의 동기화를 맞추기 위한 세그먼트임을 의미한다. |
FIN | Finish 플래그. 상대방과 연결을 종료하고 싶다는 요청인 세그먼트임을 의미한다. |
해당 코드비트는 각 비트가 활성화되면서 데이터 전송에 사용된다.
7. Window Size
TCP 흐름제어를 위해 사용되는 필드이며, 한번에 전송할 수 있는 데이터의 양을 의미하는 값이다.
8. Checksum
데이터를 보내는 도중에 발생할 수 있는 에러를 항상 검사하는 기능을 수행한다.
9. Urgent Pointer
Urgent Pointer 는 말 그대로 긴급포인터로 위에서 언급한 코드비트(Flags) 필드의 URG 비트 설정과 함께 사용된다.
URG 플래그가 1이라면 수신 측은 이 포인터가 가르키고 있는 데이터를 우선 처리해야한다.
'네트워크' 카테고리의 다른 글
[네트워크] ARQ (0) | 2022.10.05 |
---|---|
[네트워크] 3-way handshake, 4-way handshake (0) | 2022.10.04 |
[네트워크] 전송계층의 정의 (0) | 2022.10.02 |
[네트워크] ICMP (0) | 2022.10.01 |
[네트워크] ARP 프로토콜 (0) | 2022.09.30 |