김영한님의 모든개발자를 위한 HTTP 웹 기본 지식을 수강 후 해당 내용을 기반으로 작성한 글입니다.
“URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.”

- URL: 리소스가 있는 위치를 지정
- foo://example.com:8042/over/there?name=forret#nose
- URN: 리소스의 이름
- urn: example:animal:ferret:nose
- URL은 변할 수 있지만, 이름은 변하지 않는다.
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않음 → URN은 잘 사용되지 않는다.
URL
기본 문법
scheme://[userinfo@]host[:port][/path][?query][#fragment]
scheme(스키마)
- 주로 프로토콜이 사용
- 프로토콜이란 어떤 방식으로 자원에 접근할 것인지에 대한 약속 규칙
- http - 80, https - 443 포트를 주로 사용하며 포트는 생략 가능하다
- https는 http에 보안이 추가된 것(HTTP Secure)
userinfo
- URL에 사용자 정보를 포함하여 인증하는 경우에 사용
- 거의 사용되지 않음
host(호스트명)
PORT
- 포트는 일반적으로 생략이 가능
- 생략시 http는 80, https 는 443이다.
path(경로)
- 리소스의 경로
- 계층적 구조로 이루어져있다.
- /home/file1.jpg
- /members/100
query
key=value의 형태
- ?로 시작, &로 추가
- query parameter, query string등으로 불림
- 웹서버에 제공하는 파라미터이며 문자 형태이다.
fragment
- html 내부 북마크에서 사용되며 서버에 전송되는 정보는 아니다.
웹 브라우저 요청 흐름
https://www.google.com:443/search?q=hello&hI=ko
-
www.google.com:443 : DNS 조회하여 IP , PORT 정보를 불러온다.
- DNS 서버를 통해 도메인 이름(www.google.com)을 IP 주소(예: 142.250.190.78)로 변환.
- IP와 PORT(443: HTTPS 기본 포트)를 기반으로 서버 연결 시도.
-
HTTP 요청 메세지를 생성
GET /search?q=hello&hI=ko HTTP/1.1
Host: www.google.com
- 서버 전송

- 클라이언트는 TCP 3-Way Handshake로 서버와 연결을 설정.
- 이후 요청 데이터를 TCP를 통해 전송.
- HTTP 응답 메세지
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body>...</body>
</html>
- 웹브라우저 HTML 렌더링
SOCKET이란?
- 네트워크 통신에서 클라이언트와 서버 간의 데이터를 주고받기 위해 사용되는 양방향 통신 채널
- 웹 애플리케이션과 서버가 실시간으로 데이터를 주고받을 수 있도록 한다.
- 데이터 송수신 채널을 생성해서 TCP/IP를 연결하며 데이터를 전달한다.