URL(Uniform Resource Locator)
은 우리가 흔히 웹브라우저에서 사용하는 주소
URN(Uniform Resource Name)
은 위 그림과 같이 이름을 부여하는 것인데,
이름만 가지고는 주소를 찾아갈 수 없기에 실제로 사용하기는 힘들다.
URL - Locator
: 리소스가 있는 위치를 지정한다.URN - Name
: 리소스에 이름을 부여한다.문법 예시 : https://google.com/search?q=hello&hl=ko
프로토콜 : https
호스트명 : google.com
포트 번호 : 443
패스 : /search
쿼리 파라미터 : q=hello&hl=ko
key=value
형태query parameter
, query string
등으로 불린다. 웹서버에 제공하는 파라미터로 문자 형태.다음 URL을 가지고 https://google.com/search?q=hello&hl=ko
웹 브라우저 요청 흐름을 파악해 보자.
1. DNS 조회
: google.com, DNS를 조회해서 IP 주소를 찾는다.
2. HTTPS PORT 생략(`443`)
3. HTTP 요청 메시지 생성
1. 웹 브라우저가 HTTP 메시지를 생성
2. SOCKET 라이브러리를 통해 TCP/IP 계층에 전달한다.
이전 단계에서 찾은 IP와 PORT 정보를 가지고 `SYN`, `SYN+ACK`, `ACK` 과정을 통해 서버와 연결을 한다.
연결이 성공되면 TCP/IP 계층으로 데이터를 전달한다.
3. TCP/IP 패킷을 생성한다. HTTP 메시지도 포함된다.
4. 서버는 패킷이 도착하면 패킷의 내부 HTTP 메서드를 해석해서 정보에 맞는 동작을 한다.
5. 서버에서 HTTP 응답 메시지를 생성한다.
6. 클라이언트에서는 응답 메시지를 받아 맞는 동작(ex: 렌더링)을 한다.