아무나개발하자

웹 브라우저 요청 흐름정리 본문

HTTP

웹 브라우저 요청 흐름정리

개발천재나천재 2022. 12. 13. 09:49

웹 브라우저의 요청 흐름과 응답 흐름에 대해 자세하게 다루어 보겠다.

 

웹 브라우저에서 위의 URL을 입력했을때 어떻게 될까용~~~????

이제부터 엄청나게 자세하게 설명해주겠다.

 

1. DNS를 통해 www.google.com에 해당하는 목적지 즉 서버의 IP 주소를 찾는다. 200.200.200.2를 찾았다고 가정하자!

(DNS내부적으로 리버스 프록시 서버의 IP를 줘서 로드밸런싱을 하는 경우는 일단은 생략하겠다.)

 

2. 서버의 포트를 찾는다 -> HTTPS는 443(Listen 포트)를 사용해서 생략도 가능하다.

(HTTP : 80, HTTPS: 443)

 

3. 클라이언트의 브라우저에서 HTTP 요청 메시지를 만든다.

- 요청 메시지는 이런식으로 생겼다. 뒤에서 더욱 자세하게 설명하겠지만 HTTP 메세지는 기본적으로 Start Line, Header, Empty, Body이렇게 4가지로 구성되어 있다.

- Start Line에 요청 메서드, Path, HTTP 버전을 담아서 보낸다.

- Body에 담아서 보낼 경우는 Post, Put, Patch등은 요청 메세지에 body에 데이터를 담아서 보낸다. 그외는 body에 담지 않고 Query parameter로 보낸다.

 

4. HTTP 요청 메시지를 패킷으로 만들어 전달한다.

- HTTP 요청 메시지는 웹브라우저에서 생성된 후 패킷으로 만들어 인터넷으로 보내기 위해 os 즉 커널 레벨로의 전송이 필요하다. 따라서 socket 라이브러리를 통해 전송계층과 인터넷 계층으로 보내지고 segment가 만들어지게 된다.

- 여기서 송신지 IP는 웹 브라우저를 실행하고 있는 컴퓨터의 IP, 송신지 PORT는 여기서 유니크하게 생성된다. 

- 목적지 IP는 200.200.200.1(구글 서버 IP) 목적지 PORT는 443으로 생성된다.

(첫 요청시에는 443(Listen 포트)로 메시지를 보내고 응답 받을때는, 서버에서 요청을 처리하고 새로운 PORT를 생성해서 443포트가 아닌 요청을 직접 처리하는 서버 PORT를 통해 통신한다.)

- 패킷은 출발지와 목적지 IP와 PORT가 모두 존재하고 HTTP 요청 메시지를 가지고 있는 패킷이다.

 

 

5. 인터넷을 통해 패킷이 서버로 전송된다.

- 수 많은 노드(컴퓨터)를 거쳐 구글 서버로 패킷이 도착하게 된다.

 

 

5. 구글 서버는 해당 HTTP 요청 메시지에 대해 처리를 하고, HTTP 응답 메시지를 만들어서 웹 브라우저로 보낸다. 이때 응답 메시지를 만들어서 웹 브라우저로 보낼 수 있는 이유는 HTTP 요청 메시지에 클라이언트의 IP와 PORT를 같이 보냈기 때문이다.

(서버에서  HTTP 응답 메시지를 만들고 보낼때, 송신지 IP: 200.200.200.1 송신지 PORT는 새로 하나 만듬 (예 : 7788) 수신지 IP , PORT는 클라이언트 값)

 

 

  • HTTP 응답 메시지는 다음과 같다. START LINE(STATUS LINE)에 HTTP버전, 상태 코드, 상태 코드 설명등이 들어가고, HEADER에 다양한 정보와 함께 HTML파일을 보낸다(SSR 서버에서 다 주는 형태)
  • JSON을 보내는게 요즘은 더욱 일반적이다. (CSR)

 

 

6. 서버에서도 HTTP 응답 메시지에 TCP → IP 계층을 모두 거쳐 송신지, 목적지 IP와 PORT를 가진 패킷을 만들게 되고 보내게 된다.

 

7. 서버 입장 : 송신지 IP(기존과 동일), PORT(이때 랜덤하게 생성), 수신지 IP, PORT →알고 있음

 

 

출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

'HTTP' 카테고리의 다른 글

HTTP의 모든것  (0) 2022.12.20
HTTP의 핵심 정리  (0) 2022.12.12
인터넷 네트워크  (0) 2022.07.13