WEB HTTP/HTTP 기본

TCP와 UDP프로토콜

진이최고다 2023. 2. 23. 22:44

인터넷프로토콜 4계층 역할

인터넷 프로토콜에는 4개 계층이 존재한다.

 

  • 애플리케이션 계층 HTTP, FTP 
  • 전송 계층 - TCP , UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층 - 램 카드, 램 드라이브

이전 인터넷통신 IP프로토콜 클라이언트에서 서버로 서로 IP로 데이터를 주고받는

인터넷 계층 IP프로토콜에서 발생했던 한계성, 수 많은 문제들을 보완해주는 역할을 TCP프로토콜이 해결해준다.

01

그림으로 설명하자면, 서버에 Hello 데이터를 전송하고싶다.  

  1. 애플리케이션 채팅프로그램 (SOCKET 라이브러리)를 통해서 OS계층에 데이터를 전달한다.
  2. OS계층에서 TCP프로토콜이 데이터에 TCP정보를 씌우고, IP프로토콜에 전달한다.
  3. IP프로토콜에서 IP와 관련된 정보를 입력해 IP패킷을 생성한다.이 생성된 패킷에는 IP,TCP, Hello데이터들이 있다. 
  4. 네트워크 인터페이스 LAN카드를 통해서 서버로 전송될때,Ethernet frame이 포함되어서 인터넷을 통해서 서버로 전송된다.

이더넷프레임은 램카드에 등록된 맥 주소로 물리적인 정보들이 포함되어있다.이더넷프레임까지 공부하려면 네트워크 밑바닥까지 들어가야하기때문에, 사실상 웹 HTTP공부를 하는데는 IP프로토콜까지만 깊이있게 공부하면 된다.

 


TCP 특징

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

  • 연결지향 - TCP 3 way handshake (가상 연결)
  • 데이터 전달 보증 • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

012

TCP 3 way handshake(가상연결)

IP프로토콜에서 클라이언트가 서버에 데이터를 전송했을 경우 서버가 오프인경우 비 신뢰성이 존재했는데

TCP에서는 클라이언트랑 서버와 SYN , SYN + ACK , ACK 요청을 주고받으며, 서로 연결되어있는지 확인하고 데이터를 전송한다. 이를 3 way handshake이라고 정의한다.

하지만 지금은 최적화가 되어있기 때문에, 마지막 3번 ACK순서에서 데이터도 같이 보낸다.

 

데이터 전달보장

IP에 TCP세그먼트와 데이터를 전송하게되면, 서버에서 데이터를 잘 받았다고 응답해준다, 

이로인해 서버에서 아무응답이 없으면, 문제를 바로 인지할 수 있다.

 

순서 보장

패킷데이터 단위가 클 경우, 1500Bype단위로 끊어서 전송하게되는데, 서버에 패킷이 순서대로 도착하지 않을 경우

잘못 도착한 데이터부터 다시 전송하라고, 클라이언트에 요청해서, 도착 순서가 보증이된다.

 

 

 


UDP 특징

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

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

 


PORT

사전적 의미 : 항구

01

한 클라이언트에서 동시에 여러개의 서버를 통신하며,  서버로 부터 패킷이 들어올 경우

게임에서 필요한 패킷인지, 웹 브라우저에서 필요한 패킷인지, IP프로토콜만으로 구분을 하는데 한계성이 있다.

그 IP패킷에 TCP프로토콜을 더해 TCP/IP 패킷을 묶어, 데이터를 주고 받는다.

IP는 목적지를 찾는거고, 서버안에 구동중인 애플리케이션을 구분하는게, 바로 PORT이다.

💡쉽게 비유하면   IP가 아파트, PORT는 동호수이다.


PORT 는 

0 ~ 65535까지 할당가능하고

0~ 1023은 잘 알려진 포트, 사용하지 않는 것이 좋다

 

FTP -  20, 21

TELNET -  23

HTTP - 80

HTTPS 보안이 추가된 443이 쓰인다.

 


DNS

도메인 네임 시스템(Domain Name System)

IP는 변경될 수 있고, 기억하기 어렵다.

DNS를 이용해서 전화번호부 같은 서버를 제공해서, 도메인명을 등록하고 아이피주소를 변환한다.

 

쉽게 말해서 

클라이언트에서 도메인서버에 google.com의 IP주소를 요청하고, DNS서버에서 아이피 주소를 응답받아 해당 아이피주소로 서버로 접속하게 된다.

 

 

 

 

 

 

출처 : 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식 by 우아한형제 김영한이사님