TCP / UDP
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
.