ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소켓으로 살펴보는 TCP vs UDP
    스터디/인프라 2022. 12. 29. 23:14
    728x90

     

    전송 계층(Transport Layer)은 OSI 7계층 중 네 번째 계층으로, 호스트 간이 아닌 ‘프로세스 대 프로세스’ 간의 데이터 송수신을 담당합니다.
    이 계층에서 사용하는 대표적인 프로토콜이 바로 TCP와 UDP입니다.

     

    TCP, UDP 간단 비교

    • TCP (Transmission Control Protocol)
      TCP는 연결 지향형(Connection-oriented) 프로토콜로, 신뢰성 있는 바이트 스트림 서비스를 제공합니다.
      데이터의 순서 보장, 손실 시 재전송, 흐름 제어 및 혼잡 제어 등의 기능이 내장되어 있어 신뢰성이 매우 높습니다.

    • UDP (User Datagram Protocol)
      UDP는 비연결형(Connectionless) 프로토콜로, 데이터를 독립적인 패킷(Datagram) 형태로 전송합니다.
      전송에 대한 보장(재전송, 순서 보장 등)이 없지만, 오버헤드가 작고 빠르다는 장점이 있어 실시간 통신(예: 스트리밍, VoIP)에 자주 사용됩니다.

     

    프로세스와 소켓의 관계

    프로세스가 데이터를 전송하려면 소켓을 사용해야합니다.

    예를 들어, 메시지를 보내려면 소켓이 write를 해야하고 메시지를 읽으려면 소켓이 read를 해야합니다.

     

    UDP 소켓 통신

    UDP를 사용해서 소켓 통신을 할 때는 아래와 같은 흐름입니다.

    컴퓨터 네트워킹 하향식 접근 8판 참고



    소켓을 만들 때 해당하는 서버의 IP와 Port 번호 그리고, 이 소켓이 어떤 프로토콜을 사용할 지를 명시를 해줘야합니다.
    여기서는 UDP 프로토콜을 사용하기 때문에 SOCK_DGRAM이라고 명시한 것을 확인할 수 있습니다.

     

    이후에 메시지를 생성할 때 메시지에 목적지 IP와 목적지 Port를 명시를 하고 보내야합니다. 

    (중요 : 메시지마다 목적지 IP와 Port를 지정해야합니다.)

     

    서버는 바인딩된 UDP 소켓을 통해서 메시지를 수신합니다. 

    TCP 소켓 통신

     

    TCP 소켓 통신은 UDP와 다른 점이 크게 두 가지입니다.

    1. 환영 소켓이라는 것이 있고, 연결 소켓이라는 것이 있습니다.
    2. 커넥션이 연결되어 있기 때문에 목적지 IP, Port를 명시할 필요가 없습니다.

     

    컴퓨터 네트워킹 하향식 8판 참고

     

    서버는 환영 소켓이라는 것이 있는데 이는 데몬처럼 항상 실행되며, 클라이언트로부터 접속 요청을 기다립니다.

    클라이언트의 소켓과 서버의 환영 소켓이 3 way handshake를 수행하면, 서버는 연결 소켓이라는 것을 만들어 이를 클라이언트 소켓과 연결시켜 커넥션을 만듭니다.

     

    이후 실제 데이터 송수신은 클라이언트 소켓과 연결 소켓을 통해 수행되며 데이터에 목적지 IP와 Port를 따로 명시할 필요가 없습니다.

     

     

    지금까지 TCP 소켓 통신, UDP 소켓 통신에 대해서 알아보았습니다. 감사합니다.

     

     

    728x90
Designed by Tistory.