TCP (Transmission Control Protocol)
TCP (Transmission Control Protocol)는 인터넷 프로토콜 스위트의 핵심 프로토콜 중 하나로, 신뢰성 있는 데이터 전송을 보장하는 연결 지향 프로토콜이다. TCP는 데이터의 전송 순서와 무결성을 보장하며, 패킷 손실 시 재전송을 통해 데이터의 완전성을 유지한다.
특징
- 연결 지향 (connected-oriented)
- TCP는 데이터 전송 전에 송신자와 수신자 간의 연결을 설정한다.
- 신뢰성 (Reliability)
- 데이터가 손실되거나 손상된 경우 재전송을 통해 데이터의 무결성을 보장한다.
- 흐름 제어 (Flow Control)
- 송신자가 수신자의 처리 능력을 초과하지 않도록 데이터 전송 속도를 조절한다.
- 혼잡 제어 (Congestion Control)
- 네트워크 혼잡을 방지하기 위해 데이터 전송 속도를 조절한다.
* 흐름제어는 수신자가 오버플로우 되지않게 패킷의 전송 속도 조절,
혼잡제어는 네트워크가 느려지지 않게 적당한 수의 패킷 전송
TCP 헤더 구조
TCP 헤더는 데이터 전송을 관리하기 위한 다양한 필드를 포함하고 있다.
- 소스 포트 (Source Port)
- 송신자의 포트 번호
- 목적지 포트 (Destination Port)
- 수신자의 포트 번호
- 순서 번호 (Sequence Number)
- 데이터의 순서를 나타내는 번호
- 확인 응답 번호 (Acknowledgement Number)
- 수신자가 다음에 받을 데이터의 순서 번호
- 데이터 오프셋 (Data Offset)
- TCP 헤더의 길이
- 제어 비트 (Control Bits)
- 연결 설정, 종료, 데이터 전송 등의 제어 정보를 포함
- 윈도우 크기 (Window Size)
- 수신자가 한 번에 받을 수 있는 데이터의 양
- 체크섬 (Checksum)
- 데이터의 무결성을 확인하기 위한 값
- 긴급 포인터 (Urgent Pointer)
- 긴급 데이터의 위치를 나타내는 포인터
TCP 연결
TCP 연결은 3 way handshake (세 단계)의 과정을 통해 설정된다.
1. SYN
송신자가 연결 요청을 보낸다.
2. SYN-ACK
수신자가 연결 요청을 수락하고 응답을 보낸다.
3.ACK
송신자가 수신자의 응답을 확인하고 연결이 설정된다.
TCP 종료
연결 종료는 4 way handshake (네 단계)의 과정을 통해 이루어진다.
1. FIN
송신자가 연결 종료 요청을 보낸다.
2. ACK
수신자가 연결 종료 요청을 확인한다.
3. FIN
수신자가 연결 종료 요청을 보낸다.
4. ACK
송신자가 수신자의 연결 종료 요청을 확인하고 연결이 종료된다.
'🚣활동 > NHN Academy' 카테고리의 다른 글
Java Socket Communication (0) | 2025.02.10 |
---|---|
UDP (User Datagram Protocol) (0) | 2025.02.10 |
Socket, TCP, UDP (0) | 2025.02.10 |
Thread Pool (0) | 2025.02.04 |
Deadlock (교착 상태) (0) | 2025.02.04 |