본 글은 아래의 [변계사 Sam] 블로그에서 개인적인 공부의 목적으로 허가를 받고 발췌하였음을 밝힙니다.
https://better-together.tistory.com/93?category=887984


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

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


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

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

 

 


웹 서비스의 프로토콜

웹 서비스는 Applicaion Layer에서는 HTTP 프로토콜, Transport Layer에서는 TCP 프로토콜, Internet Layer에서는 IP 프로토콜, Network Interface Layer에서는 주로 이더넷 프로토콜을 사용하여 데이터 통신을 한다.

 

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



웹 서버의 데이터 송신

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

 

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

 

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

 

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

 

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

 

 

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

인터넷에서 데이터를 수신한 라우터의 네트워크 인터페이스 계층은 먼저 이더넷 헤더의 MAC 주소를 읽고 자기 앞으로 온 데이터가 맞는지 확인한다.

자기 앞으로 온 데이터가 맞으면 데이터를 수신하고 이더넷 프레임에서 이더넷 헤더를 삭제한 데이터(IP 패킷)를 인터넷 계층으로 넘긴다.

 

인터넷 계층은 IP 헤더의 IP 주소를 읽고 자기 앞으로 온 데이터가 맞는지 확인한다.

라우터는 송신 호스트와 수신 호스트의 데이터 전송을 중계하는 중간 노드이기 때문에 IP 패킷의 수신지가 대부분 자기 앞으로 온 것이 아니다.

이 경우에는 라우팅이라는 라우터의 기능을 이용해 다음에 데이터를 전송할 라우터나 호스트를 조사한 후 데이터를 전송하게 된다.

 


 

 

웹 브라우저의 데이터 수신

 

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

 

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

구체적으로는 이더넷 헤더에서 데이터의 종류를 읽고 상위 프로토콜을 조사한 후 상위 프로토콜인 IP를 처리하는 프로그램으로 헤더가 제거된 데이터를 전달하게 된다.

 

인터넷 계층은 IP 헤더의 IP 주소를 읽고 자기 앞으로 온 데이터가 맞으면 그대로 데이터를 수신하여 IP 패킷에서 IP 헤더를 삭제한 데이터(TCP 세그먼트)를 전송 계층으로 넘긴다.

구체적으로는 IP 헤더에서 상위층 프로토콜을 조사한 후 상위층 프로토콜이 TCP인 경우 TCP를 처리하는 프로그램으로 헤더가 제거된 데이터를 전송한다.

 

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

구체적으로는 포트 번호로 식별한 애플리케이션 프로그램에게 헤더가 제거된 데이터를 그대로 전달한다.

 

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

 

 

+ Recent posts