매일메일을 통한
하루하루 CS 공부하기!
사용자가 웹페이지를 접속할 때 무수히 많은 작업들이 일어난다.
이 부분에 대해 정확히 짚고 넘어가는 것이 네트워크 공부에 많은 도움이 될 것이다.
웹 페이지 접속 플로우
예를 들어, 사용자가 www.google.com을 입력하면, 브라우저는 HTTP 프로토콜을 사용해 구글 웹서버와 통신하려고 한다.
HTTP는 OSI 7계층 중 애플리케이션 계층에서 동작하는 프로토콜이다.
이때, 브라우저는 도메인 네임에 대한 IP 주소를 알아야하기 때문에, DNS (Domain Name System) 서버에 요청을 보낸다.
이 질의 과정 또한 Application Layer에서 이루어지며, DNS 서버는 해당 도메인에 대한 IP주소를 응답한다.
IP 주소를 얻은 후, 브라우저는 구글 서버와 통신을 시작한다.
HTTP는 TCP/IP를 기반으로 작동하므로, 데이터를 주고받기 전 TCP 3-way Handshake 과정이 필요하다.
(Transport Layer)
TCP 연결이 성립된 후, 브라우저는 HTTP Request 메시지를 생성하여 구글 서버에 전송한다.
ex> "GET / HTTP/1.1" 이라는 요청을 TCP 프로토콜을 통해 80번 포트로 전송.
이 때, 데이터는 패킷 형태로 네트워크를 통해 전달됨.
네트워크를 통해 데이터를 전송하기 위해서는 Network Layer(3계층)에서 IP 주소를 사용, Data Link Layer (2계층)에서 MAC 주소를 사용하여 패킷이 전송됨.
구글 서버는 클라이언트 요청을 수신하고 이를 처리한 후, HTTP Response 메시지를 생성하여 응답함.
서버는 요청이 성공했음을 알리는 200 OK 상태코드와 함께 웹 페이지 데이터를 전송함.
브라우저는 이 응답을 받아 HTML, CSS, JavaScript 등의 데이터를 해석하여 화면에 페이지를 렌더링한다.
모든 데이터 전송이 완료되면, 클라이언트와 서버는 4-way Handshake 과정을 거쳐서 TCP 연결을 종료한다.
'Back-end' 카테고리의 다른 글
[Back-End] 갭락(Gap Lock)과 넥스트키 락(Next-Key Lock) (0) | 2025.01.09 |
---|---|
[Back-End] DBMS에서 동시성을 제어하는 방법 (0) | 2025.01.08 |
[Back-End] 스레드, 프로세스, 코어의 수는 많을수록 좋을까요? (2) | 2025.01.02 |
[Back-End] Shared Lock과 Exclusive Lock 이란? (0) | 2024.12.31 |
[Back-End] Sync와 Async 그리고 Blocking와 Non-Blocking? (2) | 2024.12.30 |