2.3.2 전송계층 : tcp, udp

yeonseong Jo·2023년 5월 27일
0

SEB_BE_45

목록 보기
26/47
post-thumbnail

이전에 간단하게 설명했었는데,
tcp(transmission control protocol)과
udp(user datagram protocol)은
3계층인 전송계층에서 사용되는 프로토콜이다.

이번엔 이 tcp와 udp에 대해 조금 더 다뤄보고자 한다.


tcp? udp?

tcp와 udp는
tcp/ip 4계층에서 2계층(인터넷 계층)과
4계층(어플리케이션 계층)을 중개하는 역할을 하지만,

tcp는
데이터 전송 표적 기기 까지의 전송과
전송하는 패킷들의 순서를 보장하는
연결 지향적 프로토콜이며

udp는
표적 기기까지 전송과 패킷 순서가 보장되지 않지만,
tcp에 비해 단순하고 빠른 데이타 그램 지향적 프로토콜이다.

따라서 데이터의 신뢰성을 중요시 하는 경우 tcp로
실시간 통신이 중요한 경우 udp를 사용한다.


tcp 3-way handsake

tcp의 연결 방식은 3단계로 이루어져 있다.

receiver가 데이터를 요청하면,

  1. SYN
    sender는 receiver와 연결 설정을 위해
    SYN(Synchronize Sequence Number)를 보내며,
    이 요청은 receiver에게 통신을 시작한다는 의미이다.
  2. SYN/ACK
    receiver는 받은 요청을 바탕으로
    SYN/ACK(Acknowledgement)를 응답하며,
    1단계에서 받은 SYN을 받았다는 의미이다.
  3. ACK
    다시 sender가 receiver에게 받은 ACK를 receiver에
    전송하며,
    신뢰성 있는 연결을 보장한다는 의미이다.

위와 같이 신뢰성을 보장받은 뒤 데이터를 보낸다.


udp

tcp의 경우 3-wak handsake를 통해
연결의 신뢰성을 보장해야 하기 때문에 느릴 수 밖에 없다.

실시간 통신이 이뤄져야 하는 어플리케이션의 경우
(화상통화, 실시간 스트리밍 서비스, 인터넷 기반 전화서비스 등)
속도를 우선시 해야 하기 때문에 tcp 통신 방식 보단
udp 통신 방식이 유리하다.

udp 연결 방식은 tcp와 같이 신뢰성을 확인하지 않고,
receiver가 요청하는 즉시 바로 패킷을 보내는 간단한 방식이다.

이 때문에 속도는 tcp에 비해 유리한 것이다.

하지만, udp의 연결 방식으로 패킷을 전송하는 도중
손실이 되면 다시 전송하지 않는다.
따라서 udp 연결 방식을 사용하는 어플리케이션은
패킷의 오류, 손실, 중복을 허용할 수 있어야 한다.

profile
뒤(back)끝(end)있는 개발자

0개의 댓글