[혼공네] 4-2. TCP와 UDP

목록으로 돌아가기

TCP 통신 단계와 세그먼트 구조

TCP 통신 단계

  1. 연결 수립
  2. 데이터 송수신 - 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공.
  3. 연결 종료
  • MSS(Maximum Segment Size) - TCP로 전송할 수 있는 최대 페이로드 크기. MSS를 고려할 때 TCP 헤더 크기는 제외한다. TCP 헤더, IP 헤더를 추가하면 IP MTU가 된다.

  • TCP 세그먼트 헤더 구조
    • 송신지 포트와 수신지 포트 : 송신지 또는 수신지 어플리케이션을 식별하는 포트 번호가 명시되는 필드
    • 순서 번호 : 순서 번호가 명시되는 필드. 송수신되는 세그먼트의 올바른 순서를 보장하기 위한 번호
    • 확인 응답 번호 : 상대 호스트가 보낸 세그먼트에 대한 응답
    • 제어 비트 : 플래그 비트. 현재 세그먼트에 대한 부가 정보를 나타냄.
    • 윈도우 : 수신 윈도우의 크기 명시. 한 번에 수신하고자 하는 데이터의 양을 명시.
  • 제어 비트 필드 : 8비트로 구성되어 있으며, 각 자리의 비트는 각각 다른 의미를 가진다. 이 때 자주 언급되는 제어 비트는 다음과 같다.
    • ACK : 세그먼트의 승인을 나타내기 위한 비트
    • SYN : 연결을 수립하기 위한 비트
    • FIN : 연결을 종료하기 위한 비트
  • 순서 번호(Seq) 필드와 확인 응답 번호(ACK) 필드
    • 순서 번호는 세그먼트의 올바른 송수신 순서를 보장하기 위한 번호다.
    • 초기 순서 번호는 처음 통신을 위해 연결을 수립한 경우, 무작위로 정해지는 세그먼트의 제일 처음 순서 번호다.
    • 연결 수립 이후 순서 번호는 송신한 바이트의 누적값을 가진다. 즉, 초기 순서 번호 + 송신한 바이트 수가 된다.
    • 확인 응답 번호는 순서 번호에 대한 응답이다. 즉, 다음으로 받기를 기대하는 순서 번호다.

TCP 연결 수립과 종료

TCP의 연결 수립은 쓰리 웨이 핸드셰이크를 통해 이루어진다. 액티브 오픈과 패시브 오픈이 있으며, 액티브 오픈은 연결을 요청하는 호스트가, 패시브 오픈은 연결을 요청 받는 호스트가 수행한다. 액티브 오픈부터 시작하여 syn 세그먼트 → syn + ack 세그먼트 → ack 세그먼트 세 단계로 이루어진다.

연결 종료의 경우에도 액티브 클로즈, 패시브 클로즈가 있으며, 엑티브 클로즈부터 시작하여 fin 세그먼트 → ack + fin 세그먼트 → ack 세그먼트 단계로 이루어진다.

TCP 상태

상태는 현재 어떤 통신 과정에 있는지 나타내는 정보로, TCP는 상태를 유지하고 활용한다. 이러한 점에서 스테이트풀 프로토콜이라고 부르기도 한다.

TCP의 상태는 다음과 같은 분류가 있다.

  1. 연결이 수립되지 않은 상태 - CLOSED, LISTEN
  2. 연결 수립 과정에서 주로 볼 수 있는 상태 - SYN-SENT, SYN-RECEIVED, ESTABLISHED
  3. 연결 종료 과정에서 주로 볼 수 있는 상태 - FIN-WAIT-1, CLOSE-WAIT, FIN-WAIT-2, LAST-ACK, TIME-WAIT, CLOSING

UDP 데이터그램 구조

UDP는 비연결형 통신을 수행하는 신뢰할 수 없는 프로토콜이다. 상태를 유지하지 않으므로 스테이트리스 프로토콜이라고도 한다.

  • 송신지 포트와 수신지 포트
  • 길이 : 헤더를 포함한 UDP 데이터그램의 바이트
  • 체크섬 : 데이터그램 전송 과정에서 오류가 발생했는지 검사하기 위한 필드. 문제가 있다면 폐기. 단, ‘수신지까지 잘 도달했는지’ 보는 신뢰성이랑은 관계가 없음.

TCP에 비해 적은 오버헤드로 패킷을 처리하기 때문에 빠르며, 주로 실시간 스트리밍 서비스, 인터넷 전화 등과 같은 실시간성이 강조되는 상황에서 쓰인다.

문제 1. TCP 통신 3 단계를 제시하시오. 또한 데이터 송수신에서의 제어 기능을 3가지 제시하시오.

→ 통신 3단계 1. 연결 수립, 2. 데이터 송수신, 3. 연결 종료 제어 기능 3가지 1. 오류 제어, 2. 흐름 제어, 3. 혼잡 제어

author-profile
Written by 상 한규

댓글