HTTP - IP, TCP, UDP

Kim Dong Kyun·2023년 4월 11일
1
post-thumbnail
post-custom-banner

IP(Internet Protocol)

  • 클라이언트 -> 서버까지 연결하는데 여러 노드들로 구성된다.

  • 클라이언트 IP -> 서버 IP 로 전송하는 데 여러 노드들을 거치는 방식이다.

  • 패킷(Packet) 이라는 단위로 송,수신 한다.

IP 프로토콜의 한계

비연결성

패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송

우펀같은 친구다. 수신자가 있건 말건 우편번호로 그냥 쏜다

비신뢰성

중간에 패킷이 사라지면?
패킷이 순서대로 안오면?

그대로 유실된다.

예를 들어 Hello(1) World(2) 순서로 클라이언트가 송신 했는데, 2번 메시지가 더 적은 노드를 타고 전송된다면 서버는 World(2) Hello(1) 순서로 메시지를 전송받는다.

프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

게임도 하고 음악도 들으려면 어떻게해? 나는 하나의 IP를 할당받는데?

그래서, TCP/UDP 개념이 등장한다.


TCP (Transmission Control Protocol) 전송 제어 프로토콜

신뢰할 수 있는 프로토콜이다!

TCP 패킷에는 위와 같은 정보가 담겨 있다.

  1. 연결지향 - TCP 3 way handshake (가상 연결)
  • 연결되었는지 확인 하고 나서 데이터 전달한다.

SYN / SYN+ACK / ACK 이루어지지 않으면 메시지 자체를 보내지 않는다. (그러나 요즘은 최적화되어서 마지막 ACK 보낼 때 데이터도 같이 전송한다.

  1. 데이터 전달 보증
  • 전송이 누락되었으면 상대방이 알 수 있다.
  1. 순서 보장
    신뢰할 수 있는 프로토콜 현재는 대부분 TCP 사용
  • 위 그림과 같이 순서, 검증 정보 등이 TCP 세그먼트에 담겨있기 때문에 순서를 보장하여 처리가 가능하다.

Ex) 패킷 1, 2, 3 순서로 전송했는데 1, 3 순서로 수신 시 문제가 된 2부터 다시 보내! 라고 요청

TCP 3-way handshake 과정

즉, 신뢰성 있는 프로토콜이야!


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

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

과거엔 영상 전송 등 깨져도 되는 거 전송하는 용도였고, 실제로 TCP가 90% 이상의 점유율을 가지면서 영상 전송도 TCP로 하는 경우가 많았지만, WEB3.0 이후로 3-Way-Handshake 까지 줄여서 최적화 하려는 시도가 일어나고 있어서 UDP가 각광받고 있다.

PORT? (TCP, UDP)

같은 IP 내에서 프로세스 구분

TCP/IP 패킷 안에 출발/목적지 IP 와 더불어 출발/목적지 PORT 정보도 담겨있다.

  • 예를 들어 서버가 10000번 포트에서 클라이언트의 2000번 포트로 게임 데이터를 송, 수신한다.
  • 더불어 서버는 2000번 포트에서 웹브라우저의 데이터를 클라이언트의 80 포트로 송, 수신한다

이와 같이 같은 IP여도 포트를 나눔으로써 여러 개의 어플리케이션의 동시 송수신 이 가능하다.

예를 들어, IP가 아파트라면 PORT는 몇동 몇호~?

  • 할당 주소 예시

0 ~ 65535 할당 가능
0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음

ex) HTTP - 80 HTTPS - 443


DNS(Domain Name System)

아이피의 한계

  1. 아이피는 기억하기 힘들다 (200.200.200.2)?
  2. 아이피는 변경 될 수 있다.(200.200.200.2 -> 3)

위 한계에 따라서 등장한 것이 DNS이다.

출처 - 김영한님 HTTP 기본 강의

링크

post-custom-banner

0개의 댓글