CS/Network

TCP 와 UDP

whyWhale 2021. 5. 5.

 

OSI, TCP 계층 구조.

 

 

TCP ( Transmission Control Protocal ) 


  • 연결형 서비스로 신뢰성을 보장한다.(가상회선방식이용)
    • 신뢰성 없는 인터넷을 통해 종단간에 신뢰성 있는 바이트스트림으로 전송을 하도록 설계 하였다.
    • 스트림 전송으로 전송 데이터의 크기 또한 무제한이다.
    • 같은 경로로 간다.
    • 예) 파일 전송.
  • 송신자와 수신자 모두가 소켓이라고 부르는 종단점을 생성함으로써 이루어진다.
  • 흐름제어,혼잡제어의 기능이 있다.
  • 3-Way-HandShake를 통해 연결 설정이 이루어 진다. | 4-way를 통해 연결 해제가 이루어진다.
  • 전이중(full-duplex), 점대점(point to point) 방식이다.
    • 전이중이란
      • 전송이 양방향으로 동시에 일어날 수 있음을 의미한다.
    • 점대점이란
      • 각 연결이 정확히 2개의 종단점을 가지고 있음을 의미한다.
  • TCP는 멀티캐스팅(1:N)이나 브로드캐스팅(1:ALL)을 지원하지 않는다.

 

패킷

데이터를 여러 개의 조각들로 나누어 전송을 하는데, 이 조각을 패킷이라고 불리운다.

 

TCP패킷 추적은 어떻게 할까?

예를 들어 1,2,3번 사람이 서울에서 출발하여 부산으로 간다고 가정할 때. ABC가 순차적으로 가는 상황에서 B가 길을 잘못 들어서 분실되었다고 할 때, A,C만 보고 다왔다고 착각할 수 있기 때문에, 각 패킷에 1,2,3이라는 번호를 부여하여 패킷의 분실 확인을 한다. 즉 목적지에서 재조립을 한다.

 

TCP의 흐름

TCP flow

socket : 소켓을 생성.

bind : IP 주소와 포트 번호를 생성한 소켓에 결합.

listen : 클라이언트로부터 연결 요청이 수신되는지 예의 주시한다.

accept : 요청이 수신되면 받아들이고 데이터 통신을 위한 소켓을 생성.

 

 

 

UDP ( User Datagrame Protocol ) 

 


  • 비연결형 프로토콜이다.(데이터그램 방식 사용)
    • 각 패킷은 서로 다른 경로로 전송된다.
    • 각각의 패킷은 독립적인 관계를 지니게 된다.
    • 데이터그램(메시지)단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
  • UDP 헤더의 CheckSum필드를 통해 최소한의 오류만 검출한다.
    • UDP는 흐름제어,오류제어, 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다.
  • 소켓 대신 IP를 기반으로 데이터를 전송한다.
    • 서버와 클라이언트는 1:1, 1:N, N:M 등으로 연결될 수 있다.
  • 종종 클라이언트는 서버로 짧은 요청을 보내고 짧은 응답을 기대한다.
    • 만약 요청 또는 응답이 손실된다면 클라이언트는 time out 이 되고 다시 시도할 수 있으면 된다.
  • 코드가 간단할 뿐만 아니라 TCP처럼 초기연결설정에서 요구되는 프로토콜보다 적은 메시지가 요구된다.
    • 서버 소켓과 클라이언트 소켓의 구분이 없다.
  • UDP를 사용한 것은 DNS가 있다.
    • 어떤 호스트 네임의 IP 주소를 찾을 필요가 있는 프로그램은 DNS 서버로 호스트 네임을 포함한 UDP패킷을 보낸다.
    • 이 서버는 호스트의 IP 주소를 포함한 UDP패킷으로 응답한다.
    • 사전 연결 설정이 필요하지 않으며 그 후 에 해제 설정 또한 필요가 없다.

 

UDP의 흐름

 

요약 테이블


 

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

DNS Round Robin  (0) 2021.05.14
HTTP와 HTTPS  (0) 2021.05.11
TCP - handShake  (0) 2021.05.04
HTTP의 GET과 POST  (0) 2021.05.03
[CS]_Network 핵심 요약 정리  (0) 2021.04.10

댓글