IT 기획의 길

네트워크 정복하기 9. 웹 서버와 웹 브라우저의 TCP/IP 통신 과정 본문

IT 인프라/네트워크

네트워크 정복하기 9. 웹 서버와 웹 브라우저의 TCP/IP 통신 과정

완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다 2021. 10. 1. 13:35

TCP/IP를 기반으로 한 인터넷에서 데이터를 캡슐화와 역캡슐화를 거쳐 전송됩니다.

 

참조: TCP/IP 에서의 데이터 통신

 

이번 포스팅에서는 인터넷을 대표하는 웹 서비스에서 웹 서버와 웹 브라우저가 캡슐화와 역캡슐화를 거쳐 통신하는 과정에 대해 살펴보도록 하겠습니다.

 

웹 서버와 웹 브라우저의 통신 

웹 서버와 웹 브라우저가 인터넷에서 데이터 통신을 하는 전체적인 과정은 다음 <그림 1>과 같습니다. 애플리케이션을 실행시키는 웹 서버 컴퓨터와 웹 브라우저 컴퓨터는 각각 4개의 계층을 순차적으로 통과하면서 각각의 프로토콜에 따라 데이터를 처리하고, 네트워크를 연결하여 인터넷을 만드는 중간 노드인 라우터는 네트워크 인터페이스 계층과 인터넷 계층의 프로토콜에 따라 데이터를 처리합니다.   

 

<그림 1>웹 서버와 웹 브라우저의 통신

 

웹 서비스의 프로토콜

웹 서비스는 응용 계층에서는 HTTP 프로토콜, 전송 계층에서는 TCP 프로토콜, 인터넷 계층에서는 IP 프로토콜, 네트워크 인터페이스 계층에서는 주로 이더넷 프로토콜을 사용하여 데이터 통신을 합니다.

 

웹 서버가 송신 호스트, 웹 브라우저가 수신 호스트가 되어 웹 서비스를 제공하는 과정은 다음과 같습니다.

 

웹 서버의 데이터 송신

웹 서버 애플리케이션은 웹 서비스를 제공하기 위해 웹 페이지라는 데이터를 만듭니다.

 

응용 계층에서는 HTTP 프로토콜에 따라 애플리케이션이 만든 원본 데이터를 처리하고 HTTP 헤더를 추가한 데이터, 즉 HTTP 메시지를 전송 계층으로 넘깁니다.

 

전송 계층에서는 TCP 프로토콜에 따라 HTTP 메시지를 처리하고 TCP 헤더를 추가한 데이터, 즉 TCP 세그먼트를 인터넷 계층으로 넘깁니다.

 

인터넷 계층에서는 IP 프로토콜에 따라 TCP 세그먼트를 처리하고 IP 헤더를 추가한 데이터, 즉 IP 패킷을 네트워크 인터페이스 계층으로 넘깁니다.

 

네트워크 인터페이스 계층에서는 이더넷 프로토콜에 따라 IP 패킷을 처리하고 이더넷 헤더를 추가한 데이터 즉, 이더넷 프레임을 전기 신호로 변환하여 전송 매체를 통해 인터넷으로 내보냅니다.

 

<그림 2> 웹 서버의 데이터 송신

 

중간 노드인 라우터의 데이터 처리

인터넷에서 데이터를 수신한 라우터의 네트워크 인터페이스 계층은 먼저 이더넷 헤더의 MAC 주소를 읽고 자기 앞으로 온 데이터가 맞는지 확인합니다. 자기 앞으로 온 데이터가 맞으면 데이터를 수신하고 이더넷 프레임에서 이더넷 헤더를 삭제한 데이터(IP 패킷)를 인터넷 계층으로 넘깁니다

 

인터넷 계층은 IP 헤더의 IP 주소를 읽고 자기 앞으로 온 데이터가 맞는지 확인합니다. 라우터는 송신 호스트와 수신 호스트의 데이터 전송을 중계하는 중간 노드이기 때문에 IP 패킷의 수신지가 대부분 자기 앞으로 온 것이 아닙니다. 이 경우에는 라우팅이라는 라우터의 기능을 이용해 다음에 데이터를 전송할 라우터나 호스트를 조사한 후 데이터를 전송하게 됩니다.

 

<그림 3> 중간 노드인 라우터의 데이터 처리

 

 

웹 브라우저의 데이터 수신

 

인터넷을 통해 웹 브라우저가 설치된 컴퓨터(웹 클라이언트)에 도착한 전기 신호는 네트워크 인터페이스 계층에서 디지털 데이터로 변환됩니다. 

 

네트워크 인터페이스 계층은 먼저 이더넷 헤더의 MAC 주소를 읽고 자기 앞으로 온 데이터가 맞는지 확인합니다. 자기 앞으로 온 데이터가 맞으면 데이터를 수신하고 이더넷 프레임에서 이더넷 헤더를 삭제한 데이터(IP 패킷)을 인터넷 계층으로 넘깁니다. 구체적으로는 이더넷 헤더에서 데이터의 종류를 읽고 상위 프로토콜을 조사한 후 상위 프로토콜인 IP를 처리하는 프로그램으로 헤더가 제거된 데이터를 전달합니다.

 

인터넷 계층은 IP 헤더의 IP 주소를 읽고 자기 앞으로 온 데이터가 맞으면 그대로 데이터를 수신하여 IP 패킷에서 IP 헤더를 삭제한 데이터(TCP 세그먼트)를 전송 계층으로 넘깁니다. 구체적으로는 IP 헤더에서 상위층 프로토콜을 조사한 후 상위층 프로토콜이 TCP인 경우 TCP를 처리하는 프로그램으로 헤더가 제거된 데이터를 전송합니다.

 

전송 계층은 TCP 헤더를 읽고 웹 서버가 보낸 데이터가 빠짐없이 도착했는지 확인합니다. 데이터가 올바르게 수신된 경우 TCP 헤더의 포트 번호로 데이터를 전송할 애플리케이션을 확인하고 TCP 세그먼트에서 TCP 헤더를 삭제한 데이터(HTTP 메시지)를 응용 계층으로 넘깁니다. 구체적으로는 포트 번호로 식별한 애플리케이션 프로그램에게 헤더가 제거된 데이터를 그대로 전달합니다.

 

응용 계층 HTTP 헤더를 읽고 웹 서비스를 제공할 수 있도록 데이터를 처리하여 웹브라우저에서 웹페이지를 보여줍니다.

 

<그림 4> 웹 브라우저의 데이터 수신

출처: https://better-together.tistory.com/93?category=887984 [변계사 Sam의 테크 스타트업!]