콘텐츠로 이동

전송 계층

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------->|   (확인: 연결 완료)
  1. SYN: 클라이언트가 서버에 연결 요청
  2. SYN + ACK: 서버가 수락 + 자신의 시퀀스 번호 전송
  3. ACK: 클라이언트가 확인 응답 → 연결 완료

4-way Handshake (연결 종료)

Client          Server
  |--FIN------->|   (종료 요청)
  |<--ACK-------|   (수신 확인)
  |<--FIN-------|   (서버도 종료 요청)
  |--ACK------->|   (최종 확인)

TIME_WAIT: 마지막 ACK 전송 후 일정 시간 대기 (지연 패킷 처리)


3. 흐름 제어 (Flow Control)

수신자의 처리 속도에 맞게 송신 속도를 조절합니다.

슬라이딩 윈도우 (Sliding Window)

  • 수신자가 윈도우 크기(rwnd) 를 송신자에게 알려줌
  • 송신자는 ACK 없이 윈도우 크기만큼 연속 전송 가능
윈도우 크기 = 4
[1][2][3][4] 전송 → ACK(1) 수신 → [2][3][4][5] 전송 → ...

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)