본문 바로가기
UMC스터디

TCP/IP 4계층 모델을 활용한 홈페이지 접속 방법 설명

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

1. TCP/IP 4계층

 

2. 네이버 홈페이지에 접속하는 방법

일단, 사용자=송신 호스트, 네이버 서버=수신 호스트, 내 브라우저=클라이언트가 된다.
  1. 사용자(송신 호스트)가 url https://naver.com을 입력한다
  2. 클라이언트(내 브라우저)가 DNS 서버에 도메인 주소를 IP주소로 변환해달라고 요청하고, DNS 서버에서 해당 url을 IP주소로 변환해준다 → IP 주소 확인!
  3. 이 정보(IP 주소)를 가지고 HTTP 요청을 만들어서 네이버 서버(수신 호스트)에게 전송해야 한다.
  4. 이때 브라우저(클라이언트)는 TCP/IP 4계층 모델의 과정을 거치게 된다.
  5. 먼저 응용 계층(4)에서는 HTTP 요청 메시지를 만든다.
  6. 그 다음 전송 계층(3)에서는 이 HTTP 메시지를 TCP 방법을 활용해 전달하게 된다
    1. HTTP 메시지를 잘개 쪼개서 패킷으로 나눈다(각 패킷에는 IP주소, PORT, 순서 정보까지 포함되어 있음)
    2. 클라이언트는 랜덤한 포트를 열어 서버의 포트를 향해 데이터를 보냄 (랜덤한 포트를 사용하는 이유는, 응답을 받을 임시 통로를 만들기 위해서이다. 웹 서버는 계속 요청을 받을 수 있기 때문에 80번,443번과 같은 고정된 포트를 열고 있다. 그러나 클라이언트는 항상 데이터를 받지 않고, 요청을 보낼 때만 데이터를 받는다. 그렇기에 요청을 보낼 때마다 랜덤한 포트를 열어서 잠깐 응답을 받을 수 있도록 하는 것이다. 클라이언트는 서버에게 응답을 해당 포트로 받은 후, 사용한 그 랜덤 포트를 닫는다.)
    3. 3-way handshake 과정을 통해 통신하고, 데이터를 전송할 준비를 마친다.
  7. 인터넷 계층(2)에서는 IP주소를 이용해 이 패킷을 전송한다.
  8. 네트워크 인터페이스 계층(1)에서는 wifi를 통해서 데이터들이 전기신호(0,1)로 변환되어 전송된다.
  9. 이 패킷들이 Access Network, Network Core(라우터)를 거쳐서 최적의 경로로 너디너리 서버까지 도착한다.

네이버 서버(수신 호스트)는 이 데이터들을 물리 계층에서 수신 받아, 밑의 물리 계층에서 응용 계층 순으로 요청을 전달한다(위로 다시 올라감).

  1. 물리 계층에서 전송된 패킷은 0,1로 이루어진 이진 데이터이기 때문에, 네트워크 인터페이스 계층(1)에서 받은 정보를 받는다.
  2. 인터넷 계층(2)에서 목적지 주소(IP 주소)를 확인한다.
  3. 전송 계층(3)에서는 패킷의 오류를 검사하고 패킷을 조립하여, 완전한 HTTP 요청으로 복원한다.
    1. 전송 계층에서 여러개의 패킷의 데이터들을 하나로 합치고, 순서대로 정확히 전달되도록 한다.
    2. PORT 번호를 사용해서 어떤 애플리케이션으로 요청을 전달할 지 결정한다. (웹 서버의 기본 포트 80(HTTP) or 443(HTTPS))
  4. 이렇게 복원된 HTTP 요청 데이터가 이제 응용 계층(4)으로 올라온다.
    1. 응용 계층(1)에는 백엔드 서버가 있다. 백엔드 서버는 Web Server, WAS, DB 등 여러 서버를 포함하는 개념이다.
    2. Web Server가 HTTP 요청을 해석하여, 정적인 리소스인 경우에는 Web Server가 정적 파일을 반환한다.
    3. 동적 요청인 경우에는 WAS로 전달한다. WAS는 DB 서버와 상호작용하여 필요한 데이터(사용자 정보, 게시물 등)을 조회하고, 응답을 Web Server로 반환한다.
  5. Web Server는 처리한 데이터를 다시 아래 계층(전송 계층(3)→인터넷 계층(2)→네트워크 인터페이스(1) 계층 순)으로 내려 보내며, HTTP 응답으로 클라이언트에게 반환한다.

클라이언트는 다시 물리 계층에서 응답을 받아서, 이 응답을 위의 계층으로 올려보내고 해석한다.

  1. 클라이언트는 다시 물리 계층에서 전기 신호로 된 응답 데이터를 받아서, 받은 응답을 인터넷 계층(2)과 전송 계층(3)을 거쳐, 응용 계층(4)으로 전달 받는다.
  2. 응용 계층(4)에서는 이 응답 데이터를 해석하여 HTML, CSS, JS 등의 파일로 받아, 렌더링을 통해 웹 브라우저에 표시한다.
  3. 사용자(송신 호스트)는 드디어 네이버 홈페이지를 볼 수 있게 된다🤗

 

더보기

참고로, 네이버 서버와 웹 서버가 무슨 차이지?? 라고 처음에 많이 했갈렸었는데(서버에 대한 지식이 전무하다보니...), 네이버 서버 안에 웹 서버가 포함되어 있다고 보면 될 것 같다. 그니까 네이버 서버의 응용 계층 > 백엔드 서버 > 웹 서버 이런 구조로 존재한다고 생각하면 될 것 같다.

 

'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