스물두줄

컴퓨터시스템응용기술사 · 네트워크 및 통신

TCP 연결 설정과 종료

TCP는 양 끝 프로세스 사이에 신뢰성 있는 연결지향 바이트 스트림을 제공하는 전송계층 프로토콜이다. IP는 최선을 다해 전달할 뿐 도착이나 순서를 보장하지 않는다. TCP가 그 빈틈을 메운다. TCP는 연결 관리, 순서와 확인 응답, 흐름 제어, 혼잡 제어 기능을…

주요 장면

  1. 0:02 TCP의 정의
  2. 0:31 TCP 헤더 구조
  3. 1:02 3-way handshake
  4. 1:44 4-way handshake
  5. 2:14 TCP와 UDP 비교
  6. 2:51 계산 예: 헤더 길이와 연결 설정 시간

대본

TCP의 정의

TCP는 양 끝 프로세스 사이에 신뢰성 있는 연결지향 바이트 스트림을 제공하는 전송계층 프로토콜이다.

IP는 최선을 다해 전달할 뿐 도착이나 순서를 보장하지 않는다. TCP가 그 빈틈을 메운다.

TCP는 연결 관리, 순서와 확인 응답, 흐름 제어, 혼잡 제어 기능을 제공한다.

웹, 메일, 파일 전송 등 거의 모든 응용이 이 기반 위에서 동작한다.

TCP 헤더 구조

TCP 세그먼트는 헤더와 데이터로 나뉘며, 헤더는 고정 20바이트 필드와 선택 옵션으로 구성된다.

순서 번호와 확인 응답 번호는 신뢰성을, 윈도우 크기는 흐름 제어를 담당한다.

제어 플래그는 연결 설정, 데이터 전달, 종료를 제어한다.

체크섬은 헤더와 데이터의 오류를 검출하고, 긴급 포인터는 URG 플래그가 있을 때만 유효하다.

3-way handshake

연결 설정은 3-way handshake로 이루어진다. 세 단계를 순서대로 보자.

클라이언트가 SYN을 보낸다. 플래그는 1이고 순서 번호는 임의의 초기값 x다.

서버는 SYN+ACK를 보낸다. 확인 응답 번호는 x+1, 자기 순서 번호는 y다.

클라이언트가 ACK를 보내면 양쪽 모두 ESTABLISHED 상태가 된다.

직접 풀어 보자.

4-way handshake

연결 종료는 4-way handshake다. 방향마다 FIN과 ACK가 오가므로 세그먼트가 네 개다.

능동 종료 측이 FIN을 보내면, 수동 측은 ACK로 이를 확인한다.

수동 측은 CLOSE_WAIT 상태에서 남은 데이터를 보낸 뒤 자신의 FIN을 보낸다.

능동 측은 ACK를 보내고 TIME_WAIT 상태로 들어가 일정 시간 대기한 뒤 종료한다.

TCP와 UDP 비교

TCP와 UDP는 연결 설정, 신뢰성, 제어 기능, 헤더 크기에서 차이가 난다.

TCP는 3-way handshake 후 전송하고, UDP는 연결 설정 없이 바로 보낸다.

TCP는 순서 번호와 확인 응답으로 손실을 재전송한다. UDP는 이를 응용이 직접 처리한다.

TCP 헤더는 최소 20바이트이고, UDP 헤더는 고정 8바이트다.

신뢰성과 순서가 필요하면 TCP, 지연과 단순성이 중요하면 UDP를 쓴다.

계산 예: 헤더 길이와 연결 설정 시간

헤더 길이는 데이터 오프셋에 4를 곱해 바이트로 구한다. 단위는 32비트 워드다.

데이터 오프셋이 5이면 헤더는 20바이트, 최댓값 15이면 60바이트다.

연결 설정 시간은 왕복 시간 RTT로 계산한다. 1회 왕복이므로 RTT에 1을 곱한다.

RTT가 50ms라면 데이터 전송 전 약 50ms가 추가된다. 가상의 예다.

직접 풀어 보자. 방금 본 계산을 적용하면 된다.

같은 장의 영상