TCP (Transmission Control Protocol)
- 택배에 비유할 수 있음. 데이터가 목적지까지 손실 없이 도착했는지 확인하고, 순서대로 도착하도록 함
- OSI 7계층 중 4계층인 '전송 계층' 에서 사용됨
1. [주요 기능]
3-Way Handshake | 연결 시작 시, 클라이언트-서버 간 신뢰 형성 과정 |
Sequencing | 데이터의 순서 번호를 붙여 전송 |
Acknowledgment (ACK) | 받은 데이터에 대한 응답을 보냄 |
Retransmission | 데이터 유실 시 재전송 |
Flow Control | 수신 측 상태를 고려하여 전송 속도 조절 |
Congestion Control | 네트워크 혼잡 상태를 감지하고 속도 조절 |
2. [3-Way Handshake]
- 3-way handshake는 TCP 프로토콜이 연결 과정에서 데이터를 주고 받는 통신 과정
SYN | 연결 요청 |
ACK | 응답 확인 |
PSH | 데이터를 즉시 전송하라는 의미 (Push) |
FIN | 연결 종료 요청 |
RST | 비정상 종료 요청 (Reset) |
1. [SYN] Client → Server: "연결 요청 (seq=100)"
2. [SYN+ACK] Server → Client: "OK (seq=200, ack=101)"
3. [ACK] Client → Server: "연결 완료 (ack=201)"
3. [패킷 예시]
- 클라이언트 10.1.9.91 → 서버 anyone:30092 로 연결한다고 가정
[1] 10.1.9.91.16024 > anyone.30092: Flags [S], seq 1000, win 64240 SYN (연결 요청)
[2] anyone.30092 > 10.1.9.91.16024: Flags [S.], seq 5000, ack 1001 SYN - ACK (수락 및 연결)
[3] 10.1.9.91.16024 > anyone.30092: Flags [.], ack 5001 ACK
(3-way handshake 완료)
[4] 10.1.9.91.16024 > anyone.30092: Flags [P.], seq 1001:1201, ack 5001, length 200 PSH - ACK
[5] anyone.30092 > 10.1.9.91.16024: Flags [.], ack 1201 ACK
(데이터 전송 완료)
[6] 10.1.9.91.16024 > anyone.30092: Flags [F.], seq 1201, ack 5001 FIN (종료 요청)
[7] anyone.30092 > 10.1.9.91.16024: Flags [F.], seq 5001, ack 1202 FIN - ACK (수락 및 종료 알림)
[8] 10.1.9.91.16024 > anyone.30092: Flags [.], ack 5002 ACK
(4-way handshake 연결 종료)
4. [특징]
- 데이터의 손실 없이 전달됨
- 먼저 보낸 데이터가 먼저 도착함 (순서 보장)
- 전송 성공 여부 확인 가능 (ACK 응답)
- 높은 신뢰성 보장
- 다소 느린 속도
5. [사용되는 곳]
- 웹사이트 접속 (http/https)
- 파일 다운로드 (FTP)
- 이메일 전송 (SMTP)
'네트워크' 카테고리의 다른 글
[프로토콜] UDP (1) | 2025.04.15 |
---|---|
[네트워크 스위치] 업링크 포트(Up link) (0) | 2024.10.10 |
패킷의 종류와 구조 (1) | 2024.02.27 |
네트워크의 분류 (0) | 2023.12.01 |