프로토콜 스택: 웹 브라우저와 운영체제 간의 통신 이해하기

2023. 4. 2. 18:23CS

728x90

해당 글은 

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#%EC%9B%B9-%ED%86%B5%EC%8B%A0%EC%9D%98-%ED%81%B0-%ED%9D%90%EB%A6%84

위 게시물의 "웹 통신의 큰 흐름"을 좀 더 자세하게 풀어보는 글입니다.

먼저 해당 url 을 타고 들어가서 한번 설명을 읽고 오시면 좋을 거 같습니다 :)

 

브라우저에서 URL 을 입력하고 Enter를 누르면 어떤 일이 일어나는 가?

  1. 브라우저가 정해진 브라우저의 규칙에 따라 URL을 해석한다.
  2. 해석된 URL 의 의미를 토대로 HTTP Request Message를 생성,
  3. 해당 Message 를 웹 서버로 보내게 된다.

해당 설명만 본다면 브라우저가 하는 일이 2가지로 보입니다.

  1. URL 해석
  2. HTTP Message 생성&전송

하지만 위 2가지에서 브라우저가 하는 일은 1번만 해당하고,

2번을 수행하는 것은 프로토콜 스택입니다.

 

프로토콜 스택이란?

프로토콜 스택은 운영체제에 내장된 네트워크 제어용 소프트웨어입니다.

또 다른 표현으로는 컴퓨터와 다른 네트워크 장치 간에 통신을 가능하게 하는

일련의 프로토콜을 구현한 소프트웨어입니다.

 

이 프로토콜들은 계층적인 구조를 가지며, 각 계층은 네트워크 통신 과정에서 특정 기능을 수행합니다.

대표적인 프로토콜 스택으로는 인터넷 프로토콜 스택(IP 프로토콜 스택)이 있으며, 이는 TCP/IP를 기반으로 합니다.

 

브라우저는 사이트에 액세스하기 위해 네트워크 통신을 수행하며,

이때 프로토콜 스택을 사용합니다.

 

브라우저가 메시지를 보내거나 받을 , 프로토콜 스택의 계층은 메시지를

적절한 형태로 변환하고 전송 과정을 제어합니다

각 계층에 대해 알아보겠습니다.

  1. 애플리케이션 계층 (Application Layer)
    사용자가 직접 상호작용하는 프로토콜이 계층에 위치합니다.
    애플리케이션 계층 프로토콜은 특정한 목적에 따라 네트워크 통신을 수행하며,
    브라우징, 이메일 전송, 파일 전송 다양한 애플리케이션에 사용됩니다.
    대표적인 애플리케이션 계층 프로토콜로는 HTTP, HTTPS, FTP, SMTP, DNS 등이 있습니다.
  2. 전송 계층 (Transport Layer)
    계층에서는 데이터 전송의 신뢰성과 흐름 제어를 담당합니다.
    전송 계층의 주요 프로토콜은 TCP(Transmission Control Protocol) UDP(User Datagram Protocol)입니다.
  3. 인터넷 계층 (Internet Layer)
    계층에서는 데이터 패킷을 올바른 목적지로 전송하기 위한 경로를 결정합니다.
    인터넷 계층의 주요 프로토콜은 IP(Internet Protocol)입니다. IP 패킷에 출발지와 목적지 IP 주소를 할당하여, 패킷이 올바른 경로를 통해 전달되도록 합니다. 이때 라우터와 같은 네트워크 장비들이 사용됩니다.
  4. 링크 계층 (Link Layer)
    계층에서는 실제 네트워크를 통한 데이터 패킷의 전송이 이루어집니다.
    링크 계층은 물리적인 네트워크 연결 프레임의 생성과 전송을 담당합니다.

예시

구체적인 예시와 함께 설명해 보겠습니다.

예를 들어, 크롬 브라우저에서 "www.example.com"이라는 웹사이트를 방문하려고 한다고 가정해 보겠습니다.

 

이때 웹 브라우저가 OS에 내장된 프로토콜 스택을 사용해야 합니다.

웹 브라우저가 웹 사이트에 액세스 하기 위한 요청을 보내면,

프로노콜 스택은 다음과 같은 과정을 거칩니다.

  1. 애플리케이션 계층
    브라우저가 HTTP(Hypertext Transfer Protocol) 또는 HTTPS(Hypertext Transfer Protocol Secure) 같은 프로토콜을 사용하여 페이지 요청을 생성합니다.
  2. 전송 계층
    생성된 요청은 TCP(Transmission Control Protocol) 또는 UDP(User Datagram Protocol) 사용하여 데이터 패킷으로 변환됩니다. 이때 패킷에는 출발지와 목적지 IP 주소, 포트 번호 등이 포함됩니다.
  3. 인터넷 계층
    IP(Internet Protocol) 사용하여 데이터 패킷을 올바른 목적지로 전송하기 위한 경로를 결정합니다.
    과정에서 라우터와 같은 네트워크 장비들이 사용됩니다.
  4. 링크 계층
    데이터 패킷이 실제로 네트워크를 통해 전송됩니다.
    과정에서는 이더넷, Wi-Fi 등의 프로토콜이 사용됩니다.

이렇게 웹 브라우저의 요청이 프로토콜 스택을 거쳐 전송되고

웹 사이트 서버에서는 이와 반대 순서로 프로토콜 스택을 거쳐 웹 페이지 데이터를 브라우저로 보냅니다.

이후 브라우저는 웹 페이지 데이터를 해석하여 화면에 표시하게 됩니다.

 

이처럼 프로토콜 스택은 웹 브라우저와 웹 서버 사이의 통신을 가능하게 하는 핵심 역할을 담당하며

운영체제에 내장되어 있습니다.

 

프로토콜 스택 내부 정보 보기

Mac OS 기준으로 프로토콜 스택과 관련된 네트워크 정보를 확인할 수도 있습니다.

netstat -a

해당 명령어를 실행할 , 컴퓨터의 모든 네트워크 연결 정보와 네트워크 통계를 출력합니다.

명령어를 사용하면 현재 컴퓨터에서 열려 있는 네트워크 연결, 연결 대기 중인 포트, 사용 중인 포트 등을 확인할 있습니다.

출력된 결과는 다양한 정보를 포함하고 있어 처음에는 이해하기 어려울 있습니다.

 

netstat -a 명령어를 터미널에서 사용하면 다음과 같이 화면에 나오게 됩니다.

netstat -a 의 결과

해당 화면에서 확인할 수 있는 주요 정보를 간단히 설명해 보겠습니다.

  1. Proto
    연결에 사용된 프로토콜을 나타냅니다. 예를 들어, TCP 또는 UDP 등입니다.
  2. Local Address
    현재 사용 중인 로컬 IP 주소와 포트 번호를 나타냅니다.
    *
    기호는 모든 IP 주소를 의미합니다.
  3. Foreign Address
    외부 IP 주소와 포트 번호를 나타냅니다.
    주소는 연결된 원격 시스템을 의미합니다.
  4. State
    네트워크 연결의 상태를 나타냅니다.
    예를 들어, TCP 연결의 경우 LISTEN, ESTABLISHED, CLOSE_WAIT 등의 상태가 있습니다.

컬럼별로 구분되어 있는 정보들을 참고하여, 현재 시스템에서 사용 중인 네트워크 연결 상태를 파악할 있습니다.

728x90