[Network] 웹브라우저에 URL을 입력하면 어떻게 될까?

웹 브라우저에 URL을 입력하면..

웹 브라우저에 URL을 가리키면 브라우저는 인터넷에서 사이트를 호스팅하는 서버를 파악합니다. 이때 우리가 사용하는 URL은 보통 도메인으로 이는 도메인 네임 서버를 통해서 고유한 주소인 IP 주소를 받아서 돌려 줍니다. 우리가 IP 주소를 직접 사용하지 않는 이유는 IP 주소가 다음과 같은 숫자로 이루어져 있어서 기억하기 어렵기 때문입니다. (127.0.0.1 과 같은 형태를 가지고 있습니다.) 우리가 휴대폰에 다른 사람의 이름으로 전화번호를 검색하듯이 우리는 도메인 이름을 통해서 웹사이트를 받아옵니다.

 

 

도메인의 IP주소 조회

우리가 웹브라우저에 URL을 입력하면 브라우저는 그에 맞는 DNS(Domain Name Server)에서 IP주소를 찾아옵니다. DNS는 웹브라우저 사이의 서로 다른 계층과 인터넷의 다앙한 위치인 캐시에 저장되는데 만약에 웹브라우저가 캐시 계층에서 IP주소를 찾을 수 없을 경우 재귀적 DNS 조회를 수행합니다. 재귀적 DNS 조회란 인터넷에 있는 여러 DNS 서버를 요청하며, 검색 될때까지 더 많은 서버에 요청하는 것을 의미합니다.

 

 

TCP 연결

웹 브라우저가 성공적으로 IP주소를 받아온다면 서버와 TCP/IP라는 전송 제어 프로토콜을 통하여 웹 서버와 TCP 연결을 설정합니다. TCP는 3 - way handshake를 통해 서버와 연결하며 이후 일정 시간동안 사용이 없거나 서버나 웹 브라우저(클라이언트)쪽이 연결을 끊게된다면 4 - way handshake를 통해 서버와 연결이 종료됩니다.

 

 

요청 전송

TCP/IP를 통해 웹 브라우저와 서버가 연결된 이후 웹 브라우저와 서버는 HTTP 메세지를 통해 데이터를 교환합니다. 웹브라우저에서는 요청 메세지를 보내 서버에서 원하는 데이터를 가져오고 서버는 이 요청에 따른 응답 메세지를 통해서 사용자가 원하는 데이터를 전송합니다. 웹 브라우저에서 만드는 HTTP 요청 메세지에는 다음과 같은 내용이 포함됩니다.

  • 시작 줄 : GET, POST, PUT, DELETE 와 같은 HTTP 요청 메서드, 요청된 리소스를 가리키는 경로, 통신할 HTTP 버전
  • 헤더 : General header, Request header, Entitiy header
  • 본문 : 모든 요청이 본문을 필요로 하지는 않지만 일부 요청(POST)와 같은 요청은 업데이트를 하기 위해 서버에 데이터를 전송합니다.

웹 브라우저에서 만들어진 HTTP 요청 메세지는 캡슐화 과정을 통해 TCP / IP 계층의 4계층을 지나갑니다. 캡슐화 과정이란 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정입니다. 웹 브라우저는 어플리케이션 계층에 속하므로 그 아래 하위 계층인 전송계층에서 TCP 헤더가 붙어 세그먼트화 됩니다. 그 이후 인터넷 계층으로 가면서 IP 헤더가 붙어 패킷화 되고 마지막으로 링크 계층으로 전달되면서 프레임 헤더와 프레임 트레일러가 붙어 프레임화 됩니다.

 

 

응답 전송

이처럼 만들어진 프레임은 링크 계층을 통해 서버와 통신하게 되고 비캡슐화 과정으로 통해 캡슐화 과정의 역순으로 각 계층의 헤더를 제거하게 됩니다. (링크계층(프레임 - (프레임 헤더 + 프레임 트레일러) = 패킷) -> 인터넷 계층(패킷 - IP헤더 = 세그먼트) -> 전송 계층(세그먼트 - TCP 헤더 = HTTP 요청 메시지)) 서버는 이처럼 비캡슐화를 거친 HTTP 요청 메시지에 따라 요청 처리 방법을 결정합니다. 예를 들어 GET 메서드로 특정 경로에 대한 콘텐츠를 요청했다면 이에 따른 응답을 생성하여 클라이언트로 다시 전송합니다. 이러한 HTTP 응답 메시지에는 다음과 같은 내용이 포함됩니다.

  • 상태 줄 : 프로토콜 버전 (앞서 요청에 있던 HTTP 버전과 동일합니다. 예시 HTTP/1.1), 상태 코드 (201, 204), 이유
  • 헤더 : General header, Response header, Entitiy header
  • 본문 : 마찬가지로 모든 응답에 본문이 들어가지는 않습니다.

 

 

렌더링

위와 같은 응답 메시지를 받은 웹 브라우저는 응답 헤더를 검사하여 리소스를 렌더링 하는 방법에 대한 정보를 확인합니다. 주로 Content-Type헤더에 들어있는 리소스의 형식에 따라 렌더링합니다. 만약 HTML을 포함한 응답을 받는다면 브라우저는 HTML로 무엇을 해야하는지 이미 알고 있으며 이에 따른 HTML을 렌더링하기 위한 다른 필요한 자료들 (CSS, Javascript, 이미지..)를 다시 서버에 요청합니다.

 

 

 

출처

'CS > Network' 카테고리의 다른 글

[Network] OSI 7계층 모델과 TCP / IP 4계층 모델  (0) 2023.09.06
[Network] 네트워크란?  (1) 2023.09.06
[Network] 네트워크 용어 정리  (0) 2023.07.30