전송 계층¶
1. TCP vs UDP¶
| 구분 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결 지향 (3-way handshake) | 비연결 지향 |
| 신뢰성 | 보장 (재전송, 순서 보장) | 미보장 |
| 속도 | 느림 | 빠름 |
| 헤더 크기 | 20~60 바이트 | 8 바이트 |
| 흐름/혼잡 제어 | 있음 | 없음 |
| 용도 | HTTP, FTP, 이메일 | DNS, 스트리밍, VoIP, 게임 |
2. TCP 연결 과정¶
3-way Handshake (연결 설정)¶
Client Server
|--SYN------->| (연결 요청: 내 시퀀스 번호 알려줌)
|<--SYN+ACK--| (수락: 내 시퀀스 번호도 알려줌)
|--ACK------->| (확인: 연결 완료)
- SYN: 클라이언트가 서버에 연결 요청
- SYN + ACK: 서버가 수락 + 자신의 시퀀스 번호 전송
- ACK: 클라이언트가 확인 응답 → 연결 완료
4-way Handshake (연결 종료)¶
Client Server
|--FIN------->| (종료 요청)
|<--ACK-------| (수신 확인)
|<--FIN-------| (서버도 종료 요청)
|--ACK------->| (최종 확인)
TIME_WAIT: 마지막 ACK 전송 후 일정 시간 대기 (지연 패킷 처리)
3. 흐름 제어 (Flow Control)¶
수신자의 처리 속도에 맞게 송신 속도를 조절합니다.
슬라이딩 윈도우 (Sliding Window)¶
- 수신자가
윈도우 크기(rwnd)를 송신자에게 알려줌 - 송신자는 ACK 없이 윈도우 크기만큼 연속 전송 가능
4. 혼잡 제어 (Congestion Control)¶
네트워크 혼잡 상태에 따라 전송 속도를 조절합니다.
주요 알고리즘¶
| 단계 | 이름 | 동작 |
|---|---|---|
| 초기 | Slow Start | 윈도우 크기를 1에서 시작, 매 RTT마다 2배 증가 |
| 임계치 도달 | Congestion Avoidance | 1씩 선형 증가 |
| 혼잡 감지(타임아웃) | Fast Retransmit | 윈도우 1로 초기화, Slow Start 재시작 |
| 혼잡 감지(3중 ACK) | Fast Recovery | 윈도우 절반으로 줄이고 선형 증가 |
5. 포트 번호¶
| 포트 | 프로토콜 | 설명 |
|---|---|---|
| 20, 21 | FTP | 파일 전송 |
| 22 | SSH | 보안 원격 접속 |
| 23 | Telnet | 원격 접속 (비암호화) |
| 25 | SMTP | 이메일 전송 |
| 53 | DNS | 도메인 이름 조회 |
| 80 | HTTP | 웹 |
| 110 | POP3 | 이메일 수신 |
| 143 | IMAP | 이메일 수신 |
| 443 | HTTPS | 보안 웹 |
| 3306 | MySQL | 데이터베이스 |
시험 포인트¶
- TCP vs UDP: 신뢰성 있음/없음, 연결 지향/비연결
- 3-way Handshake: SYN → SYN+ACK → ACK
- 4-way Handshake: FIN → ACK → FIN → ACK
- 흐름 제어: 수신자 버퍼 기반 (슬라이딩 윈도우)
- 혼잡 제어: 네트워크 상태 기반 (Slow Start)
- 주요 포트: HTTP(80), HTTPS(443), SSH(22), FTP(21), DNS(53)