TCP 와 UDP

2021. 7. 17. 16:38네트워크

TCP(Transmission Control Protocol) - 연결 지향적 프로토콜

연결 지향적 프로토콜: 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 프로토콜


TCP의 특징

1. 신뢰성 보장(Reliable)

  • Sequence Number와 Ack Number를 통해 신뢰성 있는 데이터를 전송한다.
  • TCP의 구성 특성상 패킷 손실, 중복, 순서바뀜 등이 없도록 한다.
  • IP계층의 신뢰성 없는 서비스를 보완한다.

 

2. 연결지향적(Connection-Oriented) 

  • 느슨한 연결의 성격을 가지고 있다. 
  • 연결의 설정(3-way handshaking)과 해제(4-way handshaking)를 한다. 

 

3. 데이터의 전송 순서 보장

  • 데이터의 순서 유지를 위해, 각 바이트마다 번호를 부여한다. 

 

4. 데이터의 경계 구분 없음 - byte stream service

  • TCP계층과 상위 계층의 응용 계층 간 데이터를 주고 받는 과정을 byte들의 연속적인 흐름으로 본다.
  • 이를 묶어 세그먼트화하여 전송한다. 

 

5. 데이터 흐름 제어  

  • 송신 및 수신 속도를 일치시키는 작업을 한다.
  • stop and wait: 전송한 패킷에 대한 확인 응답을 받고 나서 그 다음 패킷을 전송하는 방법
  • sliding window: 수신 측에서 수용 가능한 윈도우 크기만큼 송신 측에서 확인응답 없이 세크먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어 기법이다.

 

6. 혼잡 제어 

  • 네트워크가 혼잡하다고 판단될 때, 데이터 전송속도를 강제적으로 줄인다.
  • 느린 시작, 혼잡 회피, 수신 윈도우 및 혼잡 윈도우 크기 결정 등이 있다.
  • 호스트와 라우터를 포함한 넓은 관점에서의 전송 문제를 다룬다. 

 

6. 연결의 설정(3-way handshaking)과 해제(4-way handshaking)

 

7. 전이중(Full-Duplex) 서비스

  • 호스트 간 각각의 프로세스가 서로 동시에 세그먼트를 전달할 수 있다. 

 

8. 멀티캐스트 불가능

  • 1:1통신을 하므로 유니캐스트 통신을 한다.
  • 단일 수신자와 단일 송신자 간에 단일 경로 연결이 설정된다. 

TCP의 단점

  • 데이터로 보내가 전에 반드시 연결이 형성되어야 한다.
  • 1:1 통신만 가능하다.
  • 고정된 통신 선로가 최단선이 아닐경우 상대적으로 UDP보다 데이터 전송속도가 느리다.

TCP의 헤더

TCP헤더 

 

 

Flag Bit


TCP/IP

  • TCP와 IP를 합쳐 부르는 말이다.
  • IP주소 체계를 따르며, TCP의 특성을 활용한다.
  • 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 한다. 
  • 데이터의 정확성 확인은 TCP가, 패킷을 목적지까지 전송하는 일은 IP가 담당한다. 
  • TCP/IP의 4계층
    TCP/IP는 OSI 참조 모델과 달리 표현계층, 세션계층을 응용계층에 다 포함시키고 있지만, 사실상 TCP/IP Model의 Application 계층 하나에서 Application, Presentatiom, Session 계층의 구현을 다 하고 있다고 이해하는 게 올바르다. 

 

  • LINK 계층 : 물리적인 계층, LAN, WAN, MAN과 같은 네트워크 표준과 관련된 프로토콜을 정의 하는 영역
  • IP 계층 : 데이터 경로 설정, 특정한 규칙 없음, 오류 발생하면 다른 임의의 경로로 변경
  • TCP/UDP(전송) 계층 : 데이터의 실제 송수신, IP 계층에서 발생한 문제를 해결
  • APPLICATION 계층: 서버와 클라이언트를 만드는 과정에서 프로그램의 성격에 따라 정한 데이터 송수신에 대한 약속(규칙)

 


UDP(User Datagram Protocol)

비연결형 서비스를 지원하는 프로토콜


UDP 특징

1. 비연결성이고, 신뢰성이 없으며, 순서화되지 않은 데이터그램 서비스를 제공

 

 

2. 빠른 요청과 응답 및 멀티캐스팅이 가능하다. 

  • 실시간 통신 또는 응용계층 프로그램에 적합하다.
  • 1:n의 여러 다수 지점에 동시 전송이 가능하다(멀티캐스팅)
  • 전송속도에 제한이 없다. 

 

3. 헤더가 단순하다. 

고정크기의 8바이트만 사용한다. 

 

 

4. 데이터 전송 단위 및 최대 데이터 크기

  • 전송단위: 메세지
  • 최대 데이터 크기: 65,507바이트

 

5. 패킷 오버헤드가 적어 네트워크 부하가 감소되는 장점이 있다. 

 

 

6. 사용사례

  • 도메인 이름 서비스(DNS), 음성 인터넷 프로토콜(VoIP), TFTP, IP터널, IPTV, 비디오 스트리밍, 온라인 게임

 


UDP의 단점

  • 데이터의 신뢰성이 없다.
  • 의미있는 서버를 구축하기 위해서는 일일이 패킷을 관리해주어야 한다. 

UDP의 헤더

UDP의 헤더

 

필드 내용 크기(bits)
Source Port, Destination Port 송수신 애플리케이션의 포트 번호 16
Length 헤더와 데이터 포함 전체 길이 16
Checksum 헤더와 데이터의 에러 확인 용도. UDP는 에러 복구를 위한 필드가 불필요하기 때문에 TCP 헤더에 비해 간단 16

TCP와 UDP의 공통점과 차이점

 

공통점

  • 포트 번호를 이용하여 주소를 비교한다. 
  • 데이터 오류 검사를 우한 체크섬을 이용한다.

 

차이점

  TCP UDP
연결방식 연결형서비스 비 연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서가 바뀔 수 있음
수신 여부 확인 수신 여부를 확인함 수신 여부를 확인하지 않음
통신 방식 1:1 통신만 가능 1:1 / 1:N / N:N 통신 모두 가능
신뢰성 높음 낮음
속도 느림 빠름

 


출처

https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md#tcp%EC%99%80-udp

https://www.stevenjlee.net/2020/06/29/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-tcp-%EC%99%80-udp-tcp-vs-udp/

https://coding-factory.tistory.com/614

https://velog.io/@hidaehyunlee/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80-%EC%A0%84%EB%8B%AC%EB%90%98%EB%8A%94-%EC%9B%90%EB%A6%AC-OSI-7%EA%B3%84%EC%B8%B5-%EB%AA%A8%EB%8D%B8%EA%B3%BC-TCPIP-%EB%AA%A8%EB%8D%B8

 

'네트워크' 카테고리의 다른 글

GET메서드 & POST메서드  (0) 2021.09.21
CORS(Cross Origin Resource Sharing)  (0) 2021.09.21
HTTP와 HTTPS의 동작과정  (0) 2021.09.16
HTTP 요청/ 응답 Header  (0) 2021.09.15
OSI 7계층  (1) 2021.07.17