TCP UDP

김원종·2023년 7월 26일
0

인터넷 프로토콜 스택의 4계층

프로토콜 계층

Hello라는 메시지에 TCP 정보를 하나 씌워준다 -> TCP정보 밖에 또 IP와 관련된 정보를 씌운다.

근데 패킷이란 뭘까?
패키지 즉 수화물이라는 말과 덩어리라는 뜻하는 버킷이라는 것의 합성어이다!!!

TCP/IP 패킷 정보

  • IP만으로 해결되지 않았던 순서같은 문제가 해결된다!! 순서 검증 정보들이 들어가기때문에!!

TCP 특징
전송 제어 프로토콜 ( Transmission Control Ptotocol )
[ 전송을 제어를 한다는 뜻]

  • 연결지향 - TCP 3 way handshake( 가상연결 )
    [ 상대방과 연결이 되었는지 확인을 하고 전송을 한다 ]

  • 데이터 전달 보증
    [ 내가 보낸 메시지가 누락되면 내가 알수있다 ]

  • 순서 보장

  • 신뢰할 수 있는 프로토콜

  • 현재는 대부분 TCP 사용

실제로는 더 많은 기능이 있다!!

  1. 클라이언트에서 서버로 SYN이라는 메시지를 보낸다 .

  2. 서버에서 도착을 확인하고 ACK라는 메시지를 클라이언트에게 보낸다 .

  3. 클라이언트는 연결을 요청하는 ACK를 보낸다 .
    [ 양쪽에서 SYN과 ACK를 보내서 클라이언트도 서버를 서버도 클라이언트를 믿을수 있다 ]

  4. 연결이 되고 나면 데이터를 전송한다!


클라이언트가 SYN메시지를 보냈을때 서버에서 응답이 없으면 연결이 안되고 메시지를 보내지 않을것이다

실제 물리적으로 연결된것이 아니라 개념적으로 연결된것이다

물리적으로 연결된것은 과거 전화를 할때 중간 중계소에서 전화포트를 직접 연결해주어 연결했지만 TCP연결은 클라이언트와 서버가 그냥 연결이 되었나보다 SYN 과 ACK를 주고 받아서 그렇게 예측하는것이다.


SYN : 접속 요청
ACK : 요청 수락
참고 3.의 ACK 와 함께 데이터 전송 가능


데이터 전달 보증

TCP가 붙게되면 데이터 전송을 할때 서버에서 데이터를 잘 받았음을 알려준다

순서 보장

1,2,3을 보냈다고 가정했다고 하면 서버가 만약 1,3,2 순서로 도착하게 되면 내부적으로 최적화 하는 로직에 따라 다르겠지만 기본적으로는 순서가 꼬이면 2번부터 다시보내라고 클라이언에게 답을 준다. 물론 서버에서 내부적으로 최적화를 할수는 있다.
답을 받은 클라이언트는 다시 2번부터 보낸다.

이게 어떻게 가능한가??

패킷을 잘 보면 전송제어정보 , 순서정보 , 검증정보들이 추가가되어 있기 때문에 가능한것이다!!


UDP 프로토콜
사용자 데이터그램 프로토콜 ( User Datagram Protocl )

  • 하얀 도화지에 비유 ( 기능이 거의 없음 )
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만 , 단순하고 빠름
  • 정리
    • IP와 거의 같다. +PORT + 체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요

IP위에 PORT가 추가되는데 TCP에도 PORT가 있는데 PORT는 하나의 IP에서 여러 애플리케이션이 실행되고 있으면 애플리케이션의 패킷을 구분하는것이다! 하나의 PC에서 여러개를 실행하고 있으면 여러개의 패킷이 오기때문에 애플리케이션대로 구분해야한다!!

체크섬은 메시지에대해서 제대로 온건지 검증해주는 데이터 정도가 추가된것이다.

UDP를 굳이 사용하는이유는??

장점이 존재한다!!
TCP는 장점이 많지만 3 way handshake 하는데 시간이 많이 소요된다. 연결을 확인하고 여러개의 데이터들을 담으면 데이터자체도 커지고 전송속도도 더 빠르게 만들기 어렵다 . 더 최적화하고 싶을때 할수가 없다 즉 TCP는 손을 댈수가 없다.

그런데 만약 직접 수정하고싶다면?? UDP를 사용하면 가능하다!!
최근들어 UDP가 각광을 받고있는데 TCP프로토콜이 90프로 이상 점유했는데 시대가 바뀌면서 웹브라우저에서 HTTP통신을 할때 HTTP3스펙에서 SYN과 ACK를 보내야하는 과정을 다 줄이고자 UDP프로토콜을 사용하면서 주목을 받고있다.

profile
개린이

0개의 댓글