본문 바로가기
컴퓨터 사이언스(CS)/시스템

[CS] TCP/UDP 개념 + socket 관리

by char_lie 2024. 8. 7.
반응형

 

TCP ( Transmission Control Protocol)

 

전송을 제어하기 위한 프로토콜로 인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜

특징

  • 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 흐름 제어
  • 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지하는 혼잡 제어
  • 높은 신뢰성 보장 (신뢰성이 높으므로 UDP보다 속도 느림)
  • 전송이 양방향으로 동시에 일어날 수 있는 전이중(Full-Duplex), 각 연결이 정확히 2개의 종단점을 갖는 점대점(Point To Point) 방식 제공
  • 데이터 전송 순서 보장 및 경계를 구분하지 않음
  • 연결 지향 방식으로 패킷 교환 방식 사용
    • 3-way handshaking 과정을 통해 연결을 설정
    • 4-way handshaking 과정을 통해 연결을 해제

📲 연결 과정 (3-way handshaking)

#1 Client → Server (SYN 전달)

#2 Server → Client (SYN + ACK 전달)

#3 Client → Server (ACK 전달)

 

📴해제 과정 (4-way handshaking)

#1 Client → Server (FIN 전달)

#2 Server → Client (ACK 전달 및 대기)

#3 Server → Client (FIN 전달)

#4 Client → Server (ACK 전달)

 

📌 사용처

  • 데이터의 손실이나 손상을 최소화하여 안정적인 데이터 전달을 보장해야하는 경우 사용
  • 파일 전송, 이메일, 웹 페이지 로딩과 같은 신뢰성이 중요한 응용프로그램에 사용

 

 

UDP (User Datagram Protocol)
사용자 데이터그램 프로토콜로 데이터를 데이터그램 단위로 처리하는 프로토콜

특징

  • 비연결형 서비스로 데이터그램 방식 제공 (데이터 전송순서 바뀔 수 있음)
  • 데이터 수신 여부 확인하지 않음
  • 신뢰성을 보장하지 않음
  • 데이터의 경계를 구분함
  • 패킷 오버헤드가 적어 네트워크의 부하 감소
  • 혼잡 제어를 하지 않기에 TCP보다 속도가 빠름

사용처

  • 데이터의 순서를 보장하지 않고 독립적인 패킷으로 전송하므로 신속성을 요구하는 경우 사용
  • 실시간 스트리밍, DNS(Domain Name System) 조회와 같은 신속한 데이터 전송이 필요한 응용프로그램에 사용
  TCP UDP
연결 방식 연결형 서비스(패킷 교환 방식) 비연결형 서비스(데이터그램 방식)
전송 순서 전송 순서 보장 전송 순서가 바뀔 수 있음
수신 여부 확인 수신 여부 확인 수신 여부 확인하지 않음
통신 방식 1:1 통신 1:1, 1:n, n:n 통신
신뢰성 높음 낮음
속도 느림 빠름
반응형
소켓(Socket)

소켓의 기본 개념

  • 엔드포인트(Endpoint): 소켓은 네트워크 상의 한 점을 의미하며, 이를 통해 데이터를 송수신 할 수 있게 함 
  • 데이터를 소켓을 통해 네트워크로 보내고 네트워크를 들어온 데이터를 소켓으로 받는 등 데이터 통로를 제공
  • 소켓 주소: 소켓이 통신을 하기 위위한 특정 주소
    • IP 주소: 네트워크 상에서 장치를 식별하는 유일한 주소
    • 포트 번호: 네트워크 서비스나 애플리케이션을 식별하기 위한 번호로 하나의 장치에서 여러 애플리케이션이 동시에 동작할 수 있기 때문에 포트 번호가 필요

소켓의 유형

TCP 소켓

  • 연결 지향적 : TCP 소켓은 두 엔드포인트 간에 안정적인 연결을 맺고, 이 연결을 통해 데이터를 송수신
  • 신뢰성 보장: 데이터가 손실되거나 손상되지 않도록 보장
  • 데이터가 전송된 순서대로 수신되도록 하며, 데이터 전송 속도 제어

UDP 소켓:

  • 비연결 지향적 : UDP 소켓은 데이터를 전송하기 전에 연결을 설정하지 않음
  • 데이터를 빠르게 전송할 수 있지만, 데이터의 손실, 중복, 순서 변경 등이 발생 가능
  • 주로 실시간 애플리케이션에서 사용

소켓의 동작 원리

  • 소켓 생성: 애플리케이션은 소켓 API를 호출하여 소켓을 생성하고, 해당 소켓에 사용할 프로토콜(TCP, UDP 등)을 지정.
  • 주소 바인딩: 생성된 소켓을 특정 IP 주소와 포트 번호에 바인딩 진행. 서버의 경우, 이 단계에서 소켓을 네트워크 인터페이스에 연결
  • 연결 수립: 클라이언트는 connect()를 호출하여 서버에 연결을 요청하고, 서버는 accept()를 호출하여 클라이언트의 연결을 수락
  • 데이터 송수신: 연결 수립 후, 애플리케이션은 소켓을 통해 데이터를 데이터를 보내는 쪽에서는 send() 함수, 받는 쪽에서는 recv() 함수를 사용하여 주고 받음
  • 연결 종료: 데이터 송수신이 완료되면 소켓을 닫아 연결을 종료
반응형

'컴퓨터 사이언스(CS) > 시스템' 카테고리의 다른 글

[CS] 파일 시스템과 HTTP  (0) 2024.08.05

댓글