인터넷 통신은 결국
멀리 떨어진 컴퓨터끼리 데이터를 주고받는 과정이다.
구조는 단순하다.
요청(Request) → 응답(Response)
편지처럼 보내고, 전화처럼 묻고 답한다.
웹에서 버튼 하나 눌렀을 때도 이 구조는 그대로 유지된다.
IP는 인터넷에서 데이터를 전달하기 위한 기본 규칙이다.
IP의 역할
데이터를 작은 조각으로 나눈 통신 단위
(출발지 IP, 목적지 IP 같은 정보가 같이 들어간다)
⸻
IP는 단순하다. 그래서 한계도 명확하다.
상대 서버가 꺼져 있어도 그냥 보낸다.
→ 받는 쪽이 준비됐는지 모른다.
IP는 책임지지 않는다.
같은 IP에서 여러 프로그램이 동시에 통신하면?
어디로 보내야 할지 구분하지 못한다.
그래서 TCP가 등장한다.
애플리케이션 계층 (HTTP, FTP 등)
전송 계층 (TCP, UDP)
인터넷 계층 (IP)
네트워크 인터페이스 계층
우리가 개발자로서 주로 다루는 건
-> HTTP (애플리케이션 계층)
그 아래에서 실제 전송을 책임지는 게
-> TCP / UDP
TCP는 한마디로
“믿을 수 있는 통신”
SYN → SYN+ACK → ACK
연결이 성립된 뒤에 데이터 전송 시작.
보냈으면 → 잘 받았는지 확인한다.
패킷 순서가 꼬이면 재전송 요청한다.
정리하면
⸻
UDP는 TCP의 반대 느낌이다.
대신
그래서
같은 곳에서 사용된다.
-> 요즘 HTTP/3는 UDP 기반이다.
IP가 “건물 주소”라면
PORT는 “호수”다.
한 컴퓨터에서 여러 프로그램이 동시에 통신하려면
구분이 필요하다.
포트 범위
0 ~ 65535
잘 알려진 포트 (0~1023)
보통 개발할 때는 8080, 9090 이런 걸 많이 쓴다.
IP 주소는 사람이 기억하기 어렵다.
200.200.200.2
그래서 등장한 게 DNS.
도메인 → IP 변환 시스템이다.
예:
google.com → 142.xxx.xxx.xxx
전화번호부 같은 역할이다.
개발하다 보면 헷갈리는 개념이다.
: 리소스를 식별하는 통합 방식
URI는 큰 개념이고
그 안에 URL, URN이 포함된다.
⸻
리소스의 위치
https://example.com:8080/items/1?type=book#detail
구성요소
scheme://host:port/path?query#fragment
⸻
리소스의 이름
urn:isbn:8060777331
위치와 무관한 고유 이름.
실무에선 거의 URL만 사용한다고 보면 된다.
브라우저에 주소 입력하면 무슨 일이 벌어질까?
GET /search?q=hello HTTP/1.1
Host: www.google.com
HTTP 메시지를 TCP/IP 패킷에 담아 보낸다.
HTTP/1.1 200 OK
Content-Type: text/html
HTML 데이터를 받아서 브라우저가 렌더링한다.
출처
모든 개발자를 위한 HTTP 웹 기본 지식 (김영한, 인프런, 2020)