우아한 테크코스 테코톡 정주행 중
유익한 정보들이 많이 있어서 발표내용+a 로 정리하는 게시물입니다.
[10분 테코톡] 👨🏫르윈의 TCP UDP
전송 계층은 OSI 모델 의 핵심이며 애플리케이션/세션 계층과 네트워크 계층 간에 전송 서비스를 제공하는 역할을 합니다. 데이터가 올바른 애플리케이션 서비스로 전달되고 종단 간 데이터 통신이 성공하며 데이터 전달에 오류가 없는지 확인합니다. 기능을 수행하기 위해 전송 계층은 전송 제어 프로토콜(TCP) 및 사용자 데이터그램 프로토콜(UDP)과 같은 전송 계층 프로토콜을 사용 합니다.
전송 계층은 연결 지향 전송과 비연결 전송의 두 가지 유형의 서비스를 제공합니다.
📝 TCP 프로토콜(Transmission Control Protocol)
OSI 계층모델의 관점에서 전송 계층(4계층)에 해당
양종단 호스트 내 프로세스 상호 간에 신뢰적인 연결지향성 서비스를 제공
[ TCP 특징 ]
- 연결형 서비스로 가상 회선 방식을 제공한다.
- 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.
- 흐름 제어 및 혼잡 제어.
- 높은 신뢰성을 보장한다.
- UDP보다 속도가 느리다.
- 전이중(Full-Duplex), 점대점(Point to Point) 방식.
1. 신뢰성 있음 (Reliable)
패킷 손실, 중복, 순서바뀜 등이 없도록 보장
TCP 하위계층인 IP 계층의 신뢰성 없는 서비스에 대해 다방면으로 신뢰성을 제공
2. 연결지향적 (Connection-oriented)
같은 전송계층의 UDP가 비연결성(connectionless)인 것과는 달리, TCP는 연결지향적 임
연결 지향 전송은 TCP를 통해 수행됩니다. TCP는 연결 설정, 데이터 전송 및 연결 해제를 포함하는 3단계 프로세스입니다. 또한 데이터 전송 중에 수신자는 세그먼트 또는 세그먼트 그룹이 수신된 후 소스로 다시 승인을 보냅니다. 이 피드백 메커니즘으로 인해 손실된 데이터를 재전송할 수 있으므로 이러한 유형의 전송 서비스를 보다 안정적이고 안전하게 사용할 수 있습니다. 이 전송 서비스는 월드와이드 웹, 이메일, 파일 전송 등과 같이 전체 데이터 전송이 필수인 서비스에 정말 유용합니다.
3-way handshake - TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정(Connection Establish) 하는 과정
4-way handshake - TCP의 연결을 해제(Connection Termination) 하는 과정
[Network] TCP 3-way handshaking과 4-way handshaking - Heee's Development Blog
📝 UDP 프로토콜(User Datagram Protocol)
전송 계층의 통신 프로토콜의 하나 (TCP에 대비됨)
- 신뢰성이 낮은 프로토콜로써 완전성을 보증하지 않으나,
- 가상회선을 굳이 확립할 필요가 없고 유연하며 효율적 응용의 데이타 전송에 사용
[ UDP 특징 ]
- 비연결형 서비스로 데이터그램 방식을 제공한다
- 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.
- UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 신뢰성이 낮다
- TCP보다 속도가 빠르다
UDP는 비연결형 서비스이기 때문에, 연결을 설정하고 해제하는 과정이 존재하지 않습니다. 서로 다른 경로로 독립적으로 처리함에도 패킷에 순서를 부여하여 재조립을 하거나 흐름 제어 또는 혼잡 제어와 같은 기능도 처리하지 않기에 TCP보다 속도가 빠르며 네트워크 부하가 적다는 장점이 있지만 신뢰성있는 데이터의 전송을 보장하지는 못합니다. 그렇기 때문에 신뢰성보다는 연속성이 중요한 서비스 예를 들면 실시간 서비스(streaming)에 자주 사용됩니다.
비연결 전송은 UDP를 통해 수행됩니다. UDP는 데이터 전송만 포함하는 1단계 프로세스입니다. 이러한 유형의 전송에서 수신자는 세그먼트를 수신한 후 승인을 보내지 않습니다. 피드백 메커니즘이 없기 때문에 수신자가 모든 데이터를 수신했는지 여부는 자체적으로 고려하지 않으므로 이러한 유형의 전송 서비스가 더 빨라집니다. 이 전송 서비스는 온라인 스트리밍(예: 영화 또는 노래), 게임, VoIP, DNS, TFTP 등과 같이 도착 시간이 안정성보다 중요한 서비스에 정말 유용합니다.
💡 흐름제어(Flow Control)와 혼잡제어(Congestion Control)이란?
흐름제어는 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것입니다. 예를 들어 송신하는 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신자에서 문제가 발생하기 때문입니다.
혼잡제어는 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것입니다. 만약 정보의 소통량이 과다하면패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막습니다.
Ref.
https://mangkyu.tistory.com/15
https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html
https://learning.mlytics.com/the-internet/what-is-the-osi-model