- 이 게시글은 인프런 "모든 개발자를 위한 HTTP 웹 기본지식"의 김영한님 강의를 보고 요약한 내용입니다.
1. URI(Uniform Resource Identifier)
자원 식별자로 여기서 자원은 URI로 식별할 수 있는 모든 것을 의미한다.
그렇다면 URL, URN을 구분할 수 있나?
URL(Uniform Resource Locator) - 자원의 위치를 지정
URN(Uniform Resource Name) - 자원의 이름을 부여
→ 부여한 이름을 결과 매핑문제로 찾기 힘듦
→ 거의 URL만 사용
* 자원의 위치는 변할 수 있지만 이름은 변하지 않는다.
URL 분석을 위해
https://www.google.com/search?q=hello&hl=ko
위 URL을 웹 브라우저에 입력해 본다.
결과는 아래와 같이 구글에서 "hello"를 검색한 화면이다.
URL 전체 문법
scheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
1) URL scheme
- 주로 프로토콜 사용
* 프로토콜 : 어떤 방식으로 자원에 접근할 것인가 하는 약속 또는 규칙으로 http, https, ftp 등이 있다.
* https는 http에 강력한 보안을 추가한 것(HTTP Secure)
2) URL userinfo
- URL에 사용자 정보를 포함해서 인증
- 거의 사용하지 않는다
3) URL host
- 호스트명으로 도메인명이나 IP주소를 직접 사용 가능
4) URL port
- 접속포트로 일반적으로 생략(http - 80, https - 443)
5) URL path
- 리소스 경로로 계층적 구조를 이룸 ex) /home/file1.jpg
6) URL query
- key = value 형태로 존재
- ?로 시작하며 &로 추가 가능 ex) ?keyA=valueA&keyB=valueB
- query parameter, query string 등으로 불림
7) URL fragment
https://docs.spring.io/spring-boot/docs/current/reference/html/gettingstarted.html#getting-started-introducing-spring-boot
- html 내부 북마크 등에 사용되며 서버에 전송하는 정보는 아님
2. 웹 브라우저 요청 흐름
URI를 요청하면 웹 브라우저가 DNS를 조회하여 IP와 PORT정보를 찾는다.
→ HTTP 요청 메시지를 생성한다.
* HTTP 요청 메시지 형태
GET / search?q=hello&hl=ko HTTP/1.1 Host: www.google.com
→ 소켓 라이브러리를 통해 TCP/IP에 연결하여 데이터를 전달한다.
→ TCP/IP 패킷을 생성한다.(HTTP 메시지 포함)
* TCP/IP 패킷의 전송 데이터 정보가 HTTP 메시지
→ 요청 패킷을 전달한다.
→ 서버에 요청 패킷 도착한다.
→ 서버에서 응답 패킷 생성하여 전달한다.
* HTTP 응답 메시지 형태
HTTP/1.1 200 OK
Content-Type : text/html;charset=UTF-8
Content-Length: 3423
<html>
<body> ... </body>
</html>
→ 웹 브라우저에 응답 패킷 도착한다.
→ 응답 패킷의 html 데이터를 통해 html를 렌더링하여 보여준다.
'HTTP' 카테고리의 다른 글
[HTTP] 웹 기본 지식 정리 - HTTP 메서드 활용② (0) | 2023.01.15 |
---|---|
[HTTP] 웹 기본 지식 정리 - HTTP 메서드 활용① (0) | 2023.01.15 |
[HTTP] 웹 기본 지식 정리 - HTTP 메서드 (0) | 2023.01.12 |
[HTTP] 웹 기본 지식 정리 - HTTP 기본 (0) | 2023.01.09 |
[HTTP] 웹 기본 지식 정리 - 인터넷 네트워크 (0) | 2023.01.06 |