본문 바로가기

네트워크

google.com에 접속했을 때 일어나는 일

- 유저가 google.com에 접속했을 때, 다음과 같은 일이 일어납니다. 

 

1) URL인 google.com이 입력되면, HTTP 요청 메시지를 생성합니다. 

 

※ HTTP 요청 메시지란?

- HTTP 요청 메시지는 HTTP 요청에 대한 정보를 담고 있는 메시지로서,

  시작 라인, 헤더, 바디로 구성됩니다. 

  시작 라인에는 HTTP 메서드, URL, HTTP 버전이 포함됩니다. 

  헤더는 전달되는 바디 메시지에 대한 메타 데이터를 포함하고 있으며,

  Accept, Accept-Language, Content-Type, Content-Length 등이 포함됩니다. 

  바디는 전달되는 본문 데이터가 들어갑니다. 

  

 

2) 도메인 주소인 google.com을 DNS Lookup을 통해서 해당 도메인 주소에 해당하는 IP 주소를 찾습니다.

 

※ DNS란?

- Domain Name System의 줄임말로,

  사람이 이해할 수 있는 Domain Name을 

  기계가 이해할 수 있는 IP 주소로 변환해주는 작업을 하는 시스템을 의미합니다.  

 

※ DNS Lookup이란?

- Domain Name으로 IP 주소를 알아내는 과정을 DNS Lookup이라고 합니다. 

 

3) HTTPS 연결을 하고자 하는 경우, SSL Connection을 맺습니다. 

    이 때, SSL Connection을 맺기 위해서는 

    클라이언트와 서버가 SSL Handshake통해서 커넥션을 맺습니다. 

    HTTP와 HTTPS (tistory.com) 

 

4) 서버의 IP 주소로, TCP socket을 열여 TCP connection을 맺습니다. 

    이 과정을 TCP 3-way handshake라고 합니다. 

    TCP/IP (tistory.com)

 

5) HTTP 요청 메시지가 TCP/IP 계층으로 전달되고, TCP 헤더와 IP 헤더가 추가됩니다.

    이 과정을 캡슐화라고 합니다. 캡슐화를 통해서 TCP/IP 패킷이 생성됩니다. 

    TCP 헤더가 추가된 데이터를 세그먼트 라고 합니다.  

    TCP 헤더에는 포트 번호가 담겨 있습니다. 

    포트 번호는 0~65535까지 사용 가능합니다.   

    IP 헤더가 추가된 데이터를 패킷이라고 합니다. 

 

※ 캡슐화란?

- 데이터에 헤더를 붙여나가는 것을 캡슐화라고 합니다.

   

6) HTTP 요청 메시지가 네트워크 접속 계층을 거쳐,  

   전기 신호로 변환되어서 서버로 전달됩니다. 

 

7) 서버가 HTTP 요청 메시지를 받으면 역캡슐화 과정을 통해 헤더를 제거하고,

     해당 데이터를 서버의 프로세스로 전송합니다.  

 

※역캡슐화란?

- 받은 데이터에서 헤더를 하나씩 제거하는 것을 역캡슐화라고 합니다. 

 

8) 서버의 프로세스는 HTTP 요청 메시지에 대한 응답 데이터를 가지고, HTTP 응답 메시지를 생성합니다. 

 

※ HTTP 응답 메시지란?

- HTTP 응답 메시지도 HTTP 요청 메시지와 마찬가지로

  시작 라인, 헤더, 바디로 구성됩니다.

  시작 라인에는 1) HTTP 버전 2) HTTP 응답 코드가 포함되고,

  헤더에는 바디에 대한 메타 데이터가 포함되는데, 대표적으로 Content-Type, Content-Length 등이 있습니다. 

  바디에는 서버의 요청에 대해 전달될 데이터가 포함됩니다. 

 

9) HTTP 응답 메시지는 마찬가지로 전달 받은 방식 그대로 Client IP로 전달됩니다.

 

10) 클라이언트는 HTTP 응답 메시지에 담긴 HTML 데이터를 화면에 렌더링합니다. 

 

참고

기출로 대비하는 개발자 전공 면접

모든 개발자를 위한 HTTP 웹 기본 지식

모두의 네트워크

Browser에서 Google.com을 검색하면 무슨 일이 발생하나요? (nesoy.github.io) 

 

'네트워크' 카테고리의 다른 글

쿠키와 세션  (0) 2022.08.01
TCP vs UDP  (0) 2022.07.31
HTTP와 HTTPS  (0) 2022.07.25
REST API  (0) 2022.07.19
TCP/IP  (0) 2022.07.04