본문 바로가기

Programming/컴퓨터 네트워크

🔵 UDP & TCP

 

 

🔵 UDP

 

 

UDP는 비연결형·비신뢰성 전송 방식을 제공하는 전송 계층 프로토콜로,
연결 설정 없이 데이터그램을 바로 전송하기 때문에 초기 지연이 낮고 구조가 단순한 것이 특징입니다


하지만 신뢰성을 보장하는 기능이 없어 패킷 손실이나 순서 뒤바뀜이 발생할 수 있습니다.
이런 특성 때문에 UDP는 지연에 민감한 실시간 서비스에서 주로 사용됩니다.

 


 

🔵 UDP의 장단점

 

UDP의 가장 큰 장점은 지연(latency)이 낮고 오버헤드가 적다는 점입니다. 

연결을 설정하지 않고 헤더도 단순하기 때문에 패킷을 즉시 전송할 수 있고,

실시간성이 중요한 서비스에서 유리합니다.

멀티캐스트·브로드캐스트를 지원한다는 점도 특징입니다.

반면 단점으로는 신뢰성을 보장하지 않는다는 점이 있습니다. 

재전송, 패킷 순서 보장, 흐름 제어·혼잡 제어 같은 메커니즘이 없어 

패킷 손실, 중복, 순서 뒤바뀜이 그대로 발생할 수 있습니다.

이런 보장은 애플리케이션 계층에서 직접 처리해야 합니다.

그래서 신뢰성이 중요한 서비스에는 적합하지 않습니다

 


 

🔵 UDP 체크섬

 

UDP 체크섬은 전송 중 데이터가 손상됐는지 확인하기 위한 오류 검출 메커니즘입니다.
UDP 헤더와 페이로드, 그리고 IP 정보 일부를 포함한 의사 헤더를 기반으로 계산한 값을 함께 전달하고,
수신 측은 동일한 방식으로 체크섬을 다시 계산해 값이 다르면 패킷을 손상된 것으로 판단해 폐기합니다.

UDP는 신뢰성을 보장하지 않기 때문에 오류를 검출할 뿐 재전송은 수행하지 않는다는 점이 특징이며,
IPv6에서는 체크섬 사용이 필수입니다

 


 

🔵 UDP 가 주로 사용되는 서비스

 

UDP는 연결 설정 없이 바로 전송할 수 있고 지연이 매우 낮기 때문에

실시간성이 중요한 서비스에서 주로 사용됩니다.


특히 패킷 일부가 손실되더라도 전체 흐름을 해치지 않는 서비스에 적합합니다.

대표적으로 음성·영상 스트리밍, VoIP, 온라인 게임이 있고

빠른 응답이 필요한 DNS 조회나 DHCP 같은 제어 프로토콜에서도 사용됩니다

 


 

🔵 전송후 대기 프로토콜

 

전송 후 대기 프로토콜은 송신자가 패킷을 하나 전송한 뒤

해당 패킷에 대한 ACK를 받을 때까지 다음 패킷을 보내지 않고 대기하는 방식입니다.


구현이 단순하고 동작이 명확하다는 장점이 있지만

한 번에 한 개 패킷만 전송할 수 있어 RTT가 길거나 대역폭이 큰 환경에서는 전송 효율이 매우 낮아진다는 한계가 있습니다.


이 방식은 신뢰성 보장을 위한 가장 기본적인 자동 재전송(ARQ) 기법입니다.

 


 

🔵 파이프라인 프로토콜

 

 

 

파이프라인 프로토콜은 송신자가 여러 패킷을 연속적으로 전송할 수 있도록 하는 방식입니다.


Stop-and-Wait처럼 한 패킷의 ACK를 기다리지 않고 

윈도우 크기만큼 패킷을 동시에 보내기 때문에 전송 효율을 크게 높일 수 있습니다.


이 방식은 네트워크의 RTT가 길거나 대역폭이 큰 환경에서 특히 효과적입니다.


대표적인 구현이 **Go-Back-N(GBN)**과 Selective Repeat(SR) 같은 

슬라이딩 윈도우 기반 ARQ 프로토콜입니다.

 


 

https://www.geeksforgeeks.org/computer-networks/difference-between-stop-and-wait-gobackn-and-selective-repeat/

 

 

🔵 SR(Selective Repeat)

 

Selective Repeat은 슬라이딩 윈도우 기반 ARQ 기법으로, 손실된 패킷만 선택적으로 재전송하는 방식입니다.


수신자는 패킷의 순서가 맞지 않더라도 수신 가능한 범위의 패킷은 모두 버퍼에 저장해 두었다가 

누락된 패킷이 도착하면 정상적으로 재조립합니다.


이 방식은 불필요한 재전송을 최소화해 효율이 높지만,

수신 측에서 패킷 버퍼링과 재정렬을 위한 관리가 필요해 구현 난도가 높다는 특징이 있습니다.

 


https://www.geeksforgeeks.org/computer-networks/difference-between-stop-and-wait-gobackn-and-selective-repeat/

 

 

 

🔵 GBN(Go-Back-N)

 

Go-Back-N은 슬라이딩 윈도우 기반 ARQ 방식으로

손실되거나 오류가 난 패킷 이후의 모든 패킷을 다시 전송하는 기법입니다.


수신자는 순서가 맞지 않는 패킷은 모두 폐기하고

송신자는 윈도우 내에서 ACK를 받지 못한 가장 오래된 패킷부터 다시 전송합니다.


구현이 단순하고 관리가 쉽다는 장점이 있지만,
손실이 발생하면 그 이후 패킷까지 모두 재전송되므로 불필요한 재전송이 많아질 수 있다는 비효율성이 단점입니다.

 


 

🔵 TCP

 

TCP는 연결형·신뢰성 보장 전송 방식을 제공하는 전송 계층 프로토콜입니다.


3-way handshake로 연결을 설정한 뒤 데이터를 주고받으며,
재전송, 순서 보장, 흐름 제어, 혼잡 제어 같은 메커니즘을 통해 신뢰성 있는 바이트 스트림을 제공합니다.

 

각 패킷의 순서를 관리하고 손실 시 자동 재전송을 수행하기 때문에
정확성이 중요한 애플리케이션에서 널리 사용되며,
대신 UDP보다 오버헤드가 크고 지연이 길어질 수 있다는 특성이 있습니다.

 


 

🔵 3 way handshake

 

 

3-way handshake는 TCP가 신뢰성 있는 연결을 설정하기 위해 수행하는 3단계 절차입니다.
먼저 클라이언트가 연결 요청을 의미하는 SYN을 보내고,
서버는 이를 수락하며 자신의 초기 시퀀스 번호를 함께 담은 SYN+ACK를 응답합니다.
마지막으로 클라이언트가 ACK를 다시 보내면 양측이 서로의 시퀀스 번호를 확인한 것으로 간주되어 연결이 성립됩니다.

이 과정을 통해 양쪽 모두 데이터 송수신 준비가 되었으며 초기 시퀀스 번호도 동기화되었음을 보장합니다.”

 


 

🔵 4 way handshake

 

 

 

4-way handshake는 TCP 연결을 양방향으로 종료하기 위한 절차입니다.


먼저 클라이언트가 데이터 전송 종료를 의미하는 FIN을 보내고,
서버는 이를 확인했다는 ACK를 응답합니다.

서버 측에서 처리해야 할 데이터가 모두 끝나면 서버도 FIN을 보내 연결 종료를 요청하고,
클라이언트가 마지막으로 ACK를 보내면 양측 연결이 완전히 종료됩니다.

송신 방향을 각각 독립적으로 닫기 때문에 총 네 단계로 이루어지는 것이 특징입니다.

 


 

🔵 TCP 빠른 재전송

 

TCP 빠른 재전송은 타임아웃을 기다리지 않고

패킷 손실을 더 빠르게 감지해 즉시 재전송하는 메커니즘입니다.


수신자는 특정 패킷이 누락되면 이후 패킷에 대해 같은 ACK 번호를 반복해서 보내는데,
송신자가 중복 ACK를 3번 연속으로 수신하면 해당 패킷이 손실된 것으로 판단하고 즉시 재전송을 수행합니다.

이를 통해 타임아웃 기반 재전송보다 훨씬 빠르게 손실을 복구할 수 있으며,
지연을 줄이고 전체 TCP 성능을 향상시키는 핵심 기능 중 하나입니다.

 


 

🔵  Congestion control

 

혼잡 제어는 TCP가 네트워크 혼잡을 방지하기 위해 전송 속도를 동적으로 조절하는 메커니즘입니다.


네트워크가 감당할 수 있는 범위 이상으로 패킷이 유입되면 손실이 발생할 수 있기 때문에,
TCP는 혼잡 윈도우(cwnd)를 기반으로 전송 가능한 데이터 양을 스스로 조절합니다.

초기에는 Slow Start로 cwnd를 빠르게 증가시키고

일정 수준 이후에는 Congestion Avoidance로 완만하게 증가시켜 혼잡을 피합니다.


패킷 손실이 감지되면, 중복 ACK 기반의 Fast Retransmit / Fast Recovery를 통해
cwnd를 줄이고 네트워크가 회복될 때까지 전송 속도를 다시 조정합니다.

결과적으로 혼잡 제어는 네트워크 전반의 안정성과 공정성을 유지하는 TCP의 핵심 기능입니다.

 

 


 

🔵  Flow control

 

 

흐름 제어는 TCP가 수신자가 처리할 수 있는 속도에 맞춰 송신자의 전송량을 조절하는 메커니즘입니다.
수신 측 버퍼는 크기가 제한되어 있기 때문에, 송신자가 너무 빠르게 데이터를 보내면 버퍼 오버플로가 발생할 수 있습니다.

이를 방지하기 위해 수신자는 자신의 버퍼 여유 공간을 기반으로 한 수신 윈도우(Rwnd) 값을 송신자에게 전달하고,
송신자는 이 값을 초과하지 않는 범위 내에서만 데이터를 전송합니다.

결과적으로 흐름 제어는 수신자 보호를 위한 조절 메커니즘이며,
네트워크 자체 혼잡을 다루는 혼잡 제어와는 목적이 다르다는 점이 특징입니다.

 


 

🔵  TCP 가 주로 사용되는 서비스

 

TCP는 신뢰성이 중요한 서비스에서 주로 사용됩니다.
데이터의 순서 보장, 손실 시 재전송, 흐름 제어와 혼잡 제어까지 갖추고 있어
전송 오류가 허용되지 않는 환경에서 적합합니다.

대표적으로 웹 서비스(HTTP/HTTPS), 

이메일(SMTP/IMAP/POP3), 파일 전송(FTP/SFTP), 데이터베이스 연결처럼
정확한 데이터 전달이 필수적인 애플리케이션들이 TCP를 기반으로 동작합니다.