우리가 웹 브라우저에서 어떤 주소(URL)을 치면, 해당 주소의 홈페이지가 짠 나타난다. 이러한 결과는 어떤 과정을 거쳐서 나타나는 것일까? 이를 TCP/IP 4계층 모델을 활용해 설명하고자 한다.
1. TCP/IP 4계층

2. 네이버 홈페이지에 접속하는 방법
일단, 사용자=송신 호스트, 네이버 서버=수신 호스트, 내 브라우저=클라이언트가 된다.
- 사용자(송신 호스트)가 url https://naver.com을 입력한다
- 클라이언트(내 브라우저)가 DNS 서버에 도메인 주소를 IP주소로 변환해달라고 요청하고, DNS 서버에서 해당 url을 IP주소로 변환해준다 → IP 주소 확인!
- 이 정보(IP 주소)를 가지고 HTTP 요청을 만들어서 네이버 서버(수신 호스트)에게 전송해야 한다.
- 이때 브라우저(클라이언트)는 TCP/IP 4계층 모델의 과정을 거치게 된다.
- 먼저 응용 계층(4)에서는 HTTP 요청 메시지를 만든다.
- 그 다음 전송 계층(3)에서는 이 HTTP 메시지를 TCP 방법을 활용해 전달하게 된다
- HTTP 메시지를 잘개 쪼개서 패킷으로 나눈다(각 패킷에는 IP주소, PORT, 순서 정보까지 포함되어 있음)
- 클라이언트는 랜덤한 포트를 열어 서버의 포트를 향해 데이터를 보냄 (랜덤한 포트를 사용하는 이유는, 응답을 받을 임시 통로를 만들기 위해서이다. 웹 서버는 계속 요청을 받을 수 있기 때문에 80번,443번과 같은 고정된 포트를 열고 있다. 그러나 클라이언트는 항상 데이터를 받지 않고, 요청을 보낼 때만 데이터를 받는다. 그렇기에 요청을 보낼 때마다 랜덤한 포트를 열어서 잠깐 응답을 받을 수 있도록 하는 것이다. 클라이언트는 서버에게 응답을 해당 포트로 받은 후, 사용한 그 랜덤 포트를 닫는다.)
- 3-way handshake 과정을 통해 통신하고, 데이터를 전송할 준비를 마친다.
- 인터넷 계층(2)에서는 IP주소를 이용해 이 패킷을 전송한다.
- 네트워크 인터페이스 계층(1)에서는 wifi를 통해서 데이터들이 전기신호(0,1)로 변환되어 전송된다.
- 이 패킷들이 Access Network, Network Core(라우터)를 거쳐서 최적의 경로로 너디너리 서버까지 도착한다.
네이버 서버(수신 호스트)는 이 데이터들을 물리 계층에서 수신 받아, 밑의 물리 계층에서 응용 계층 순으로 요청을 전달한다(위로 다시 올라감).
- 물리 계층에서 전송된 패킷은 0,1로 이루어진 이진 데이터이기 때문에, 네트워크 인터페이스 계층(1)에서 받은 정보를 받는다.
- 인터넷 계층(2)에서 목적지 주소(IP 주소)를 확인한다.
- 전송 계층(3)에서는 패킷의 오류를 검사하고 패킷을 조립하여, 완전한 HTTP 요청으로 복원한다.
- 전송 계층에서 여러개의 패킷의 데이터들을 하나로 합치고, 순서대로 정확히 전달되도록 한다.
- PORT 번호를 사용해서 어떤 애플리케이션으로 요청을 전달할 지 결정한다. (웹 서버의 기본 포트 80(HTTP) or 443(HTTPS))
- 이렇게 복원된 HTTP 요청 데이터가 이제 응용 계층(4)으로 올라온다.
- 응용 계층(1)에는 백엔드 서버가 있다. 백엔드 서버는 Web Server, WAS, DB 등 여러 서버를 포함하는 개념이다.
- Web Server가 HTTP 요청을 해석하여, 정적인 리소스인 경우에는 Web Server가 정적 파일을 반환한다.
- 동적 요청인 경우에는 WAS로 전달한다. WAS는 DB 서버와 상호작용하여 필요한 데이터(사용자 정보, 게시물 등)을 조회하고, 응답을 Web Server로 반환한다.
- Web Server는 처리한 데이터를 다시 아래 계층(전송 계층(3)→인터넷 계층(2)→네트워크 인터페이스(1) 계층 순)으로 내려 보내며, HTTP 응답으로 클라이언트에게 반환한다.
클라이언트는 다시 물리 계층에서 응답을 받아서, 이 응답을 위의 계층으로 올려보내고 해석한다.
- 클라이언트는 다시 물리 계층에서 전기 신호로 된 응답 데이터를 받아서, 받은 응답을 인터넷 계층(2)과 전송 계층(3)을 거쳐, 응용 계층(4)으로 전달 받는다.
- 응용 계층(4)에서는 이 응답 데이터를 해석하여 HTML, CSS, JS 등의 파일로 받아, 렌더링을 통해 웹 브라우저에 표시한다.
- 사용자(송신 호스트)는 드디어 네이버 홈페이지를 볼 수 있게 된다🤗
더보기
참고로, 네이버 서버와 웹 서버가 무슨 차이지?? 라고 처음에 많이 했갈렸었는데(서버에 대한 지식이 전무하다보니...), 네이버 서버 안에 웹 서버가 포함되어 있다고 보면 될 것 같다. 그니까 네이버 서버의 응용 계층 > 백엔드 서버 > 웹 서버 이런 구조로 존재한다고 생각하면 될 것 같다.
'UMC스터디' 카테고리의 다른 글
| JPQL과 QueryDSL (1) | 2025.06.13 |
|---|---|
| 도메인 설계와 N+1 문제 (0) | 2025.06.13 |
| Spring Boot의 핵심 개념 정리 (0) | 2025.04.08 |
| SQL 기본 정리 (0) | 2025.03.27 |
| 서버 관련 공부 (0) | 2025.03.21 |