HTTP (1) | Network

October 24, 2023

HTTPNetwork

이 글은 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.

모든 것이 HTTP 프로토콜 위에서 데이터를 주고 받기 때문에 HTTP를 학습해야한다.

이번 강의의 목표는


웹이나 HTTP도 전부 인터넷 네트워크 망에 기반하여 동작하기 때문에 우선 인터넷 네트워크에 대해 알아보자.

인터넷 네트워크

IP (Internet Protocol)

복잡한 인터넷망에는 최소한의 규칙이 필요하고 그것이 바로 IP이다.

IP의 역할

IP의 한계


TCP,UDP

IP의 한계를 TCP가 해결해준다!

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

채팅 프로그램으로 Hello, world! 라는 메세지를 전송한다고 가정해보자.

  1. 프로그램이 Hello, world! 메세지 작성
  2. SOCKET 라이브러리를 통해 OS 계층에 전달
  3. TCP 정보를 생성해서 씌운다. 메세지 데이터 포함
  4. IP 패킷을 생성해서 씌운다. TCP 데이터 포함
  5. 이후 랜카드를 통해서 정보가 나간다.

TCP/IP 패킷 정보

TCP 특징

TCP는 전송 제어 프로토콜 (Transmission Control Protocol)의 약자로, IP 바로 윗계층에 있는 프로토콜이다. TCP는 다음과 같은 특징을 갖는다.

UDP

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


PORT

즉, PORT는 같은 IP 내에서 프로세스를 구분해준다고 말할 수 있다.

IP는 아파트이고, PORT는 동, 호수라고 비유


DNS (Domain Name System)

IP는 기억하기 어렵다. IP는 변경될 수 있다. -> DNS 사용


URI와 웹 브라우저 요청 흐름

URI (Uniform Resource Identifier)

"URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있다."
URI -> Resource를 식별(Identify)한다?

Uniform : 리소스를 식별하는 통일된 방식
Resource : 자원, URI로 식별할 수 있는 모든 것(제한없음) Identifier : 다른 항목과 구분하는데 필요한 정보

즉, 통일된 자원 식별자라고 할 수 있다.

URL

Locator : 리소스가 있는 위치를 지정

URN

Name : 리스스에 이름을 부여
URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않았다. URI와 URL을 같은 의미로 봐도 무방하다.

URL 전체 문법

https://www.google.com:443/search?q=hello&hl=ko

scheme

userinfo

host

path

query

fragment


웹 브라우저 요청 흐름

브라우저에 아래의 주소를 입력했을 경우,

https://www.google.com:443/searh?q=hello&hl=ko
  1. DNS를 조회해 IP정보를 찾아내고, PORT정보를 찾아낸다.
  1. 웹 브라우저가 HTTP 요청 메세지를 생성한다.
GET /search?q=hello&hl=ko HTTP/1.1
HOST:www.google.com
  1. HTTP 메세지가 SOCKET 라이브러리를 통해 아래 계층에 전달한다.

  2. TCP/IP 패킷을 생성해 HTTP 메세지에 씌운다.

  3. 패킷 정보가 인터넷을 통해 흘러간다.

  4. 메세지가 수 많은 인터넷 노드를 통해 200.200.200.2(구글 서버)로 전달이 된다.

  5. 구글 서버에서 응답 메세지를 만든다.

HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423

<html>
  <body>...</body>
</html>
  1. 응답패킷을 만들고, 응답패킷이 씌워진 메세지가 클라이언트에게 도착한다.

  2. 메세지를 읽고, 웹 브라우저가 html을 렌더링한다.

⬅ 이전 포스트
async, defer | JavaScript
다음 포스트 ➡️
HTTP (2) | Network