과거에는 다양한 네트워크 기술들이 독립적으로 존재했지만, 현시대에는 대부분의 네트워크가 TCP/IP 프로토콜 스택으로 이루어져 있습니다.
우리가 일상에서 사용하는 인터넷부터 회사 내부의 인트라넷, 심지어 스마트폰과 IoT 기기까지 모두 TCP/IP를 통해 연결되어 있죠.
개인적으로는 처음 네트워크를 공부하면서 TCP/IP라는 용어를 들었을 때부터 한참 동안 TCP/IP의 개념이 너무 추상적으로 느껴지고 정확하게 의미하는 바가 무엇인지 이해하기 힘들었습니다.
이번 글에서는 네트워크 기술의 핵심이자 현대 IT 인프라의 표준인 TCP/IP의 4 계층 구조를 명확히 짚어보고, 각 계층이 어떤 역할을 하는지 함께 알아보겠습니다.
# 00. About TCP/IP
TCP/IP란 무엇일까요?
TCP/IP는 현시대에서 가장 많이 쓰이고 있는 인터넷 프로토콜 스위트 ( Internet Protocol Suite ) 입니다.
인터넷 프로토콜 스위트란 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 모음입니다.
다시 쉽게 얘기하면, TCP/IP는 HTTP, SMTP, FTP, SSH 등 여러 프로토콜의 집합이라고 이해하시면 되겠습니다.
그럼 TCP와 IP가 각각 의미하는 것은 무엇일까요?
TCP ( Transmission Control Protocol )
TCP는 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 다중화 프로토콜의 일종입니다.
트랜스포트 계층 ( Transport Layer ) 에서 사용되며, 동일 계층에서 사용하는 또다른 프로토콜인 UDP와 종종 비교되곤 합니다.
IP ( Internet Protocol )
IP는 인터넷이 통하는 네트워크에서 어떤 정보를 수신하고 송신하는 통신에 대한 규약을 의미합니다.
인터넷 계층 ( Internet Layer ) 에서 사용되며, 흔히 우리가 얘기하는 내 컴퓨터 IP 주소 할 때의 IP와 같은 개념입니다.
TCP/IP 프로토콜 스위트의 이름이 TCP/IP인 이유는 이 프로토콜 스위트를 이루는 두 가지 핵심 프로토콜이 TCP와 IP이기 때문이라고 이해하시면 되겠습니다.
# 01. 애플리케이션 계층 ( application layer )
애플리케이션 계층의 역할은 사용자가 실제로 체감할 수 있는 서비스를 제공합니다.
다른 3개의 계층은 모두 컴퓨타 간의 통신을 정의하고 있는 반면 애플리케이션 계층은 4 계층 중에서 유일하게 애플리케이션 프로그램 간의 통신을 정의합니다.
애플리케이션 데이터 자체를 준비하는 계층이며, 이 단계의 데이터를 메세지(Message)라고 부릅니다.
애플리케이션 계층의 주요 프로토콜로는 HTTP, HTTPS, FTP, SMTP, DNS 등이 있습니다.
# 02. 전송 계층 ( Transport Layer )
전송 계층은 컴퓨터 안까지 들어온 데이터를 각 프로그램까지 전달하는 역할을 수행합니다.
여러 컴퓨터로부터 받은 데이터들은 전송 계층에서 분류된 후에 애플리케이션 계층의 프로그램에 전달되는데, 이때 사용되는 분류 기준이 포트 번호입니다.
이를테면, 하나의 컴퓨터에서 웹 브라우저로 인터넷 서핑을 하면서 동시에 이메일 프로그램을 통해 이메일을 주고받는 상황을 생각해 볼 수 있습니다.
이때 두 응용 프로그램 모두 같은 IP 주소를 사용하지만, 웹 브라우저는 주로 포트 번호 80(HTTP) 또는 443(HTTPS)을 사용하고, 이메일은 25(SMTP)나 110(POP3), 143(IMAP)과 같은 별도의 포트를 사용합니다.
전송 계층에서는 이처럼 같은 IP 주소로 들어온 데이터라도 포트 번호를 통해 어떤 응용 프로그램으로 전달할지 정확히 구분하게 됩니다.
전송 계층의 주요 프로토콜로는 TCP와 UDP가 있습니다.
# 03. 인터넷 계층 ( Internet Layer )
인터넷 계층의 역할은 송신지 컴퓨터의 데이터를 수신지 컴퓨터까지 전달하는 것입니다.
인터넷에는 수많은 컴퓨터가 연결되어 있기 때문에 수신지 컴퓨터를 정확하게 찾아내기 위해서는 고유 식별자가 필요한데, 이때 사용되는 식별자가 바로 IP 어드레스입니다.
하지만 이 IP 어드레스에는 지리적인 위치 정보가 포함되어있지 않은데요, 그래서 데이터가 전달될 수신지를 찾기 위해서는 라우터(rotuer)라는 네트워크 장비를 활용해야 합니다.
IP 어드레스를 보면 소속된 네트워크가 어디인지 알 수 있는데, 해당 네트워크에 연결된 라우터를 추적하다 보면 그 장비가 최종적으로는 목표로 한 수신지 컴퓨터를 찾게 되고 송신지에서 수신지까지 연결되는 통신 경로를 만들 수 있게 됩니다.
인터넷 계층의 주요 프로토콜로는 IP, ICMP 등이 있습니다.
# 04. 네트워크 인터페이스 계층 ( Network Interace Layer )
네트워크 인터페이스 계층은 TCP/IP 계층 모델 중 가장 아래에 있습니다.
네트워크 어댑터와 같이 하드웨어와 맞닿은 부분까지 혹은 경우에 따라서는 하드웨어까지 포함해서 네트워크 인터페이스 계층이라고 말합니다.
네트워크 인터페이스 계층의 역할은 TCP/IP 데이터가 실제 네트워크를 통해 전달될 수 있도록 물리적인 전송 기반을 마련해 주는 것입니다.
네트워크 인터페이스 계층의 주요 프로토콜로는 이더넷 (Ethernet), Wi-Fi 등이 있습니다.
# 05. TCP/IP 네트워크 흐름
지금까지 배운 각 계층에서의 역할을 기반으로 TCP/IP 네트워크 통신이 어떻게 이루어지는지 예시를 통해 살펴보겠습니다.
사용자가 웹페이지를 요청했다고 합시다.
1. 애플리케이션 계층
사용자가 웹 브라우저를 통해 특정 웹사이트에 접속하면, HTTP 프로토콜을 이용해 요청 메세지를 만듭니다.
예를 들어 https://unsemawang.com 이라는 주소로 접속을 시도하면 HTTP 요청 메세지가 만들어지는데, 이때 헤더에 다음과 같은 형태의 메세지가 만들어집니다.
GET / HTTP//1.1
Host: www.unsemawang.com
2. 전송 계층
HTTP 요청 메세지를 받은 전송 계층은 TCP를 사용하여 데이터를 세그먼트(segment)로 나누고, 여기에 포트 번호 (HTTPS의 경우 일반적으로 443 ) 을 붙여 목적지의 서버 애플리케이션까지 정확하게 전달될 수 있도록 준비합니다.
이때 데이터를 세그먼트 단위로 나누는 이유는 TCP/IP의 패킷 교환 방식에 있습니다.
간단하게 말해서 데이터를 작은 단위로 나누어 네트워크에 흘려보내는 방식입니다.
3. 인터넷 계층
전송 계층에서 전달된 데이터를 받아 목적지 서버의 IP 주소와 나의 IP 주소를 붙여 패킷(Packet)을 만듭니다.
IP 프로토콜은 이 패킷을 목적지까지 라우터를 통해 전달될 수 있도록 경로를 결정하는 라우팅을 수행합니다.
4. 네트워크 인터페이스 계층
인터넷 계층에서 만들어진 패킷은 네트워크 인터페이스 계층에서 물리적 주소 정보를 덧붙여 프레임(Frame)이 됩니다.
이렇게 만들어진 프레임은 이더넷이나 Wi-Fi 같은 네트워크 표준을 통해 실제 전기 신호 또는 무선 신호로 변환한 뒤, 목적지를 향해 전송됩니다.
최종적으로 상대 서버는 이 흐름을 역순으로 처리하여 프레임에서 다시 패킷을 추출하고, IP 주소를 확인한 뒤 세그먼트 단위로 나누어 전송 계층을 거쳐 애플리케이션 계층까지 전달됩니다. 이후 서버는 요청한 내용을 처리한 뒤 다시 응답 데이터를 위와 같은 역순으로 만들어 사용자에게 전송하게 됩니다.
# 06. OSI 참조 모델
네트워크 관련 공부를 하다 보면 OSI 참조 모델이 언급되기도 하는데, OSI 참조 모델은 지금까지 알아본 TCP/IP 계층 모델보다 더 세분화된 7개의 계층으로 구성되어 있습니다.
지금까지 TCP/IP에 대해 알아보았습니다.
각 계층에 대해서도 깊게 다루면 할 얘기가 많아지므로 이후 기회가 된다면 각 계층에 대한 글도 작성해 보도록 하겠습니다.
'CS&Network' 카테고리의 다른 글
웹소켓(WebSocket) 가볍게 알아보기 + STOMP 프로토콜 (0) | 2025.04.28 |
---|---|
더 좋은 설계를 위한 S.O.L.I.D 원칙 이해하기 (0) | 2025.03.11 |