백엔드/HTTP

[HTTP] 인터넷 네트워크

kwang2134 2024. 7. 13. 15:54
728x90

IP [Internet Protocol]

인터넷 프로토콜이란 네트워크에서 어떤 정보를 송신하거나 수신하는 통신 규약이다.

통신을 위해서는 흔히 ip 주소라 불리는 주소를 사용하게 되고 32비트 체계인 IPv4와 128비트 체계인 IPv6가 있다.

지정된 IP 주소를 통해 패킷이라는 통신 단위로 데이터를 전달하게 된다.

 

IP 프로토콜은 출발지 주소와 목적지의 주소, 전송될 데이터 등의 정보를 가지고 있다.

출발지로부터 여러 노드들을 거쳐 목적지까지 데이터를 전달한다.

 

하지만 IP를 단독으로 사용하여 통신을 할 경우 한계가 있다.

 

1. 비연결성

패킷을 받을 대상이 없어도 전송이 가능하고 제대로 전달이 된 건지 알 수 없다.

 

2. 비신뢰성

중간에 패킷이 소실 되어도 전송자는 알 수 없다.

패킷의 크기가 크다면 패킷을 나눠서 전송하게 되는데 패킷이 각자 다른 경로로 가게 될 경우 원하는 순서로 도착을 보장할 수 없다.

 

3. 프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분할 수 있는 방법이 없다.

 

이러한 한계들로 인해 IP 프로토콜은 단독으로 사용되지 않는다.

이를 해결하기 위해 주로 TCP 프로토콜이 함께 사용된다.


TCP [Transmission Control Protocol]

전송 제어 프로토콜 (TCP)은 IP 프로토콜의 문제점을 보완해 준다.

 

1. 연결 지향적 - 3 way handshake

  1. 클라이언트 -> 서버 : 접속 요청
  2. 서버 -> 클라이언트 : 요청 수락 및 접속 요청
  3. 클라이언트 -> 서버 : 요청 수락

클라이언트 -> 서버 : 데이터 전송

 

연결이 되었는지 확인을 한 후에 데이터를 전송하는 방식이다,

물리적으로 연결이 된 것은 아니나 논리적 연결을 통해 통신을 하여 수신을 확인하고 데이터를 전송하기 때문에 IP의 비연결성을 보완할 수 있다.

 

2 전달 보증

데이터를 전달받았다면 전달받았음을 알려주는 패킷(ACK)을 전송해 전달이 정상적으로 이루어졌는지 확인한다.

만약 데이터를 전달하고 전달받았다는 연락이 오지 않는다면 데이터를 다시 전송하고, 전달 받았다는 연락이 온다면 데이터가 잘 전송되었다는 것을 알 수 있다.

 

3. 순서 보장

TCP는 데이터의 순서를 보장하기 위해 시퀀스 번호와 ACK 번호를 사용한다.

각 패킷에는 고유한 시퀀스 번호가 부여되고, 수신측은 받은 패킷의 시퀀스 번호를 기반으로 ACK 번호를 생성해 응답한다. 이를 통해 송신측은 어떤 데이터까지 성공적으로 전송되었는지 알 수 있고 만약 패킷이 의도한 순서대로 도착하지 않았거나 중간에 유실된 경우, 수신측은 마지막으로 정상 수신된 데이터의 다음 시퀀스 번호를 ACK 번호로 보내 재전송을 요청한다. 송신측은 이를 받아 해당 시퀀스 번호부터 데이터를 다시 전송한다.

즉 패킷이 중간에 유실되거나 잘못된 순서로 도착할 경우 정상적으로 수신된 패킷의 다음부터 다시 새로운 데이터로 전송받는 다는 말이다.

 

4. port

같은 IP 내에서도 port로 세분화하여 프로그램을 구분하여 통신이 가능하게 해 준다.

출발지와 목적지 port정보를 가지고 각 프로그램이 사용하는 포트에 맞춰 통신을 한다.


UDP [User Datagram Protocol]

사용자 데이터그램 프로토콜로 TCP와 같은 전송 계층의 프로토콜이다.

 

하지만 TCP와는 다르게 IP의 기능에 port와 체크섬 기능 정도만 추가되어 비연결성이고 신뢰성이 낮다.

비연결성이다 보니 연결하는 과정이 생략되어 속도가 빠르다는 장점이 있다.

 

 

728x90

'백엔드 > HTTP' 카테고리의 다른 글

[HTTP] 동시 요청 멀티쓰레드  (1) 2024.07.18
[HTTP] 헤더  (0) 2024.07.17
[HTTP] 메서드  (0) 2024.07.15
[HTTP] HTTP 구조 & 무상태 프로토콜  (0) 2024.07.13