웹 브라우저와 웹 서버가 통신하는 과정
TCP/IP를 기반으로 한 인터넷에서 데이터를 캡슐화와 역캡슐화를 거쳐 전송됩니다.
이번 포스팅에서는 인터넷을 대표하는 웹 서비스에서 웹 서버와 웹 브라우저가 캡슐화와 역캡슐화를 거쳐 통신하는 과정에 대해 살펴보도록 하겠습니다.
웹 서버와 웹 브라우저의 통신
웹 서버와 웹 브라우저가 인터넷에서 데이터 통신을 하는 전체적인 과정은 다음 <그림 1>과 같습니다. 애플리케이션을 실행시키는 웹 서버 컴퓨터와 웹 브라우저 컴퓨터는 각각 4개의 계층을 순차적으로 통과하면서 각각의 프로토콜에 따라 데이터를 처리하고, 네트워크를 연결하여 인터넷을 만드는 중간 노드인 라우터는 네트워크 인터페이스 계층과 인터넷 계층의 프로토콜에 따라 데이터를 처리합니다.
웹 서비스의 프로토콜
웹 서비스는 응용 계층에서는 HTTP 프로토콜, 전송 계층에서는 TCP 프로토콜, 인터넷 계층에서는 IP 프로토콜, 네트워크 인터페이스 계층에서는 주로 이더넷 프로토콜을 사용하여 데이터 통신을 합니다.
웹 서버가 송신 호스트, 웹 브라우저가 수신 호스트가 되어 웹 서비스를 제공하는 과정은 다음과 같습니다.
웹 서버의 데이터 송신
웹 서버 애플리케이션은 웹 서비스를 제공하기 위해 웹 페이지라는 데이터를 만듭니다.
응용 계층에서는 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 헤더를 읽고 웹 서비스를 제공할 수 있도록 데이터를 처리하여 웹브라우저에서 웹페이지를 보여줍니다.
참고 자료
정기철, 「인공지능 시대를 위한 컴퓨터 과학 개론」, 한빛아카데미, 2020.
다케시타 다카후미 외 3인, 이영란 역, 「마스터링 TCP/IP 입문편」, 성안당, 2019.
ANK CO., Ltd., 이영란 역, 「TCP/IP가 보이는 그림책」, 성안당, 2019.
강환수 외 3인, 「컴퓨터 개론」, 인피니티북스, 2019.
진혜진, 「네트워크 개론」, 한빛아카데미, 2019.
삼성SDS 기술사회, 「정보통신」, 한울아카데미, 2019.
정진욱 외 4인, 「컴퓨터 네트워크」, 생능출판사, 2018.
김현정, 「소프트웨어 개념사전」, 궁리, 2019.
이영호 외 1인, 「당신이 지금 알아야 할 AWS」, 비제이 퍼블릭, 2019.
김종훈, 「소프트웨어 세상을 여는 컴퓨터 과학」, 한빛아카데미, 2018.
Gene, 김성훈 역, 「그림으로 배우는 네트워크 원리」, 영진 닷컴, 2020.
Ryuji Kitami, 이영란 역, 「그림 한 장으로 보는 최신 네트워크 용어 해설」, 정보문화사, 2016.
미즈구치 카즈야, 이승룡 역, 「모두의 네트워크」, 2018.
리브로웍스, 신상재 역, 「TCP/IP 쉽게, 더 쉽게」 , 제이펍, 2016.
Gene, 진솔 역, 「손으로 익히며 배우는 네트워크 첫걸음」, 한빛미디어, 2017.
아미노 에이지, 김현주 역, 「하루 3분 네트워크 교실」, 영진닷컴, 2016.
'냐옹아 멍멍해봐(How to Speak IT) > 테크(IT) 문법' 카테고리의 다른 글
쉽게 이해하는 네트워크 11. 인터넷의 TCP/IP 프로토콜과 패킷 교환 방식 (4) | 2020.11.06 |
---|---|
쉽게 이해하는 네트워크 10. TCP/IP 네트워크 인터페이스 계층의 역할과 데이터 전송 (ft. 랜카드와 MAC 주소) (1) | 2020.10.29 |
쉽게 이해하는 네트워크 8.인터넷의 TCP/IP 데이터 전송 과정(ft. 캡슐화와 역캡슐화) (4) | 2020.10.19 |
쉽게 이해하는 네트워크 7. TCP/IP 계층의 특징과 역할 및 프로토콜 (4) | 2020.10.15 |
쉽게 이해하는 네트워크 6. 인터넷의 핵심인 TCP/IP의 개요 (ft. 애플리케이션의 개발) (0) | 2020.10.05 |