TCP/IP는 Transmission Control Protocol / Internet Protocol의 약자로 데이터를 안정적이고 정확하게 전송하기 위한 네트워크 프로토콜의 집합이다. 1970년대 미 국방부(DoD)가 설계하고 개발하였으며 오늘날의 인터넷을 가능하게 만든 핵심 기반 기술로 자리잡았다.
OSI 7계층 모델보다 간단한 4계층 구조를 채택하여 실제 시스템에 더 쉽게 적용할 수 있는 현실적이고 유연한 모델이다. OSI 모델이 이론적인 학습 및 설계 관점에서 유용하다면 TCP/IP는 실제로 널리 사용되고 있는 현실적인 네트워크 모델이라고 할 수 있다
4층 (L4) - 응용 계층 (Application Layer) — HTTP, FTP, DNS, SMTP 등
3층 (L3) - 전송 계층 (Transport Layer) — TCP, UDP
2층 (L2) - 인터넷 계층 (Internet Layer) — IP, ICMP, ARP
1층 (L1) - 네트워크 접근 계층 (Network Access Layer) — Ehternet(이더넷) 등
물리적인 데이터의 전송을 담당하는 계층으로 여기서는 인터넷 계층과 달리 같은 네트워크 안에서 데이터가 전송된다. 노드 간의 신뢰성 있는 데이터 전송을 담당하며, 논리적인 주소가 아닌 물리적인 주소인 MAC을 참조해 장비간 전송을 하고 기본적인 에러 검출과 패킷의 프레임화를 담당한다.
IP를 사용하여 데이터의 원천지(origin)과 목적지(destination)에 관한 정보를 첨부한다. IP는 복잡한 네트워크 망을 통하여 가장 효율적은 방법으로 데이터의 작은 조각들을 되도록 빨리 보내는 일을 한다. 따라서 IP는 패킷 전달 여부를 보증하지 않고 경로를 설정하여 어떻게든 빨리 보내도록 한다.
| Protocol | Content |
|---|---|
| IP | 비연결의 서비스를 제공하며 발신지와 목적지까지의 라우팅 경로를 결정 |
| ICMP | IP 제어와 메시지 기능을 담당 |
| ARP | IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜 (브로드캐스트 요청, 유니캐스트 응답) |
| RARP | MAC 주소에 해당하는 IP 주소를 알아오는 프로토콜 (브로드캐스트 요청, 유니캐스트 응답) |
통신 노드 간의 데이터 전송 및 흐름에 있어 신뢰성을 보장한다. 즉, 데이터를 적절한 어플리케이션에 제대로 전달되도록 배분함을 의미하며 다른 말로 End-to-End의 신뢰성을 확보 한다고도 표현할 수 있다. 전송 계층에 사용되는 대표적인 프로토콜로는 TCP와 UDP가 있다.
| Protocol | Content |
|---|---|
| TCP (Transmission Control Protocol) | 연결 지향적 신뢰적, 흐름제어, 에러제어 (순서번호, ACK 번호 사용) ACK 받지 못한 모든 데이터는 재전송 장점 : 보장된 세그멘트로 전달하기 때문에 신뢰성이 있다. 단점 : 연결을 위한 초기 설정 시간이 걸린다. |
| UDP (User Datagram Protocol) | 비연결 지향적 비신뢰적, 데이터를 보낸 후에 잘 도착했는지 검사 기능 없음 장점 : 빠르며 연결을 맺지 않으므로 제어 프레임 전송을 할 필요가 없기에 네트워크 부하를 줄일 수 있음 단점 : 신뢰성은 떨어짐 |
사용자와 가장 가까운 계층으로 사용자-소프트웨어 간 소통을 담당하는 계층이다. 웹 프로그래밍을 하면서 흔히 접하는 여러 서버나 클라이언트 관련 응용 프로그램들이 동작하는 계층이다. 주로 응용 프로그램(Application)들끼리 데이터를 교환하기 위한 계층이다.
| Protocol | Content |
|---|---|
| DNS (Domain Name System) | 인터넷에서 사용하는 이름을 해당 IP 주소로 변화해주는 서비스 |
| SNMP (Simple Network Managerment Protocol) | 네트워크 장비를 모니터링하고 제어하는 프로토콜 |
| FTP (File Transfer Protocol) | TCP 환경에서 파일 전송 프로토콜 |
| TFTP (Trival File Transfer Protocol) | UDP 환경에서 파일 전송 프로토콜 |
| HTTP (Hypertext Transfer Protocol) | 웹 상에서 정보를 주고받을 수 있는 프로토콜 |

이번에 TCP/IP 4계층 모델을 공부하면서 인터넷에서 발생하는 모든 통신 흐름이 정말 체계적으로 설계되어 있다는 걸 새삼 느꼈다. 각 계층이 맡은 역할이 명확하게 나뉘어 있고 데이터에 어떤 정보를 붙이는지도 단계마다 깔끔하게 정리되어 있어서 왜 계층형 아키텍처가 중요한지 다시 한번 실감할 수 있었다. 특히, 우리가 브라우저에서 HTTP 요청 한 번 보내는 그 짧은 순간에도 엄청나게 많은 절차와 프로토콜이 뒤에서 움직이고 있다는 걸 알게 되면서 평소엔 잘 느끼지 못했던 네트워크 구조의 복잡함과 정교함에 대해 인사이트를 얻을 수 있었다. 앞으로 네트워크 문제를 분석하거나 시스템 구조를 설계할 때, TCP/IP 계층별 흐름을 기준 삼아 접근하면 더 논리적이고 효과적인 대응이 가능할 것 같다.
참고