ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1.3 네트워크의 기본 - TCP/IP
    HTTP & Network/1. Web & Network 개요 2022. 6. 7. 15:23

    1. Web & Network 개요

    이 주제는 HTTP와 관련된 시리즈입니다. 백엔드의 기본적인 소양으로서 최소한으로 갖출만 하다고 판단되는 내용들을 정리해서 설명하는 글(혹은 이미지나 영상)의 묶음입니다. 첫번째 파트는 HTTP의 배경이 되는 웹과 네트워크에 대한 이야기입니다.

    이 시리즈의 목차는 이 페이지를 참고해 주세요.

    1.3. 네트워크의 기본은 TCP/IP(Transmission Control Protocol/Internet Protocol)


    개요


    인터넷, HTTP를 포함하여 일반적으로 사용하는 네트워크는 TCP/IP라는 프로토콜을 움직이고 있습니다. 사실 네트워크 레이어, TCP/IP의 구조 등 각 부분마다 다뤄야 할 내용이 너무 많지만, 지금은 HTTP를 이해하기 위해 필수로 필요한 내용만 짚어보겠습니다.

    TCP/IP가 뭔지


    TCP/IP는 이름 그대로 컴퓨터와 네트워크 기기가 정보를 전송하기 위해서 약속한 약속들의 모임입니다. 다시 말해, 통신을 위한 프로토콜(규약, 약속) 집합입니다.
    어떻게 상대를 구분할지 / 어떻게 상대를 찾아갈지 / 어떻게 대화를 시작할지 / 대화의 규칙은 어떻게 할지 / 어떻게 대화를 마칠지 / 그 외 규격 등등... 여러가지가 모두 프로토콜이에요.
    본래는 TCP와 IP를 가리켜 TCP/IP라고 하는 것이지만, 실제적으로는 IP 프로토콜을 활용하는 모든 프로토콜을 총칭해서 TCP/IP로 많이들 부릅니다.

    TCP/IP의 구조


    TCP/IP 구조의 핵심 개념은 '계층화된 구조(layered architecture)'라는 점인데요. 계층 구조에 대해서 꼭! 반드시! 이해할 필요가 있습니다.

    TCP/IP의 계층은 총 네 개로, 각각 '어플리케이션 계층', '트랜스포트 계층', '네트워크 계층', '데이터링크 계층'이란 이름을 가지고 있어요.
    이런 계층화된 구조에는 장점이 있는데요. 계층마다의 책임이 명확하게 구분되기 때문에, 각 계층은 자기가 맡은 역할의 구현에만 집중하면 된다는 장점이 있고요. 또 계층 간 데이터를 주고 받는 인터페이스 외 나머지 내부는 자유롭게 변경이 가능하다는 장점을 가지게 됩니다.

    각 계층의 역할


    각 계층의 역할은 이렇습니다.

    • 어플리케이션 계층: 사용자와 직접 상호작용하는 어플리케이션이 준비되어 있어요. TCP/IP에는 이 계층을 위한 여러 공통 어플리케이션이 제공되는데, 예를 들어 FTP나 DNS, 그리고 HTTP도 여기에 속해 있습니다. 응용 계층이라고도 부릅니다.
    • 트랜스포트 계층: 네트워크로 접속되어 있는 두 대의 기기 사이의 데이터 흐름을 제공합니다. 이 계층에서 데이터를 주고 받기 위한 프로토콜 중에는 TCP(Transmission Control Protocol)와 UDP(User Data Protocol), 크게 두 가지가 있습니다. 다르게는 전송 계층이라고도 불러요.
    • 네트워크 계층: 이 계층은 네트워크 상에서 데이터가 이동하기 위한 단위인 '패킷'으로 데이터를 가공하고, 어떤 경로를 통해 수신지까지 도달할지 결정하는 역할도 도맡아 합니다. 인터넷 계층이라고도 한다.
    • 데이터링크 계층: 하드웨어적인 면을 담당합니다. 상위 계층에서 내려온 정보를 전기신호로 변환하여 송수신하는 역할을 해요. 그러려면 커넥터나 케이블 등 물리적인 여러 전송매체도 포함되어 있겠죠? 다르게 부를 때는 링크 계층, 네트워크 인터페이스 계층이라고도 합니다.

    TCP/IP의 흐름


    어플리케이션 계층에서 만들어진 요청/응답 데이터는 각 계층을 오갈 때마다 헤더로 감싸져서 포장하는데요. 머릿속으로 흐름을 그리고 쭉 따라가면서 이해해보시면 좋을 거 같아요(그림 설명이 더 이해가 빠를 것 같아 영상을 촬영했는데 올라가질 않네요ㅠㅜ).

    • 클라이언트 측: 유저가 어떤 웹페이지가 보고 싶다고 요청할 때,

      1. 그 요청은 어플리케이션 계층의 프로토콜 중 하나인 HTTP 프로토콜을 통해 만들어진다(HTTP request).
      2. 그리고 트랜스포트 계층으로 내려가면 통신에 적절하게 요청 데이터를 조각내고 헤더(포트 번호)를 덧붙여 재가공한다.
      3. 네트워크 계층으로 내려온 데이터는 MAC주소와 데이터 무결성을 확인하기 위한 비트를 붙여서 재가공한다.
      4. 데이터링크 계층으로 넘겨 이더넷 정보를 붙이고 요청을 발송할 준비를 마친다.
    • 서버 측: 수신된 신호를 받아서 각 계층은 순차적으로 헤더를 확인하고 안에 담긴 데이터를 상위 계층으로 올려보낸다. 그렇게 해서 어플리케이션 계층까지 도달하면 HTTP Request data를 확인할 수 있게 되는 것이다.

    이렇게, 계층마다 데이터를 감싸는 것을 '캡슐화'라고 해요.
    그리고 이렇게 계층마다 캡슐화 한 데이터를 각기 다르게 부르는데요. 어플리케이션 계층의 데이터는 데이터 그 자체로 부르거나 메시지라고 하고, 트랜스포트 계층은 세그먼트, 네트워크 계층은 데이터그램, 링크 계층에서는 네트워크 프레임, 이더넷 프레임이라고 부릅니다.

    참고하면 좋은 자료


    IBM - TCP/IP 프로토콜

    'HTTP & Network > 1. Web & Network 개요' 카테고리의 다른 글

    1.2. 한 줄로 요약해보는 HTTP  (0) 2022.06.07
    1.1. 웹(Web) 이야기  (0) 2022.06.07

    댓글

Designed by Tistory.