[http] TCP, UDP

bbidag ㅣ 2023. 12. 29. 16:35

반응형

이전 글에서는 IP 프로토콜이 무엇인지, 한계가 무엇인지 알아보았다.

이번에는 TCP, UDP에 대해 알아보자.


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

계층 프로토콜
애플리케이션 HTTP, FTP
전송 TCP, UDP
인터넷 IP
네트워크 인터페이스 랜카드, 랜드라이버

 

인터넷 프로토콜 계층은 위와 같이 나뉘지만,

좀 더 적게 구분시키면 애플리케이션 (http) -> OS(TCP,UDP,IP) -> 네트워크 인터페이스(랜카드)와 같이 나뉠수 있다.

 

그럼 이 계층들을 통과하는 예시로 메세지의 전송 순서를 나타내보자.

 

메세지 전송 순서

  1. 프로그램이 hello, world! 메시지 생성
    • http 정보 생성
  2. socket 라이브러리 통해 전달
    • 애플리케이션 계층 -> 전송 계층으로 이동
  3. tcp 정보 생성, 메시지 데이터 포함
    • 전송 -> 인터넷 계층으로 이동
  4. ip 패킷 생성, tcp 데이터 포함
    • 인터넷 -> 네트워크 계층으로 이동
  5. 네트워크 인터페이스에서 eternet frame 정보 포함
    • 인터넷을 통해 데이터를 전송

 

최종적으로 전송 데이터에 포함된 정보

  • http, tcp, ip, ethernet frame

 

IP 패킷에 들어있는 정보

  • 출발지 ip, 목적지 ip, 전송 데이터
  • ip 패킷

 

TCP/IP 패킷 정보

  • IP 프로토콜의 부족한 점을 위해 추가적인 정보를 가짐
    1. 출발지 port, 목적지 port
    2. 전송제어, 순서, 검증 정보

 

TCP 특징

  1. 전송 제어 프로토콜
  2. 연결지향 - tcp 3 way handshake
    • 컴퓨터 꺼져있네? 연결 안해~
  3. 데이터 전달 보증
    1. 데이터를 전송함.
    2. 데이터를 잘 받았다고 응답해줌
  4. 순서 보장
    1. 패킷 1~3 순서로 전송
    2. 서버가 패킷 1,3,2 순서로 도착함.
    3. 패킷 2부터 다시 보내
      • 최적화가 따로 있을수는 있음
  • TCP가 신뢰성이 보장되는 이유
    • 위와 같이 전송제어, 순서, 검증 정보가 포함돼서 신뢰성이 보장됨.

 

TCP 3 way handshake (연결)

  1. syn (클라이언트 -> 서버)
  2. syn+ack (서버 -> 클라이언트)
  3. ack (클라이언트 -> 서버)
  4. 데이터 전송
  • syn: 접속 요청
  • ack: 요청 수락
    • ack시에 데이터도 같이 전송
  • 연결 지향을 한다는 의미는 중간 노드들은 데이터가 지나갔다는것에 대한 상태를 따로 가지지 않으므로
    논리적으로만 출발지, 도착지가 서로 연결됐다고 정한다.

 

TCP 4 way handshake (해제 - 해제에 대한 설명이 없어서 추가)

  1. FIN (클라이언트 -> 서버)
  2. ACK (서버 -> 클라이언트)
  3. FIN (서버 -> 클라이언트, ACK 패킷과 함께 전달하여 3-way로 표현될 수 있음)
  4. ACK (클라이언트 -> 서버)
  • 이해 편의상 클라이언트, 서버라고 표시했지만
    커넥션을 끊을 주체(active close)와 해제를 요청받은 자(passive close)로 표현하는 것이 더 적절하다. 

UDP 특징

  • 기능이 거의 없음
  • 연결 지향도 아님 — tcp 3 way handshake x
  • 데이터 전달 보증 x, 순서 보장 x
  • port, 체크섬 정도만 추가
  • 단순하고 빠름
  • 애플리케이션에서 추가 작업 필요
  • 최근에 각광을 받고 있음
  • 왜?
    • 웹브라우저 http/3 스펙에서 더 최적화하면서 udp를 쓰는거를 시도해보고 있음

 

PORT

  • 포트는 같은 ip 내의 애플리케이션들 사이에서 통신하기 위한 통로로 사용함.
  • tcp/ip 패킷에 포함
    • 출발지 ip/port, 도착지 ip/port
  • ip는 아파트라면 port는 동호수다.
  • 포트는 0~65535 할당 가능
  • 앞 번호대 포트는 기존에 사용하는게 많아서 사용하지 않는게 좋음

 

DNS

  1. ip는 외우기 어려움
    • 142.250.207.78 (X) -> google.com (O)
  2. ip는 변경될 수 있음
    • 도메인은 계속 사용 가능
  • 도메인으로 서버를 찾는 방법
    • 클라이언트가 dns 서버에 도메인 명으로 호출함
    • DNS 서버에서 ip를 가져다 줌
    • 받은 ip로 메세지를 보냄.

 

내용 출처

반응형

'개발 > web' 카테고리의 다른 글

[http] http 메소드, 메소드 속성  (0) 2024.01.07
[http] http 개요  (0) 2024.01.02
[spring] rest api 응답 컨텐츠 압축하기  (1) 2024.01.01
[http] URI와 웹 브라우저 요청 흐름  (0) 2023.12.31
[http] IP (인터넷 프로토콜)  (0) 2023.12.29