📡 인터넷 통신의 핵심 - TCP, IP 그리고 UDP 이해하기
TCP와 IP?
우리가 매일 사용하는 웹사이트, 이메일 전송, 파일 다운로드 등은 모두 TCP와 IP라는 두 가지 핵심 기술 덕분에 가능하다. 이 둘은 마치 택배를 보낼 때 주소와 배달 서비스 역할을 담당하는 것과 같다.
IP - 인터넷의 주소 체계
IP(Internet Protocol)는 쉽게 인터넷상의 주소이다. 전 세계 모든 컴퓨터나 장치는 고유한 IP 주소를 가지고 있다. 마치 배달을 받기 위해 집 주소가 필요하듯 IP 주소는 데이터 패킷(Packet)이 올바른 목적지로 전달되도록 길을 안내하는 역할을 한다.
IP는 크게 두가지 버전이 있다.
IPv4: 32비트 주소 체계로 222.239.104.204같은 형태를 가진다. 현재는 인터넷의 성장으로 주소가 부족한 문제가 있다.
IPv6: 128비트 주소 체계로 2001:0db8::1처럼 더 길고 복잡한 형태를 가진다. 주소 공간이 사실상 무한에 가까워 앞으로는 IPv6가 점점 더 많이 사용될 것이다.
또한 IP 주소는 단순히 하나의 장치를 가리키는 것뿐 아니라 다양한 용도로 쓰인다.
- Unicast: 특정 한 대의 장치와 통신
- Broadcast: 네트워크 전체에 알림
- Multicast: 특정 그룹의 장치에만 전송
다만 IP 자체는 단순히 어디로 가야 하는지 주소만 알려줄 뿐 데이터의 도착 여부나 손실 여부는 확인하지 않는다. 마치 택배를 보내 놓고 실제로 배달이 이루어졌는지는 신경 쓰지 않는 것과 같다.
TCP - 신뢰할 수 있는 프로토콜
TCP(Transmission Control Protocol)는 데이터가 손실 없이 올바른 순서대로 전달되도록 보장하는 신뢰성 높은 프로토콜이다. IP가 어디로 보낼지를 알려준다면 TCP는 어떻게 보낼지를 책임진다.
TCP는 IP 주소를 기반으로 데이터를 전달하지만 한 컴퓨터 안에는 여러 프로그램이 동시에 통신할 수 있다. 예를 들어 웹 브라우저와 이메일 프로그램이 동시에 인터넷을 쓴다면 각각의 데이터가 서로 섞이지 않고 정확히 전달되어야 한다.
이를 위해 TCP는 포트 번호(Port Number)를 가진다. 출발지 포트(Source Port)와 목적지 포트(Destination Port)로 프로그램을 구분한다.
TCP의 주요 특징
- 연결 지향적(Connection-oriented)
데이터를 보내기 전에 송신자와 수신자가 먼저 연결을 맺는다. (3-way handshake) - 데이터 분할과 재조립
큰 데이터를 여러 개의 작은 조각(세그먼트)으로 나눠서 전송하고 수신 측에서는 이를 다시 원래대로 조립한다. - 순서 보장
네트워크를 통해 전달되는 조각들이 순서가 뒤바뀌더라도 TCP는 올바른 순서대로 재정렬해준다. - 에러 검사와 재전송
데이터가 손상되거나 중간에 유실되면 TCP는 이를 감지하고 다시 전송하여 누락 없이 전달되도록 한다. - 흐름 제어와 혼잡 제어
수신자가 처리할 수 있는 속도를 고려해 전송 속도를 조절하고 네트워크가 혼잡할 때는 속도를 줄여 안정적으로 통신이 이루어지도록 한다.
TCP/IP 그리고 UDP
IP는 데이터를 목적지까지 보내는 주소 체계를 TCP는 그 데이터가 안전하고 온전하게 도착했는지 확인하는 신뢰성을 담당한다. 그리고 IP의 한계를 보완한 이 둘의 조합을 TCP/IP라고 부른다.
오늘날 인터넷에서 우리가 사용하는 대부분의 서비스는 TCP/IP위에서 동작한다.
웹 브라우징(HTTP/HTTPS) → TCP가 안정적인 연결을 보장해 웹 페이지를 빠짐없이 받아올 수 있다.
이메일(SMTP, IMAP, POP3) → 중요한 메시지가 손실되지 않고 안전하게 도착한다.
파일 전송(FTP, SFTP 등) → 큰 파일을 조각내어 전송한 뒤 다시 정확히 조립한다.
그러나 최근 인터넷 환경에서 실시간성이 중요해지면서 UDP사용이 증가하고 있다. TCP는 연결 지향적이라는 특징 때문에 신뢰성은 높지만 속도가 느리다는 단점이 있다.
반대로 UDP(User Datagram Protocol)는 TCP와 달리 신뢰성보다는 속도와 효율을 우선시하는 전송 프로토콜이다.
- 비연결형(Connectionless)
데이터를 보내기 전에 송신자와 수신자가 연결을 맺지 않는다. - 순서·재전송 없음
데이터가 중간에 손실되거나 뒤바뀌더라도 그대로 전달된다. - 간단한 헤더
TCP보다 구조가 가볍고 처리 속도가 빠르다.
따라서 온라인 게임이나 실시간 스트리밍처럼 속도가 중요한 경우 UDP를 주로 사용한다.