
본 게시글은 인프런의 모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 듣고 정리한 내용입니다.
"URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다"
URI는 Uniform Resource Identifier의 약자로, 자원을 식별하는 통일된 방법이다. 이를 통해 웹상의 리소스를 고유하게 구분할 수 있다. URI, URL, URN은 비슷한 개념이지만 약간씩 다르다.
즉, URL은 위치를, URN은 이름을 나타내는 형태이다. 웹 브라우저에서 입력하는 것은 주로 URL이다.
이처럼 URI는 웹 자원을 식별하는 고유한 방법을 제공하며, URL은 그 중 위치를 나타내는 방식이다.
scheme://[userinfo@]host[:port][/path][?query][#fragment]
| 요소 | 설명 | 예시 |
|---|---|---|
| scheme | 프로토콜 (자원 접근 방식) | https (HyperText Transfer Protocol Secure) |
| userinfo@ | 사용자 정보 (거의 사용하지 않음) | admin:password@ |
| host | 호스트명, 도메인 또는 IP 주소 | www.google.com |
| port | 접속하려는 포트 (일반적으로 생략됨) | 443 (HTTPS 기본 포트) |
| path | 리소스 경로 | /search |
| query | 쿼리 파라미터 (key=value) | ?q=hello&hl=ko |
| fragment | HTML 내부 북마크 (서버로 전송되지 않음) | #section1 |
웹 브라우저가 URL을 입력받아 서버에 요청을 보내고, 응답을 받아 렌더링하는 과정을 살표보자.
위 URL 을 브라우저에 검색했다고 하자.
이때 웹 브라우저는 DNS 서버에 google.com 이라는 호스트를 조회해서 IP 주소를 조회한다.

브라우저는 위와 같은 형태로 HTTP 요청 메시지를 생성한다.

웹 브라우저에서 생성된 HTTP 요청 메세지는 Socket 라이브러리를 통해 애플리케이션에서 OS 계층으로 전달이 된다.

전송 데이터에 HTTP 메시지를 추가한 후, TCP 3-way handshake를 통해 서버와의 연결을 확인한다.

패킷이 도착하면 TCP/IP 패킷을 모두 제거한 후 HTTP 메시지를 해석한다.


해당 패킷은 똑같은 방식으로 클라이언트로 전달이 된다.

브라우저는 받은 HTML, CSS, JavaScript 등을 해석하여 사용자 화면에 웹페이지를 렌더링한다.