컴퓨터끼리 네트워크를 통해 데이터를 주고받기 위해서는 그 네트워크에서 통용되는 '프로토콜(Protocol)'을 따라야 합니다.
프로토콜(Protocol):
컴퓨터들이 네트워크를 통해 데이터를 주고받기 위한 '통신 규약'을 말합니다.
인터넷은 전 세계에서 가장 거대한 네트워크이긴 하지만, 유일한 네트워크는 아닙니다. 하지만 인터넷이 전 세계 컴퓨터 네트워크의 표준이라 할 수 있을 정도이고,
따라서 이 인테넷의 통신 프로토콜로 사용되는 'TCP/IP'도 실직적인 표준 프로토콜로 볼 수 있습니다.
TCP/IP:
표준 프로토콜로, 인터넷(네트워크)에서 데이터를 주고 받는 데 필요한 일련의 '프로토콜 모음(Suite)'입니다.
TCP/IP 는 네 개의 계층으로 구성되어 있으며,
'한 계층 위에 다른 계층이 포개어져 있는 형태'이기 때문에 TCP/IP 스택이라고 부르기도 합니다.
TCP/IP는 TCP와 IP를 중심으로 여러 프로토콜이 계층적(4개의 계층)으로 구성되어 있으며, 각 계층은 특정 기능을 담당합니다.
: 물리적인 네트워크 연결을 담당합니다. 랜 카드, 네트워크 케이블 등이 이 계층에 속합니다.
(링크 계층에서 네트워크의 물리적인 연결 매체를 통해 '패킷'을 주고받는 작업을 담당해주기 때문에, TCP/IP는 네트워크의 물리적인 구성으로부터 독립적인 프로토콜입니다. 컴퓨터가 WiFi로 연결되어 있든, LAN에 이더넷 케이블로 연결되어있든 전혀 신경 쓰지 않습니다.)
어떤 패킷이 네트워크(인터넷)을 통해 컴퓨터에 들어오면 가장 먼저 링크 계층이 맞이합니다. 링크 계층은 이 패킷에서 물리적 데이터 전송에서 사용되던 부분을 제거하고, 인터넷 계층에 넘깁니다. 따라서 인터넷 계층에서는 패킷이 전파를 타고 넘어왔든 광케이블을 타고 넘어왔든 간에 전혀 신경 쓰지 않고 자신의 일을 처리할 수 있습니다.
: IP 주소를 사용하여 데이터를 목적지까지 전달하는 역할을 합니다.
(패킷을 수신해야 할 상대의 '주소를 지정'하고, 나가는 패킷에 대해서는 적절한 크기로 '분할'하며, 들어오는 패킷에 대해서는 '재조립'을 수행합니다.
이러한 인터넷 계층에서 사용되는 프로토콜(규약)이 인터넷 프로토콜Internet Protocol, 즉 IP입니다.)
IP는 내보낸 패킷을 상대방이 잘 수령했는지에 대해 전혀 보장하기 않고, 그저 전송 계층에서 내려온 패킷에 주소를 붙여 링크 계층(네트워크 계층)으로 보내기만 할 뿐입니다. 따라서 여러 개의 패킷을 전송했을 때 '순서'대로 도착하는지 여부도 신경쓰지 않습니다.
: TCP와 UDP 프로토콜을 사용하여 데이터를 안전하게 '전송'하고, 순서대로 조립하는 역할을 합니다.
(이름 그대로 패킷의 '운송'을 담당하는 프로토콜들이 정의되어 있는 계층입니다.
그 중에서 전송 제어 프로토콜(TCP: Transmission Control Protocol) 은 송신 측과 수신 측 간의 '연결성'을 제공하며, '신뢰'할 수 있는 패킷 전송 서비스를 제공합니다. IP와 달리, 여러 개의 패킷을 송신하는 경우 패킷 사이의 '순서'를 보장하며, 패킷이 유실되면 재전송해주기까지 합니다.
단, TCP는 IP가 제공하지 않는 이러한 연결성과 신뢰성을 제공하느라 '성능에서 손실'이 발생합니다. 데이터가 큰 경우에는 여러 패킷에 나눠 담아 순서대로 보내야 하지만, '데이터가 충분히 작은 경우'에는 하나의 패킷에 담아 보내도 됩니다. 데이터가 충분히 작은 경우에는 TCP가 제공하는 패킷의 순서 보장성이 필요 없는 것입니다. 또한 받아도, 안 받아도 상관 없는 패킷의 경우에는 재전송도 필요가 없습니다.
따라서 '충분히 작고', '신뢰성을 요구하지 않는' 데이터의 경우 TCP의 연결성과 신뢰성이 됩니다.
이를 위한 대안으로 전송 계층에서는 UDP(User Datagram Protocol) 라는 프로토콜이 정의되어 있습니다. UDP 프로토콜은 연결성도, 신뢰성도 제공하지 않는 대신 성능이 TCP에 비해 우수하기 때문에 전송 제어를 직접 처리하는 애플리케이션 수준에서 채용되는 경우가 많습니다.)
: HTTP, FTP, SMTP 등 다양한 애플리케이션 프로토콜을 사용하여 사용자에게 서비스를 제공합니다.
(각 응용 프로그램의 프로토콜들이 정의되는 계층입니다. HTTP, FTP, SMTP 등이 애플리케이션 계층에 정의된 대표적인 프로토콜들입니다.
애플리케이션 계층의 프로토콜들은, 전송 계층의 프로토콜 중 TCP에 기반할 수도 있고, UDP에 기반할 수도 있습니다.
또한 HTT, FTP처럼 표준화된 프로토콜이 아니더라도, 이 계층에서 우리 나름대로의 프로토콜을 정의해서 사용할 수 있습니다.)
TCP (Transmission Control Protocol)
TCP는 연결 지향형 프로토콜로, 데이터를 안정적으로 전송하기 위한 기능을 제공합니다.
IP (Internet Protocol)
IP는 비연결형 프로토콜로, 데이터를 패킷 단위로 전송합니다.
비유를 통해 설명하면, TCP/IP는 택배 시스템과 유사합니다.
TCP/IP는 인터넷, 인트라넷, VPN 등 다양한 네트워크 환경에서 사용됩니다. 웹 브라우징, 이메일, 파일 전송, 온라인 게임 등 인터넷을 사용하는 모든 애플리케이션은 TCP/IP를 기반으로 통신합니다.
패킷은 영어로 '소포'를 뜻합니다. 그리고 네트워크를 오가는 데이터를 패킷이라고 부릅니다. 그냥 데이터로 부르지 않는 이유는, 네트워크를 통해 전송되는 데이터도 '소포'처럼 포장지가 필요하기 때문입니다. 포장지로 데이터를 싸서 보호하고, 데이터가 어디에서 어디로 가는지를 기입해야 합니다. 따라서 이렇게 포장지로 포장된 데이터를 일컬어 '패킷'이라고 부르는 것입니다.
네트워크 패킷은 일반적인 소포와 다르게 여러 겹의 포장지로 포장됩니다.
데이터를 보낼 때는 애애플리케이션 계층부터 시작해서 링크 계층까지 포장을하고,
데이터를 받을 떄는 링크 계층부터 시작해서 애플리케이션 계층까지 포장지를 뜯어 내용물을 꺼냅니다.