TCP(Transmission Control Protocol), UDP(User Datagram Protocol)
TCP, UDP는 네트워크의 계층들 중 데이터의 전달을 담당하는 전송 계층에서 사용하는 프로토콜이다.
왜 알아야 할까?
- 데이터의 소실방지, 순서보장과 같은 웹 어플리케이션의 신뢰성, 성능 개선을 하는 중요한 역할을 한다.
- HTTP3.0에 도입된 QUIC의 배경이다.
헤더비교
- TCP Header 정보
헤더 정보들 중 플래그가 TCP의 특징과 관련이 있어 간단하게 설명하고 넘어가려고 한다.
FLAG | 역할 |
SYN | 연결 설정을 요구할때 보내는 플래그로 TCP 접속시에 가장 먼저 보내는 패킷이다. |
ACK | 최초의 SYN 패킷 이후에 전송되는 모든 패킷에 설정되는 플래그로, 상대방한테 패킷을 잘 받았다고 알려주는 역할을 한다. |
FIN | 더 이상 전송할 데이터가 없을 때 연결 종료를 요청하는 패킷이다. |
- UDP Header 정보
TCP헤더와 비교했을 때 매우 간단하다. 따라서 TCP와는 다른 방식으로 데이터를 전달한다.
TCP 개념과 특징
- 연결형 서비스
SYN, ACK패킷을 주고받으며 3-way handshaking 과정을 통해 연결을 설정한다.
FIN, ACK패킷을 주고받으며 4-way handshaking을 통해 연결을 해제한다. - 신뢰성 보장(Reliable transmission)
Sequence Number, Ack Number를 통해 데이터의 순서와 신뢰성을 보장한다. 만약 클라이언트가 서버로부터 ACK를 못받거나 ACK값이 중복으로 올 경우 제대로 송신하지 못한걸로 판단하고 데이터를 재전송한다. - 흐름제어(Flow control)
데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지한다. - 혼잡제어(Congestion control)
패킷 전송량을 조절하여 네트워크 내의 패킷 수가 넘치게 증가하게되는 네트워크 혼잡을 방지한다.
UDP 개념과 특징
- 비연결형 서비스
데이터를 주고받을 때 연결 절차를 거치지 않고 송신자가 일방적으로 데이터를 송신한다. 연결 과정이 없기 때문에 TCP보다 빠른 전송을 할 수 있다. - 신뢰성 없는 데이터를 전송한다.
정보를 주고 받을때 정보를 보내거나 받는다는 신호절차를 거치지 않는다. 따라서 데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
공통점 및 차이점
- 공통점
데이터 오류 검사를 위한 체크섬 존재 - 차이점
TCP | UDP | |
신뢰성 | 높음 | 낮음 |
전송속도 | 느림 | 빠름 |
사용되는 곳 | 메일, 파일전송 | DNS, 동영상, 음성데이터 |
통신 | 일대일 통신 | 일대일, 일대다(Broadcast), 다대다(Multicast) 통신 |
참고
UDP는 기본적으로 신뢰성이 낮고 제어 기능도 없지만, 추가적인 구현을 통해 TCP와 비슷한 수준의 기능을 가질 수도 있다.
UDP를 개조한 QUIC 프로토콜
QUIC(Quick UDP Internet Connections)는 UDP를 기반으로 TCP + TLS + HTTP 의 기능을 모두 구현하는 프로토콜이다. 하지만 QUIC은 TCP를 사용하지 않기 때문에 통신을 시작할 때 번거로운 3 Way Handshake 과정을 거치지 않아도 된다.
'CS' 카테고리의 다른 글
[OS] 인터럽트의 구동방식 이해하기 (0) | 2023.10.29 |
---|---|
[컴퓨터 구조] 폰 노이만 구조 (0) | 2023.09.16 |