인터넷에서 데이터를 주고받는 통신 규칙
IP는 지정된 IP 주소(IP Address)에 데이터를 전달하고,
이 데이터를 패킷(Packet)이라는 작은 단위로 나누어 보낸다.
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
IP는 데이터를 보내기 전에 수신 대상이 온라인 상태인지, 데이터를 받을 준비가 되었는지 확인하지 않는다.
따라서 수신자가 없거나 서비스가 불가능한 상태라도 패킷을 무조건 보낸다.
패킷소실, 패킷전달순서문제
IP는 패킷이 올바르게 전달되었는지 확인하는 기능이 없다.
패킷이 중간에 사라지거나, 전송 순서가 뒤바뀌어도 이를 알려주거나 다시 정렬해주지 않는다.
한 서버에 여러 프로그램이 실행되고 있을 때, IP 주소만으로는 어떤 프로그램에 패킷을 보내야 할지 구분할 수 없다.
이러한 IP의 문제를 해결하기 위해 TCP와 UDP라는 상위 프로토콜이 사용된다.
IP 위에 위치하여 데이터의 신뢰성과 효율성을 높이는 역할을 한다.
전송 제어 프로토콜(Transmission Control Protocol)
TCP는 신뢰성 있는 통신을 목표로 하는 프로토콜이다.
데이터를 정확하고 순서에 맞게 전달하는데 중점을 둔다.
IP 패킷이 출발지 IP와 목적지 IP를 포함하는 것과 달리,
TCP는 출발지 포트와 목적지 포트 정보를 포함한 TCP 세그먼트를 사용한다.
이 포트 번호 덕분에 같은 IP 주소를 사용하는 여러 애플리케이션을 구분할 수 있다.
TCP는 데이터를 보내기 전에 TCP 3 way handshake 과정을 통해 가상 연결을 설정한다.

이 과정을 통해 양쪽 모두 데이터 전송 준비가 되었음을 확인한다.
TCP는 데이터가 올바르게 수신되었는지 확인하고,
만약 누락되거나 순서가 뒤바뀐 패킷이 있다면 재전송을 요청하여 순서를 보장하고, 데이터 손실을 방지한다.
이러한 특성 덕분에 TCP는 웹 브라우징, 이메일, 파일 전송과 같이 정확한 데이터 전달이 중요한 서비스에 주로 사용된다.
사용자 데이터그램 프로토콜(User Datagram Protocol)
UDP는 TCP와 달리 단순하고 빠른 통신을 목표로 하는 프로토콜이다.
UDP는 IP에 포트와 간단한 체크섬(오류검사)기능만 추가한 매우 단순한 프로토콜이다.
'하얀 도화지'에 비유될 정도로 최소한의 기능만 제공한다.
UDP는 3 way handshake 같은 연결 설정 과정이 없다.
따라서 데이터를 보내기 전에 수신자의 상태를 확인하지 않으며, 데이터가 제대로 도착했는지 보장하지 않는다.
순서가 뒤바뀌거나 패킷이 손실될 수도 있다.
데이터 전달 보증이나 순서 보장과 같은 복잡한 과정이 생략되기 때문에, UDP는 TCP보다 훨씬 빠르다.
이 때문에 실시간성이 중요한 온라인 게임, 음성 및 영상 스트리밍과 같은 서비스에 적합하다.
애플리케이션 개발자가 데이터 손실에 대한 처리를 직접 구현해야 하지만, 그만큼 자유도 높아진다.
컴퓨터 네트워크에서 하나의 IP 주소 내에서 여러 개의 프로세스를 구분하기 위한 논리적인 번호
IP 주소가 특정 서버의 집 주소라면,
PORT는 그 집 안에 있는 방 번호와 같아 정확한 애플리케이션에 데이터를 전달할 수 있게 한다.
한 서버에서 웹 서비스, FTP, 이메일 등 여러 애플리케이션이 동시에 실행될 때,
IP 주소만으로는 어떤 애플리케이션으로 데이터를 보낼지 알 수 없다. 포트 번호가 이 문제를 해결 해준다.
포트 번호는 0부터 65,353까지 할당할 수 있다.
'잘 알려진 포트(Well-known Ports)'로,
FTP(20, 21), SSH(22), TELNET(23), HTTP(80), HTTPS(443) 등 특정 표준 서비스에 예약되어 있다.
보안 및 충돌 문제로 인해 개인이 임의로 사용하지 않는 것이 좋다.
'등록된 포트(Registered Ports)'로, 특정 기업이나 서비스에 할당된다.
'동적/개인 포트(Dynamic/Private Ports)'로, 클라이언트가 서버에 연결할 때 임시로 할당되는 포트이다.
클라이언트가 웹 서버에 접속할 때,
IP 주소(예: 123.45.67.89)와 포트 번호(예: 80)를 함께 사용하여 123.45.67.89:80처럼 통신 요청을 보낸다.
이를 통해 서버는 들어온 요청을 80번 포트를 사용하는 웹 서비스로 정확히 전달한다.
도메인 네임 시스템(Domain Name System)
DNS는 인터넷의 전화번호부와 같다.
사용자가 기억하기 쉬운 도메인 이름(예: https://www.google.com/search?q=google.com)을 컴퓨터가 인식하는 IP 주소(예: 172.217.161.42)로 변환해주는 시스템
IP 주소는 숫자 조합이라 외우기 어렵고 자주 바뀔 수 있다.
DNS는 이러한 문제를 해결하여 사용자가 외우기 쉬운 도메인 이름으로 웹사이트에 접속할 수 있도록 해준다.
웹사이트의 서버 IP 주소가 변경되어도, DNS에서 도메인에 연결된 IP 주소 정보만 바꾸면 되기 때문에 사용자는 변경된 IP 주소를 알 필요 없이 기존 도메인 이름으로 계속 접속할 수 있다.
즉, DNS는 사용자의 요청을 받아 도메인 이름을 해당 IP 주소로 변환해주는 역할을 함으로써 인터넷을 더 편리하게 만들어준다.
IP (인터넷 프로토콜) : 데이터 패킷을 인터넷상의 목적지 주소로 보내는 역할
TCP : 데이터의 정확성과 순서를 보장하여 신뢰성 있는 통신을 제공
UDP : 신뢰성보다 속도를 우선하여 빠르게 데이터를 전송
PORT (포트) : 하나의 IP 주소 내에서 특정 애플리케이션을 구분하는 번호
DNS (도메인 네임 시스템) : 사람이 기억하기 쉬운 도메인 이름을 IP 주소로 변환해주는 시스템
이미지 출처: 인프런, 모든 개발자를 위한 HTTP 웹 기본 지식, 김영한