본문 바로가기

HTTP

[HTTP] IP, TCP, UDP

반응형

1. IP

인터넷 프로토콜 (Internet Protocol)의 약자로 지정된 IP 주소로 패킷이라는 통신 단위로 데이터를 전달한다.

 

2. IP 패킷

패킷 안에 들어가는 내용 : 출발지 IP, 목적지 IP, 기타 내용

 

3. IP 프로토콜의 한계

  • 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송된다.
  • 비신뢰성 - 패킷이 가다가 사라지면? 패킷이 순서대로 안 오면?
  • 프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

우선 비연결성이란 내가 상대방에게 어떠한 패킷을 보냈는데 상대방 IP가 상대방이 맞는지, 혹은 상대방이 지금 통신이 되는지, 안 되는지 모른 채로 패킷을 보낸다는 것이다. 

비신뢰성을 이해하기 전에 클라이언트(출발지)에서 서버(목적지)로 패킷이 가는 과정을 이해해야 한다.

 

패킷 도착 과정 : 출발지 - 1번 서버 - 2번 서버 - 3번 서버 - 목적지

 

내가 목적지로 패킷을 보낼 때 한 번에 바로 가는 것이 아니라 여러 서버들이 노드처럼 엮인 채로 서로에게 전달해주며 최종적으로 목적지로 도착하게 되는데 만약 위에서 2번 서버가 현재 불능 상태라면 내가 보낸 패킷은 목적지로 가다가 서버 중간에서 사라지게 되는 꼴이 된다. 

패킷이 순서대로 안 오는 경우는 우리가 문자, 카톡을 보낼 때 한 번에 보낼 수 있는 양이 정해져 있듯이 내가 목적지로 Print Hello World 라는 단어를 보냈는데 한 번에 갈 수 있는 최대치가 Print Hello 까지라면 Print Hello World가 한번에 같이 가는 것이 아니라 Print Hello, World 이렇게 2개가 나뉘어서 가게 된다는 것이다. 그렇다면 노드처럼 섞인 서버에서 2개의순서가 바뀌어서 목적지에 도착한 순서가 World Print Hello 이렇게 바뀔 수도 있다는 것이다.

이러한 IP 프로토콜의 한계를 보완하기 위해 나온 것이 TCP, UDP이다.

 


 

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

인터넷 프로토콜 스택의 4계층 (4-3-2-1로 갈수록 상위 계층)

1. 애플리케이션 계층 - HTTP, FTP

2. 전송 계층 - TCP, UDP

3. 인터넷 계층 - IP

4. 네트워크 인터페이스 계층

 

TCP 패킷 정보

IP 패킷 정보보다 더 세분화된 것들이 들어가서 IP 프로토콜의 한계를 극복할 수 있다.

 

TCP 특징

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

 

TCP 3 way handshake

클라이언트 ㅡㅡㅡ 1. SYN ㅡㅡㅡ> 서버      //Synchronize

클라이언트  <ㅡㅡㅡ 2. SYN + ACK ㅡㅡㅡ 서버

클라이언트  ㅡㅡㅡ 3. ACK ㅡㅡㅡ> 서버

클라이언트  ㅡㅡㅡ 4. 데이터 전송 ㅡㅡㅡ 서버

SYN : 접속 요청 ACK : 요청 수락

이렇게 3가지 방식으로 서로간의 연결을 확인한다. 만약 서버가 꺼져버리면 서버쪽에서 응답이 없기 때문에 클라이언트 입장에서는 연결이 끊겼다라고 판단하여 데이터를 전송하지 않는다

 

데이터 전달 보증

클라이언트 ㅡㅡ 1. 데이터 전송 ㅡㅡ> 서버

클라이언트 <ㅡㅡ 2. 데이터 확인 OK ㅡㅡ 서버

서버쪽에서 데이터를 받았다고 다시 신호를 준다. (리턴 신호가 안 왔다면 뭔가 문제가 있음을 알 수 있다.)

 

순서 보장

클라이언트 ㅡㅡ 패킷 1,2,3 순서로 전송 ㅡㅡ> 서버 (패킷 1,3,2 순서로도착)

클라이언트 <ㅡㅡ 패킷 2부터 다시 보내 ㅡㅡ 서버

 

 


 

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

  • 기능이 거의 없음
  • 3 Ways Handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 단순하고 빠름
  • 애플리케이션에서 추가 작업 필요

 

 

 

반응형

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 상태 코드  (0) 2024.09.13
[HTTP] HTTP 알아보기 (특징, 구조, 비연결성, 무상태)  (1) 2024.09.11