TCP / UDP

강정우·2023년 3월 10일
0

네트워크

목록 보기
5/32

TCP

  • Transmission Control Protocol의 이니셜을 따온 것으로 IP(장비 주소)와 함께 사용된다.

  • 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다.

특징

  • 연결형 서비스 => 높은 신뢰성(흐름제어, 혼잡제어) => 속도가 느림
  • 3-way handshaking과정을 통해 연결을 설정(session을 수립)하고 4-way handshaking을 통해 해제한다.
  • 흐름 제어 : 보내는 측과 받는 측의 데이터 처리속도 차이를 조절해주는 것
  • 혼잡 제어 : 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
  • 전이중(Full-Duplex), 점대점(Point to Point) 방식.
  • 주로 파일을 전송하는 경우사용

TCP 서버 특징

  • 서버소켓은 연결만을 담당

  • 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용된다

  • 서버와 클라이언트는 1대1로 연결된다.

  • 스트림 전송으로 전송 데이터의 크기가 무제한이다.

  • 패킷에 대한 응답을 해야하기 때문에(시간 지연, CPU 소모) 성능이 낮다.

  • 단편화가 존재한다. ex) 900이면 40, 50, ... 끊어서 다만, 끊기게되면 다시 시도하고 최대한 시도하
    TCP 통신에서 데이터의 크기가 네트워크의 MTU(Maximum Transmission Unit, 최대 전송 단위)보다 클 경우, 데이터는 여러 개의 패킷으로 나누어져(단편화) 전송된다.

  • TCP는 이런 단편화를 자동으로 처리하는 프로토콜이다. 데이터를 보낼 때, 데이터의 크기가 MTU보다 크면 TCP는 데이터를 여러 개의 세그먼트로 분할한다.
    각 세그먼트는 헤더 정보를 포함하며, 이 헤더 정보는 세그먼트의 순서, 원본 데이터의 크기 등을 나타낸다. 이렇게 분할된 데이터는 독립적으로 네트워크를 통해 전송되며, 수신 측에서는 이 세그먼트를 재조립하여 원래의 데이터를 복원한다.
    이러한 TCP의 단편화와 재조립 기능은 데이터의 전송을 안정적이고 효율적으로 만들어준다.
    하지만 단편화는 네트워크의 오버헤드를 증가시키므로, 데이터를 작은 단위로 보내는 것이 항상 최선의 방법은 아니다.
    따라서, 네트워크의 성능을 최적화하기 위해서는 데이터의 크기와 MTU를 적절하게 설정하는 것이 중요하다.

TCP는 최대한의 안정성을 보장한다.

3-way handshaking

  • TCP 연결을 초기화 할 때 수행되는 절차
  • 앞서 설명했듯 TCP는 연결형 서비스 이기에 장치들 사이에 논리적 접속을 establish 하기위해 3-way handshaking 방법을 사용한다.
  • 양쪽 모두 데이터를 전송할 준비가 되었다는 것 SYN과 state로 보장하고, 실제로 데이타 전달이 시작하기전에 한쪽이 다른 쪽이 준비되었다는 것을 알수 있도록 한다.
  • SYN : synchronize sequence numbers
  • ACK : acknowledgment (응답 예-에크가 안 온다~)

4-way handshaking

  • 세션을 종료하기위해 수행되는 절차
  • TIME-WAIT : Client 측에서 이미 세션(연결)을 종료시킨 뒤 도착하는 패킷이 있다면 당연 버려(drop)진다.
    그래서 이러한 현상을 방지하고자 약 240초(default값)을 잉여패킷을 기다리도록 열어둔다.

UDP

  • 데이터를 데이터그램 단위로 처리하는 프로토콜
  • TCP와 다르게 비 연결형 즉, 연결을 위해 논리적 경로가 없다.
  • 즉, 패킷이 각각 독립적으로 처리됨.
  • 단편화가 존재하지 않고 한 큐에 간다. ex) 900이면 900이 똵!

특징

  • 비연결형 서비스로 데이터그램 방식 => 연결설정헤제X, 패킷에 순서나 재조립 부여X => 흐름제어, 혼잡제어X => 신뢰성이 낮음 => 속도 빠름
  • 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
  • UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
  • 신뢰성 < 연속성 => 스트리밍 서비스에 주로 사용됨.

UDP 서버의 특징

  • UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.
  • 소켓 대신 IP를 기반으로 데이터를 전송한다.
  • 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.
  • 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
  • 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.
  • 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다.

reference

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글