본문 바로가기

CS/HTTP

🌐 TCP와 UDP 정리

1️⃣ TCP(Transfermission Control Protocol, 전송 제어 프로토콜)

 

  • TCP로 전송할 때 붙이는 헤더를 TCP 헤더라 하고, 이 헤더가 붙은 데이터를 세그먼트(segment)라 한다
  • 연결형 통신방식이며, 신뢰할 수 있는 데이터 전송을 보장
  • 흐름 제어, 혼잡 제어, 오류 제어를 제공 

 

❓ 흐름 제어
데이터를 송수신하는 곳의 데이터 처리 속도를 조절해 수신자 버퍼 오버플로우를 방지하는 것
송신하는 곳에서 감당하지 못하도록 많은 데이터를 빠르게 보내 수신측에서 문제가 발생한다
 stop and wait, 슬라이딩 윈도우 등을 사용
❓ 혼잡 제어
네트워크 내 패킷 수가 넘치지 않도록 막는 것
정보의 소통량이 과다하면 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는 것이다

연결 지향형 서비스

  • 애플리케이션 계층 메시지를 전송하기 전 TCP는 클라이언트와 서버가 3-way handshaking으로 서로 전송 제어 정보를 교환하고 연결이라는 가상의 독점 통신로를 확보해야 함
  • 연결을 확립(Connection establish)한 뒤 데이터의 전송이 가능하다
  • 셰이킹 단계를 지나면 TCP 연결이 두 프로세스 사이에 존재하고, 서로 동시에 메시지를 보낼 수 있다 ⇒ 전이중(full-duplex)
  • 애플리케이션이 메시지 전송을 마치면 연결을 끊어야 한다
💡 연결(Connection)
TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확립하고 데이터를 전송

신뢰적인 데이터 전송 서비스

  • 통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위해 TCP에 의존
  • TCP는 애플리케이션의 한쪽 바이트 스트림을 소켓으로 전달하면 손실하거나 중복되지 않게 수신 소켓으로 전달

 

 

 2️⃣ UDP(User Datagram Protocol, 사용자 데이터그램 프로토콜)

  • UDP 헤더가 붙은 데이터를 UDP 데이터그램(datagram)이라 한다
  • 효율성을 중요하게 여기는 프로토콜로 데이터를 효율적으로 빠르게 보내는 장점을 가지고 있다
  • 최소의 서비스 모델을 가진 간단한 전송 프로토콜, 코드가 간단하다
  • 비연결형이기 때문에 두 프로세스가 통신하기 전에 셰이킹을 하지 않는다
  • 비신뢰적인 데이터 전송 서비스를 제공하기 때문에 수신과 순서를 보장하지 않아 손상된 세그먼트 수신에 대한 재전송을 하지 않는다
    • 모두 사용자 프로세스의 몫이다!
    • UDP가 하는 것은 포트들을 사용해 IP 프로토콜에 인터페이스를 제공하는 것
  • 혼잡제어를 하지 않아 송신측이 원하는 속도로 하위 계층에 데이터를 전송한다
  • 오류 검출은 체크섬을 사용
  • UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄적으로 전송(브로드 캐스트, boradcast)이 가능!
    • TCP는 데이터를 전송할 때에도 확인 응답을 하나씩 보내야하기 때문에 적합하지 않다
  • 실시간성이 중요한 스트리밍에 자주 사용되고, DNS에도 사용

 

📃 정리

Icon made by Pixel perfect from www.flaticon.com

  • TCP로 전송할 때에는 3-way handshake를 통해 연결을 확립한 후, 계속 확인하면서 전송한다
  • UDP는 수신을 확인하지 않고 전송하기 때문에 빠른 전송이 가능하다 

 

 


📚 Reference

미즈구치 카츠야, 『모두의 네트워크: 10일 만에 배우는 네트워크 기초』, 이승룡, 길벗(2018)
James F. Kurose, Keith W. Ross, 『컴퓨터 네트워킹 하향식 접근』, 최종원, 유영환, 황호영 외 3명, 퍼스트북(2017)

'CS > HTTP' 카테고리의 다른 글

HTTP 메소드의 종류와 특징, 속성  (0) 2021.01.13
HTTP란? HTTP의 특징, 메시지의 구조  (0) 2021.01.13
주소창에 URL을 입력하면 일어나는 일  (0) 2020.12.31
URI vs URL vs URN  (0) 2020.12.31