면접준비하기

TCP / UDP

코딩펭귄 2023. 2. 27. 01:57


TCP와 UDP 모두 네트워크 계층 중 전송계층에서 사용하는 프로토콜 입니다.

전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 데이터의 전달을 담당합니다.

 

 

1. TCP : transmission control protocol

- 정의 : 인터넷상에서 데이터를 메세지 형태로 보내기위해 IP와 함께 사용하는 프로토콜

( IP가 데이터의 배달을 처리한다면 TCP는 *패킷을 추적 및 관리 )

* TCP 특징 *

- 연결지향방식 ( = 패킷을 전송하기위한 논리적 경로를 배정함)

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

- 점대점 방식 (서버와 클라이언트는 1대1로 연결됨)

- 3 -way handshaking 과정을 통해 연결을 설정 ( = 목적지와 수신지를 확실히 해 정확한 전송을 보장하기위한 세션을 수립하는 과정 + 신뢰도를 확보해서 순서를 보장 ) & 4-way handshaking통해 연결 해제

- UDP 보다 속도가 느림 ( = 데이터 흐름제어나 혼잡제어와 같은 기능때문에 속도가 느림 (이러한 기능은 CPU를 사용하기때문에 속도에 영향을 줌)  * 요즘엔 하드웨어가좋아져서tcp로도 스트리밍한다고함 *

   => 연속성보다 신뢰성있는 전송이 중요할때 사용하는 프로토콜 ex.파일전송, http 통신, 이메일

 

2. UDP : user datagram protocol

- 정의 : 데이터를 데이터그램 단위로 처리하는 프로토콜

- 비연결형 프로토콜이므로 연결을 위해 할당되는 논리적인 경로가 없음 -> 각각의 패킷은 다른경로로 전송되고, 처리함

* UDP 특징 *

- 비연결 방식 ( 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않음 )

- TCP보다 속도가 빠르며 네트워크 부하가 적다 ( 이유 : 서로 다른 경로로 독립적으로 처리하고 순서부여x, 재조립x, 흐름&혼잡제어x)

- 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있음

- 파일전송과 같은 신뢰성보다는 연속성이 중요한 서비스에 자주 사용됨(실시간 streaming 서비스, 멀티미디어 등)

 

* UDP는 항상 신뢰성을 보장하지 않는가?
- UDP도 신뢰성을 UDP자체에서 보장하지 않는 것 뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있음.  

 

 

 

그런데 .. http/3부터는 더이상 tcp가 아니라 udp 위에서 동작한다 (https://evan-moon.github.io/2019/10/08/what-is-http3/)

면접질문에 자주 나오는 주제라 정리하긴 했지만, http/3에 대한 udp 기반의 quic 프로토콜 등등 관련된것들도 알고있는게 좋을것같다

 

 

 

참고링크

https://evan-moon.github.io/2019/10/08/what-is-http3/

https://mangkyu.tistory.com/15

 

.