HTTP

[http] 1. IP, TCP, UDP

김도유 2022. 11. 9. 22:08

📘 [인터넷 네트워크]

• 인터넷 통신

• IP(Internet Protocol)

• TCP, UDP

• PORT

• DNS

 

-인터넷에서 컴퓨터 둘은 어떻게 통신할까?

 

외국에 사는 친구에게 인터넷으로 메시지를 보낸다고 가정해보자.

메시지는 어떻게 중간의 수많은 노드라고 하는 서버들을 거쳐 넘어갈까?

 

📘1. IP(인터넷 프로토콜)

복잡한 인터넷망에서 외국에 사는 친구에게 메시지를 보내려면 최소한의 규칙이 존재한다.

규칙이란 바로 IP(인터넷 프로토콜)이다.

메시지를 주고 받기 위해서는 서버에 IP주소가 있어야 한다.

 

📖 인터넷 프로토콜 역할

• 지정한 IP 주소(IP Address)에 데이터 전달

• 패킷(Packet)이라는 통신 단위로 데이터 전달

    패킷(Packet) : 출발지 IP (예-100.100.100.1), 목적지 IP (예-200.200.200.2), 기타(메시지 등)

 

클라이언트 패킷 전달 : IP 200.200.200.2를 찾아 노드를 던진다
클라이언트 패킷 전달 : IP 100.100.100.1을 찾아 노드를 던진다.

 

하지만 IP프로토콜 방식에는 여러 한계가 있다.

IP 프로토콜의 한계

• 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송(대상 서버가 패킷을 받을 수 있는 상태인지 모름 )

• 비신뢰성 : 중간에 패킷이 사라지면? 패킷이 순서대로 안오면?

• 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

 

이러한 한계를 해결해주는 것이 바로  TCP UDP이다.

 

 

📘 2. TCP UDP

 

📖 TCP 특징

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

• 연결지향 - TCP 3 way handshake (가상 연결)

• 데이터 전달 보증

• 순서 보장

• 신뢰할 수 있는 프로토콜

• 현재는 대부분 TCP 사용

 

 

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

 

1. 미국에 사는 친구에게 Hello, world! 라는 메시지를 보내려고 한다.

2.  SOCKET 라이브러리를 통해 OS 계층에 메시지를 넘긴다.

3. 메시지를 포함하여 TCP 정보를 생성한다.

4. TCP 정보를 포함하여 IP 패킷을 생성한다.

      TCP 정보 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등..

                          IP만으로 한계가 있었던 순서 등의 문제 해결

5. 네트워크 인터페이스를 통해 이더넷 프레임(Ethernet Frame)이 포함되서 나간다.

 

 

 

📖 연결지향 - TCP 3 way handshake (가상 연결)

1. SYN (접속 요청): 클라이언트 -> 서버 

2. SYN(접속 요청) + ACK(요청 수락) : 서버-> 클라이언트 

3. ACK(요청 수락) : 클라이언트 -> 서버 

4. 데이터 전송

*참고: 3. ACK와 함께 데이터 전송 가능

 

 

📖 데이터 전달 보증

클라이언트가 서버에 데이터를 전송했을 때 서버에서 클라이언트에게 응답이 없다면

데이터 전달에 문제가 있음을 인지할 수 있다.

 

 

📖 순서 보장

다음은 UDP에 대해 알아보자.

 

📖 UDP 특징

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

• 하얀 도화지에 비유(기능이 거의 없음)

• 연결지향 - TCP 3 way handshake X

• 데이터 전달 보증 X

• 순서 보장 X

• 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

• 정리

    IP와 거의 같다. +PORT +체크섬 정도만 추가 (PORT에 대해서는 다음 글 참고)

    애플리케이션에서 추가 작업 필요

 

 

 

참고 : 인프런 김영한님 모든 개발자를 위한 HTTP 웹 기본 지식