TCP & UDP

yshjft·2022년 2월 4일
0

네트워크

목록 보기
10/18

✔︎ TCP(Transmission Control Protocol)

  • 데이터를 세그먼트 단위로 전송
  • 연결형 서비스로서 3-way handshaking을 통해 연결 설정하고 4-way handshaking을 통해 연결을 해제
  • 흐름제어와 혼잡제어 제공
    • 흐름제어: 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
    • 혼잡제어: 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
  • 높은 신뢰성 보장
  • UDP 보다는 느린 속도
  • IP와 함께 사용

TCP/IP

  • IP기반에 TCP가 사용되어서 함께 불리게 됨
  • 데이터가 의도된 목적지에 닿을 수 있도록 해주는 프로토콜
  • IP: 패킷을 목적지까지 전송
  • TCP: 데이터의 정확성 확인

3 way handshake

  • STEP 1
    client → (SYN) → server

  • STEP 2
    server → (SYN + ACK) → client

  • STEP 3
    client → (ACK) → server

4 way handshake

  • STEP 1
    client -> (FIN) -> server

  • STEP 2
    server -> (ACK) -> client

  • STEP 3
    server -> (FIN) -> client

  • STEP 4
    client -> (ACK) -> server

🤨 왜 연결 종료는 4단계인가?

client가 데이터 전송을 마쳤다고 하더라도 server는 아직 보낼 데이터가 남아있을 수 있기 때문에 FIN에 대한 ACK만 보내고 데이터를 모두 전송한 후에 server도 FIN을 보낸다

🤨 만약 Server에서 FIN플래그를 전송하기 전에 전송한 패킷이 FIN 패킷보다 늦게 도착한다면 어떻게 될까?

client에서 FIN 플래그를 받은 후 일정 시간 기다린 후(TIME-WAIT) 연결을 종료하기 때문에 해당 문제를 해결할 수 있다.

TCP 헤더

Sequence Number

송신자가 보내는 데이터 바이트 순서이다.

Ex) 송신자 3000bytes의 데이터를 보낸다고 가정
첫번째 sequence number: 1
두번째 sequence number: 1001
세번째 sequence number: 2001

ACK Number

받은 데이터에 대한 응답이다.(앞으로 받아야할 다음 데이터의 Sequence Number이다.)

Ex) sequence number=1 -> acknowledgement number=1001

Flag Bit

✔︎ UDP(User Datagram Portocol)

  • 데이터를 데이터그램 단위로 전송
  • 비연결형 서비스로 따로 연결 설정을 하지 않는다
  • 신뢰성이 낮다
    • 흐름제어, 오류제어, 또는 손상된 데이터 재전송을 하지 않는다
  • TCP보다 속도가 빠르다

UDP 헤더

✔︎ TCP와 UDP의 공통점

  • 포트 번호를 이용하여 주소를 지정한다.
  • 데이터 오류를 검사하기 위한 checksum이 존재한다.

✔︎ TCP와 UDP의 차이점

TCPUDP
연결형 플로토콜비연결형 프로토콜
데이터의 경계를 구분하지 않음(Byte-Stream Service)데이터의 경계를 구분함(Datagram Service)
신뢰성 있는 데이터 전송(데이터의 재전송 존재)비신뢰성 있는 데이터 전송(데이터의 재전송 없음)
일 대 일(Unicast) 통신일 대 일, 일 대 다(Broadcast), 다 대 다(Multicast) 통신
profile
꾸준히 나아가자 🐢

0개의 댓글