Aggiornato 1 mese fa
OSI 모델은 설계도다. TCP/IP는 실제 건물이다.
네트워킹 강좌에서는 우아한 7계층 OSI 모델을 가르치지만, 인터넷은 더 복잡하고 실용적인 4계층 TCP/IP 모델 위에서 돌아간다. 1970년대 ARPANET을 실제로 구축하던 DARPA 엔지니어들이 개발한 TCP/IP는 성공적인 시스템의 근본 진실을 보여준다—시스템은 문제를 예측하는 위원회가 아니라, 문제를 직접 해결하는 사람들이 만든다는 것이다.
이름은 모델의 핵심을 이루는 두 프로토콜에서 비롯된다: 신뢰할 수 있는 전달을 위한 TCP(Transmission Control Protocol)와 주소 지정 및 라우팅을 위한 IP(Internet Protocol). 하지만 "TCP/IP"는 웹 브라우징부터 화상 통화까지 모든 것을 지원하는 수백 개의 프로토콜 모음 전체를 가리키는 약칭이 되었다.
4개의 계층
TCP/IP는 네트워킹을 4개의 계층으로 구성하며, 각 계층은 명확한 역할을 맡는다:
| 계층 | 이름 | 기능 | 주요 프로토콜 |
|---|---|---|---|
| 4 | 응용 | 사용자 서비스 및 데이터 형식 정의 | HTTP, DNS, SMTP, SSH |
| 3 | 전송 | 애플리케이션 간 종단 간 전달 | TCP, UDP |
| 2 | 인터넷 | 네트워크 간 주소 지정 및 라우팅 | IP, ICMP |
| 1 | 네트워크 접근 | 물리적 전송 및 로컬 전달 | Ethernet, Wi-Fi |
이것은 의도적으로 OSI의 7계층보다 단순하다. TCP/IP 설계자들이 게으른 것이 아니었다—OSI의 별도 세션 계층과 표현 계층처럼 복잡성만 추가할 뿐 실제 문제를 해결하지 않는 구분이 있다는 걸 알고 있었던 것이다.
계층 1: 네트워크 접근
네트워크 접근 계층은 이더넷 케이블, Wi-Fi 연결, ISP까지의 광섬유 회선처럼 단일 물리적 네트워크를 통해 데이터를 전달하는 역할을 한다.
이 계층은 TCP/IP 모델에서 의도적으로 느슨하게 정의되어 있으며, 그 느슨함 자체가 장점이다. 상위 인터넷 프로토콜들은 구리선으로 연결되든, 전파를 쓰든, 레이저 빔을 쓰든 상관하지 않는다. 단지 네트워크 접근 계층이 직접 연결된 장치들 사이에 프레임을 전달해 주기만 하면 된다.
이 계층에서는 이더넷과 Wi-Fi가 지배적이다. 이들은 복잡한 세부 사항들을 처리한다: 비트를 전기 신호로 인코딩하고, 여러 장치가 같은 매체를 공유할 때 접근을 조율하며, MAC 주소로 로컬 장치를 식별하고, 전송 오류를 감지한다.
추상화의 힘이 여기에 있다: 이더넷 케이블을 Wi-Fi로 바꿔도 네트워크 접근 계층 위에 있는 어떤 계층도 알아채지 못한다.
계층 2: 인터넷
인터넷 계층이야말로 핵심이다. 인터넷을 가능하게 하는 근본적인 문제를 해결한다: 완전히 다른 네트워크에 있는, 어쩌면 지구 반대편에 있는 장치로 어떻게 데이터를 전달할 것인가?
그 답이 바로 IP—Internet Protocol이다. IP는 다음을 제공한다:
전 세계 주소 지정: 모든 장치는 연결된 모든 네트워크에서 고유하게 식별되는 IP 주소를 받는다. 로컬에서만 의미 있는 MAC 주소와 달리, IP 주소는 전 세계 어디서든 라우팅이 가능하게 한다.
라우팅: IP 패킷은 목적지에 도달하기 위해 수십 개의 네트워크를 가로질러 이동할 수 있다. 경로상의 각 라우터는 목적지 IP 주소를 확인하고 목적지를 향해 한 홉씩 패킷을 전달한다.
물리적 네트워크로부터의 독립성: IP는 어떤 네트워크 접근 기술을 사용하는지 신경 쓰지 않는다. 이 덕분에 노트북(Wi-Fi)에서 출발한 패킷이 라우터(이더넷)를 거쳐 ISP(광섬유)를 지나 해저 케이블을 통해 다른 대륙의 서버 팜까지 이동할 수 있는 것이다.
IP에는 두 가지 버전이 있다: IPv4(192.168.1.1 같은 32비트 주소를 사용하는 원조 버전)와 IPv6(IPv4 주소 고갈 문제를 해결하기 위해 설계된, 128비트 주소를 사용하는 새 버전).
ICMP(Internet Control Message Protocol)도 이 계층에 속한다—ping과 traceroute를 작동하게 하고, 라우터가 "목적지 도달 불가" 오류를 보고하는 방식이다.
계층 3: 전송
인터넷 계층은 패킷을 올바른 장치까지 전달한다. 전송 계층은 그 장치의 올바른 애플리케이션까지 데이터를 전달한다.
여기서 포트 번호가 등장한다. 패킷이 컴퓨터에 도착했을 때, 시스템은 그것이 웹 브라우저를 위한 것인지, 이메일 클라이언트를 위한 것인지, 화상 통화를 위한 것인지 어떻게 알까? 바로 포트 번호 덕분이다. HTTP는 포트 80을, HTTPS는 443을, DNS는 53을 사용한다. 전송 계층은 다중화를 담당한다—여러 애플리케이션이 하나의 IP 주소를 공유하되 포트로 구분된다.
하지만 전송 계층의 더 중요한 역할은 데이터를 어떻게 전달할지 결정하는 것이다. 두 프로토콜은 완전히 다른 방식을 제공한다:
TCP는 신뢰할 수 있는 선택이다. 연결을 수립하고, 전달을 보장하며, 패킷이 순서대로 도착하도록 하고, 네트워크가 혼잡할 때 속도를 낮춘다. 패킷이 손실되면 TCP가 재전송한다. 웹 브라우징, 이메일, 파일 전송—데이터 손실이 용납되지 않는 모든 것은 TCP를 사용한다.
UDP는 빠른 선택이다. 연결 없음, 보장 없음, 재전송 없음. 패킷이 손실되면 그냥 사라진다. 화상 통화를 떠올리기 전까지는 이것이 끔찍하게 들린다: 이미 쓸모없어진 데이터의 재전송을 기다리며 화면이 멈추는 것보다, 잠깐 끊기는 게 낫지 않을까? DNS 쿼리, 스트리밍 비디오, 온라인 게임, VoIP—완벽함보다 속도가 중요하기 때문에 모두 UDP를 사용한다.
계층 4: 응용
응용 계층은 그 나머지 전부를 담당한다. 프로토콜들이 애플리케이션이 실제로 어떻게 통신하는지 정의하는 곳이다—HTTP 요청의 구조, DNS 쿼리의 형식, SMTP 이메일 교환의 명령들.
OSI 모델은 이것을 세 계층(세션, 표현, 응용)으로 나눈다. TCP/IP는 그렇게 하지 않는다. 실제로 이 문제들은 너무 서로 얽혀 있어서 분리하면 명확해지는 게 아니라 오히려 혼란만 커진다.
이 계층이 바로 우리가 실제로 네트워크와 만나는 지점이다, 알아채지 못하더라도. 웹 페이지를 불러올 때마다 브라우저는 HTTP를 사용한다. 도메인 이름을 입력할 때마다 DNS가 그것을 IP 주소로 변환한다. 프로토콜들은 보이지 않지만, 모든 일을 묵묵히 해내고 있다.
계층을 통한 데이터 흐름
웹 페이지를 요청할 때:
- 응용: 브라우저가 페이지에 대한 HTTP 요청을 만든다
- 전송: TCP가 요청을 세그먼트로 나누고, 포트 번호를 추가하며, 연결을 관리한다
- 인터넷: IP가 출발지와 목적지 주소를 추가하고, 서버를 향해 라우팅한다
- 네트워크 접근: 이더넷(또는 Wi-Fi)이 로컬 전송을 위해 패킷을 프레임에 담는다
각 계층은 이전 계층의 데이터를 겹겹이 감싸며 자체 헤더를 추가한다. 이것이 캡슐화(encapsulation)다—단순한 HTTP 요청이 선에 도달할 즈음에는 훨씬 더 큰 이더넷 프레임이 되어 있는 이유다.
목적지에서는 이 과정이 역으로 진행된다. 각 계층은 헤더를 벗겨내고 페이로드를 다음 계층으로 올려 보내며, 최종적으로 HTTP 요청이 웹 서버에 닿는다.
TCP/IP 대 OSI: TCP/IP가 이긴 이유
OSI 모델은 7개의 세심하게 정의된 계층을 가지고 있다. 이론적으로는 우아하다. 국제 표준 위원회가 설계했다.
TCP/IP는 다소 느슨한 4개의 계층을 가지고 있다. 실용적이다. 실제로 돌아가는 코드를 세상에 내보내야 했던 엔지니어들이 설계했다.
TCP/IP가 이긴 것은 먼저 작동했기 때문이다. OSI 표준이 완성될 무렵, TCP/IP는 이미 ARPANET을 운영하고 있었다. 인터넷은 TCP/IP의 토대 위에서 성장했고, 네트워크 효과는 전환을 생각조차 할 수 없게 만들었다.
OSI 모델은 교육 도구로, 그리고 네트워킹 개념을 이야기할 때 쓰는 공통 어휘로 살아남았다. 누군가 "3계층 스위치"나 "7계층 방화벽"이라고 말할 때, 그들은 OSI 용어를 쓰고 있는 것이다. 하지만 그 장치들을 실제로 흐르는 패킷들은 TCP/IP를 따른다.
왜 이것이 중요한가
TCP/IP의 계층 구조를 이해하면 문제를 해결하는 방식이 달라진다:
-
웹사이트에 접속할 수 없다면? 맨 아래부터 시작하라. 네트워크 접근이 작동하는가(라우터가 보이는가)? 인터넷 계층이 작동하는가(서버의 IP를 ping할 수 있는가)? 전송이 작동하는가(포트 443으로 연결할 수 있는가)? 그런 다음에야 응용 계층을 확인하라.
-
TCP와 UDP 중 무엇을 선택할지는 전송 계층이 무엇을 제공하는지—그리고 그 대가가 무엇인지—이해해야 한다.
-
보안 도구들은 각기 다른 계층에서 작동한다. 패킷 필터는 인터넷 계층과 전송 계층의 헤더를 검사한다. 애플리케이션 방화벽은 HTTP 요청을 검사한다. 계층을 이해하면 각 도구가 무엇을 볼 수 있고 볼 수 없는지 파악할 수 있다.
TCP/IP 모델은 단순한 이론 지식이 아니다. 당신이 보내는 모든 패킷이 우리가 인터넷이라 부르는 전 세계 네트워크들의 네트워크를 통해 길을 찾는 방법의 지도다.
TCP/IP 모델에 관해 자주 묻는 질문
TCP/IP는 왜 OSI의 7계층 대신 4계층인가?
TCP/IP는 이론적 체계를 설계하는 위원회가 아니라, 당면한 문제를 해결하는 엔지니어들이 만들었다. 그들은 실제로 구분할 필요가 없는 계층들을 합쳤다. 네트워크 접근 계층은 OSI의 물리 계층과 데이터 링크 계층을 합친 것인데, 인터넷 프로토콜들이 그 둘을 구별할 필요가 없기 때문이다. 응용 계층은 세션, 표현, 응용을 합친 것인데, 실제 프로토콜에서 이 문제들은 보통 함께 처리되기 때문이다.
TCP와 UDP 중 언제 무엇을 사용해야 하는가?
데이터 무결성이 속도보다 중요할 때 TCP를 사용하라—웹 페이지, 이메일, 파일 전송, 데이터 손실이나 순서 뒤바뀜이 문제를 일으키는 모든 것. 지연 시간이 완벽함보다 중요할 때 UDP를 사용하라—스트리밍 비디오, 온라인 게임, VoIP, DNS 쿼리. 스스로에게 이렇게 물어보라: "약간 오래된 데이터가 아예 없는 것보다 나은가?" 그렇다면 UDP. 아니라면 TCP.
포트 번호는 어떻게 작동하는가?
포트 번호는 장치에서 실행 중인 특정 애플리케이션을 식별한다. 패킷이 도착하면, 목적지 포트가 운영체제에게 어느 애플리케이션이 받아야 하는지 알려준다. 잘 알려진 포트(0~1023)는 표준화되어 있다: HTTP는 80, HTTPS는 443, SSH는 22, DNS는 53. 컴퓨터는 나가는 연결에 임의의 높은 번호 포트를 선택하므로, 응답이 올바른 애플리케이션으로 돌아올 수 있다.
패킷과 프레임의 차이는 무엇인가?
용어는 맥락마다 다르게 쓰이지만, 일반적으로 이렇게 구분한다: "프레임"은 네트워크 접근 계층의 단위(MAC 주소 포함), "패킷" 또는 "데이터그램"은 인터넷 계층의 단위(IP 주소 포함), "세그먼트"는 전송 계층의 단위(포트 번호 포함)다. 각 계층은 상위 계층을 캡슐화하므로, TCP 세그먼트는 IP 패킷 안에, IP 패킷은 이더넷 프레임 안에 들어간다.
Questa pagina è stata utile?