-
1.3 네트워크의 기본 - TCP/IPHTTP & 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의 흐름
어플리케이션 계층에서 만들어진 요청/응답 데이터는 각 계층을 오갈 때마다 헤더로 감싸져서 포장하는데요. 머릿속으로 흐름을 그리고 쭉 따라가면서 이해해보시면 좋을 거 같아요(그림 설명이 더 이해가 빠를 것 같아 영상을 촬영했는데 올라가질 않네요ㅠㅜ).
클라이언트 측: 유저가 어떤 웹페이지가 보고 싶다고 요청할 때,
- 그 요청은 어플리케이션 계층의 프로토콜 중 하나인 HTTP 프로토콜을 통해 만들어진다(HTTP request).
- 그리고 트랜스포트 계층으로 내려가면 통신에 적절하게 요청 데이터를 조각내고 헤더(포트 번호)를 덧붙여 재가공한다.
- 네트워크 계층으로 내려온 데이터는 MAC주소와 데이터 무결성을 확인하기 위한 비트를 붙여서 재가공한다.
- 데이터링크 계층으로 넘겨 이더넷 정보를 붙이고 요청을 발송할 준비를 마친다.
서버 측: 수신된 신호를 받아서 각 계층은 순차적으로 헤더를 확인하고 안에 담긴 데이터를 상위 계층으로 올려보낸다. 그렇게 해서 어플리케이션 계층까지 도달하면 HTTP Request data를 확인할 수 있게 되는 것이다.
이렇게, 계층마다 데이터를 감싸는 것을 '캡슐화'라고 해요.
그리고 이렇게 계층마다 캡슐화 한 데이터를 각기 다르게 부르는데요. 어플리케이션 계층의 데이터는 데이터 그 자체로 부르거나 메시지라고 하고, 트랜스포트 계층은 세그먼트, 네트워크 계층은 데이터그램, 링크 계층에서는 네트워크 프레임, 이더넷 프레임이라고 부릅니다.참고하면 좋은 자료
'HTTP & Network > 1. Web & Network 개요' 카테고리의 다른 글
1.2. 한 줄로 요약해보는 HTTP (0) 2022.06.07 1.1. 웹(Web) 이야기 (0) 2022.06.07