Corgi 혼자 공부하는 네트워크 4-2 공부 기록
본문 바로가기
개발자 일상/혼자 공부하는 네트워크

혼자 공부하는 네트워크 4-2 공부 기록

by 짱아아빠 2024. 9. 26.
반응형

TCP 통신과 UDP 통신의 구조와 동작 방식

1. TCP 통신: 신뢰성 있는 연결 지향형 프로토콜

TCP(Transmission Control Protocol)는 연결 지향형 프로토콜로, 신뢰성 있는 데이터 전송을 보장합니다. 연결 설정과 종료를 위해 3-way handshake4-way handshake 과정을 사용하며, 데이터 전송 중에는 오류 제어, 흐름 제어, 혼잡 제어 등 여러 메커니즘을 제공합니다.

1.1. TCP 연결 수립 (3-way Handshake)

TCP 연결은 세 가지 단계를 거쳐 설정됩니다:

  1. SYN: 클라이언트가 서버에 연결 요청을 보냅니다. 클라이언트는 이때 **초기 순서 번호(ISN)**를 보냅니다.
  2. SYN+ACK: 서버는 클라이언트의 요청을 받고 자신의 초기 순서 번호와 클라이언트 순서 번호에 대한 응답 번호를 함께 보냅니다.
  3. ACK: 클라이언트는 서버의 응답을 받고 연결을 완료합니다. 이 과정을 통해 양측의 연결이 안정적으로 설정됩니다.

1.2. TCP 데이터 송수신

데이터 송수신 과정에서 TCP는 다음과 같은 중요한 기능을 수행합니다:

  • 오류 제어: 데이터 전송 중 손실된 패킷이 있을 경우 재전송을 요청합니다.
  • 흐름 제어: 송신자와 수신자의 데이터 처리 속도를 조정하여 수신자가 감당할 수 없는 속도로 데이터를 받는 것을 방지합니다.
  • 혼잡 제어: 네트워크가 혼잡한 상태에서 패킷 손실을 방지하기 위해 송신 속도를 조절합니다.

또한, MSS(Maximum Segment Size)는 TCP에서 전송할 수 있는 최대 페이로드 크기를 나타내며, TCP 헤더는 포함되지 않습니다. MSS는 데이터가 분할되어 전송되는 크기를 결정하며, IP 패킷의 MTU(Maximum Transmission Unit)와 연관이 있습니다. MTU는 네트워크 계층에서 처리할 수 있는 최대 패킷 크기입니다.

1.3. TCP 연결 종료 (4-way Handshake)

TCP 연결은 4단계로 종료됩니다:

  1. FIN: 클라이언트가 서버에 연결 종료 요청을 보냅니다.
  2. ACK: 서버가 클라이언트의 요청을 확인합니다.
  3. FIN: 서버도 데이터를 모두 전송한 후 연결을 종료하겠다는 신호를 클라이언트에 보냅니다.
  4. ACK: 클라이언트는 서버의 종료 요청을 확인하고 연결을 완전히 종료합니다.

FIN 패킷을 보낼 때 순서 번호는 마지막 데이터 바이트의 순서 번호 + 1로 설정됩니다. 이로 인해 FIN 패킷도 1바이트 크기의 데이터로 간주되며, 이를 통해 데이터 전송의 끝을 나타냅니다.

반응형

2. UDP 통신: 비연결형 프로토콜

UDP(User Datagram Protocol)는 비연결형 통신을 제공하며, 데이터를 빠르게 전송하는 것이 주된 목표입니다. 연결 설정 과정이 없고, 재전송을 위한 메커니즘이 없기 때문에 신뢰성이 떨어지지만 그만큼 오버헤드가 적고 속도가 빠르며 실시간 통신에 적합합니다.

2.1. UDP 데이터그램 구조

  • 송신지/수신지 포트 번호: 데이터를 송신하고 수신하는 애플리케이션을 식별합니다.
  • 길이: UDP 데이터그램의 길이(헤더 포함)를 나타냅니다.
  • 체크섬: 데이터 전송 중 오류가 발생했는지 검사합니다. 오류가 있으면 해당 데이터그램은 폐기됩니다.

UDP는 신뢰성보다 속도가 중요한 실시간 스트리밍, 온라인 게임, DNS 요청 등에 사용됩니다.


3. TCP 세그먼트 헤더의 구조

TCP 세그먼트의 헤더는 다양한 필드로 구성되어 있으며, 그중 중요한 필드는 다음과 같습니다:

  • 송신지/수신지 포트 번호: 송신자와 수신자의 애플리케이션을 식별합니다.
  • 순서 번호(Sequence Number): 세그먼트의 순서를 보장하기 위해 각 세그먼트에 부여되는 번호입니다.
  • 확인 응답 번호(Acknowledgment Number): 상대방이 보낸 세그먼트에 대한 응답입니다.
  • 제어 비트(Control Bits): SYN, ACK, FIN 등의 상태 정보를 포함하며 연결의 설정과 종료를 제어합니다.

제어 비트는 6비트 또는 9비트로 사용되며, 각각의 기능은 다음과 같습니다:

  • URG: 긴급 데이터임을 나타냅니다.
  • ACK: 응답 번호가 유효함을 나타냅니다.
  • PSH: 데이터를 즉시 상위 계층으로 전달하라는 요청입니다.
  • RST: 연결을 강제로 초기화하거나 종료합니다.
  • SYN: 연결을 설정할 때 사용됩니다.
  • FIN: 연결을 종료할 때 사용됩니다.

4. TCP 상태 전이

TCP 통신은 연결의 설정과 종료를 위한 다양한 상태로 전이됩니다. 주요 상태는 다음과 같습니다:

  • CLOSED: 아무런 연결이 없는 상태.
  • LISTEN: 서버가 연결 요청을 기다리는 상태.
  • SYN-SENT: 클라이언트가 SYN을 보내고, 응답을 기다리는 상태.
  • ESTABLISHED: 연결이 확립된 상태로, 데이터 송수신이 가능한 상태.
  • FIN-WAIT-1: 연결을 종료하려고 하는 클라이언트가 FIN을 보내고, ACK를 기다리는 상태.
  • TIME-WAIT: 연결 종료 후 일정 시간 대기하는 상태로, 마지막 ACK가 유실될 경우 재전송할 수 있도록 보장하는 상태입니다.

5. TCP와 UDP의 사용 사례

  • TCP: 신뢰성 있는 데이터 전송이 필요한 애플리케이션에 적합합니다. 대표적으로 웹 브라우징(HTTP/HTTPS), 이메일(SMTP), 파일 전송(FTP) 등이 있습니다.
  • UDP: 실시간 전송 속도가 중요한 애플리케이션에서 주로 사용됩니다. 실시간 스트리밍, VoIP, 온라인 게임, DNS 등이 대표적인 예입니다.

6. TCP와 UDP의 차이점 정리

특징TCPUDP

연결 방식 연결 지향형 (3-way, 4-way handshake) 비연결형 (데이터그램 방식)
신뢰성 신뢰성 있음 (오류 제어, 흐름 제어, 혼잡 제어) 신뢰성 없음 (오류 제어 및 재전송 없음)
데이터 전송 속도 상대적으로 느림 빠름
오버헤드 높음 낮음
사용 사례 HTTP, FTP, 이메일 등 VoIP, 실시간 스트리밍, 온라인 게임 등
순서 보장 보장 보장하지 않음
데이터 손실 손실 복구 가능 손실 복구 불가

 


이렇게 TCP와 UDP의 구조, 세그먼트 헤더, 제어 비트, 데이터 송수신 과정, 연결 수립 및 종료를 포괄적으로 다루어 블로그에서 독자들이 이해하기 쉽게 설명할 수 있습니다.

반응형

댓글