[HTTP] 인터넷 네트워크

Web, HTTP 모두 인터넷 네트워크망에 기반하여 동작한다. 따라서, HTTP 학습을 위한 사전 기본 학습의 개념으로 인터넷 통신, IP, TCP, UDP, PORT, DNS에 대해 간단하게 알아보자.


인터넷에서 컴퓨터 간 통신

만약 클라이언트와 서버가 바로 옆에 붙어 있다면 단순하게 케이블을 연결해 요청을 보내고 응답을 받는 방식을 사용하면 될 것이다. 하지만, 둘이 멀리 떨어져 있어 인터넷 망을 거쳐야 한다면 중간에 수많은 노드(서버)를 거쳐야 한다.

이때 어떤 규칙을 사용해서 넘어가게 될까? 이를 이해하기 위해 IP에 대한 학습이 필요하다. 

 

IP(Internet Protocol)

복잡한 인터넷 망에서 데이터(메시지)를 보내기 위해서는 최소한의 규칙이 필요하다. 이때 IP 주소를 사용하게 되는데, 클라이언트가 IP 주소를 부여 받아야 한다. 또한 메시지를 받는 서버 또한 IP 주소가 필요하다.

이때 IP의 역할은

  • 지정한 IP 주소에 데이터를 전달
  • 패킷(Packet)이라는 통신 단위로 데이터를 전달

즉, 메시지를 그냥 보내는 것이 아니라, IP 패킷의 규칙에 맞게 전송되어야 한다. 

클라이언트는 출발지 주소를 가지고 해당하는 목적지 주소를 향해 패킷을 전달한다. 

이 패킷을 전달 받은 서버는 요청에 대해 OK라는 응답을 하기 위해 클라이언트에서의 과정과 마찬가지로 패킷을 생성하여 클라이언트로 전송한다. 

요청(클라이언트)과 응답(서버)의 메시지 전송 과정에서 둘의 경로는 다를 수 있다. 

 

하지만, 위와 같은 방식(IP)만으로는 다음과 같은 한계가 있다.

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송
  • 비신뢰성
    • 중간에 패킷이 사라지는 경우
    • 패킷이 순서대로 오지 않는 경우
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우

이 많은 문제들을 해결하기 위해 TCP를 사용한다. 


TCP

우선 인터넷 프로토콜 스택의 4계층으로 나타내면 다음과 같다.

전송 절차는 다음과 같다.

Web과 HTTP를 공부하는데는 IP 프로토콜까지만 이해해도 충분하다. 

 

TCP/IP 패킷의 정보는 아래와 같이 구성된다.

이렇게 해서 보내기 때문에 TCP는 이 정보들을 가지고 IP의 문제를 해결할 수 있다.

 

TCP는 전송 제어 프로토콜로 여러 특징들이 있다.

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

연결 지향 : 3-way handshake

이것은 개념적으로만 연결이 된 것이지, 물리적으로 연결된 상태는 아니다. 논리적인 연결이다. 

데이터 전달 보증

클라이언트가 데이터를 보냈는데 서버에서 아무런 응답이 없다면, 문제가 발생한 것으로 생각한다. 

순서 보장

 

UDP

UDP는 TCP와 같은 계층에 있는 프로토콜로 기능이 거의 없고 아래와 같은 특징이 있다.

  • 비연결 지향
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 유사하지만, PORTChecksum(에러 확인)이 추가됨
  • 애플리케이션에서 추가 작업 필요

PORT

그렇다면 아래처럼 한 번에 둘 이상 연결해야 한다면 어떻게 할까?

위와 같은 상황에서 클라이언트는 한 번에 여러 서버와의 통신이 필요하다. 그럼 이때 날아오는 여러 패킷을 어떻게 구분할까?

이 상황에 사용하는 것이 PORT이다. 쉽게 말하면, IP는 목적지 서버를 찾는 것이고, Port는 서버 안에서 돌아가는 애플리케이션을 구분하는 것이라 생각하면 되고 아래의 그림처럼 이루진다.

정리하면, Port는 같은 IP 내에서 프로세스를 구분하는 용도이고 아래와 같은 예시를 보일 수 있다.

Port는 보통 0 ~ 65535번까지 할당이 가능하지만, 0~1023번대는 잘 알려진 포트(Well-known Port)라 부르며 그 용도가 정해져있어 사용하지 않는 것이 좋다. 

  • FTP : 20, 21
  • TELNET : 23
  • HTTP - 80
  • HTTPS -443

DNS

IP는 200.200.200.xxx와 같은 형식으로 되어있고 이는 기억하기 힘들다. 또한, IP는 변경될 여지가 있다. 그래서 DNS라는 것을 사용한다. 도메인 명을 등록을 하고 이를 IP 주소로 변경해주는 것이다. 

 

'HTTP' 카테고리의 다른 글

[HTTP] HTTP 메서드  (0) 2023.01.13
[HTTP] HTTP 기본  (0) 2022.08.10
[HTTP] URI와 웹 브라우저 요청 흐름  (0) 2022.08.05