URI (Uniform Resource Identifier) 리소스 식별자
URI는 리소스 로케이터 - (리소스 위치 URL), 리소스 이름(URN) 또는 둘다 추가로 분류될 수 있다.
URI 안에 URL과 URN이 있다.
https://www.ietf.org/rfc/rfc3986.txt

Uniform : 리소스를 식별하는 통일된 방식
Resource : 자원으로 URI로 식별할 수 있는 모든 것 (제한 없음)
Identifier : 다른 항목과 구분하는데 필요한 정보
URL : 리소스가 있는 위치를 지정
URN : 리소스에 이름을 부여
- 위치는 변할 수 있지만 이름은 변하지 않는다. ex) 책의 isbn
https://www.google.com/search?q=hello&hl=ko
scheme://[userinfo@]host[:port][/path][?query][#fragment]
프로토콜 : https // http, https - HTTP Secure, ftp 등
userinfo는 URL에 사용자 정보를 포함해서 인증, 거의 사용하지 않는다. (jenkins에서 이용하는 tomcat정도?)
호스트명 : www.google.com
포트번호 : 443
패스 : /search // path는 계층적 구조로 되어있다. /home/file1.jpg, /members/100
쿼리 파라미터 q=hello&hl=ko
웹브라우저 요청 흐름
1. DNS서버에 조회를 통해 IP를 알아낸다.
2. HTTP 요청 메시지 생성한다. [GET /search?q=hello&hl=ko HTTP/1.1 HOST: www.google.com ]
3. SOCKET 라이브러리를 통해서 전달 (TCP/IP 연결, 데이터 전달)
4. TCP/IP 패킷 생성, HTTP 메시지 포함
5. 랜카드를 거쳐 서버에 요청 전송
6. 서버가 HTTP 응답 메시지를 만들어냄
7. 앞선 과정을 거꾸로 돌려서 클라이언트에게 전달
HTTP | ||
Stateful | Stateless | |
클라이언트의 이전 정보를 기억하고있음 | 요청마다 정보가 없음 | |
결과 | 쿠키, 세션 등을 사용할 수 있다. 최소한으로 사용 | 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다. |
특징 | 비연결성(최소한의 자원 유지, | |
단점 | TCP/IP 연결마다 3 way handshake를 해야한다, html, js, css 등 많은 자원이 함께 다운 - HTTP 지속연결(Persistent Connections)로 문제 해결 |
// 요청메시지
GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com
HTTP 요청:
1. 시작라인
- a : HTTP 메서드
- b: 요청메시지 - 요청 대상 (absolute-path[?query]) - (절대경로[?쿼리])
- c: HTTP버전
// 응답메시지
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
<html>
<body></body>
</html>
HTTP 응답:
응답메시지
1. 시작 라인 = request-line / status-line
status-line = HTTP-version SP status-code(200) SP reason-phrase(이유문구 ok) CRLF
2. HTTP 헤더
header-field = field-name ":" OWS field-value OWS (OWS: 띄어쓰기 허용, field-name은 대소문자 구분 없음)
HTTP 요청에 필요한 모든 부가정보, 표준헤더가 많고 필요시 임의의 헤더 추가 가능
3. HTTP 메시지 바디
byte로 표현가능한 모든 데이터
'CS' 카테고리의 다른 글
HTTP 헤더 - 헤더2 (캐시, 조건부) (0) | 2024.06.09 |
---|---|
HTTP 헤더 - 헤더1 (0) | 2024.06.09 |
HTTP 상태코드 (0) | 2024.06.09 |
IP(인터넷 프로토콜), PORT, DNS (0) | 2024.06.03 |
Webpack, Babel, Polyfill (0) | 2024.04.07 |