해당 자료는 인프런 김영한 님의
모든 개발자를 위한 HTTP 웹 기본 지식을 참고하여 작성하였습니다.
목차
URI(Uniform Resource Identifier)
URI는 로케이터(Locator), 이름(Name)또는 둘다 추가로 분류될 수 있다.
URI
•
Uniform: 리소스 식별하는 통일된 방식
•
Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)
•
Identifier: 다른 항목과 구분하는데 필요한 정보
•
URL: Uniform Resource Locator
•
URN: Uniform Resource Name
URL, URN
•
URL - Locator: 리소스가 있는 위치를 지정
•
URN - Name: 리소스에 이름을 부여
•
위치는 변할 수 있지만, 이름은 변하지 않는다.
•
urn:isbn:899....
•
URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음
•
앞으로 URI를 URL과 같은 의미로 이야기하겠음
URL 전체 문법
•
scheme://[userinfo@]host[:port][/path][?query][#fragment]
•
https://www.google.com:443/search?q=hello&hl=ko
•
프로토콜(https)
◦
주로 프로토콜 사용
◦
프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
▪
예)http, https, ftp 등
•
호스트명(www.google.com)
◦
도메인명 또는 IP주소를 직접 사용가능
•
포트(443)
◦
접속 포트
◦
일반적으로 생략, 생략시 http는 80, https는 443
•
패스(/search)
◦
리소스 경로, 계층적 구조
•
쿼리 파라미터(q=hello&hl=ko)
◦
key=value형태
◦
?로 시작, &로 추가 가능
◦
query parameter, query string등으로 불림, 웹서버에 제공하는 파라미터, 문자 형태
•
프레그먼트(#fragment)
◦
html 내부 북마크 등에 사용
◦
서버에 전송하는 정보 아님
웹 브라우저 요청 흐름
1.
사용자가 URL을 통해서 서버에 요청을 한다.
•
사용자 요청 메시지를 생성한다.
•
HTTP 요청 메시지
2.
HTTP 메시지를 전송하기 위한 준비를 한다.
•
TCP/IP 패킷 생성 과정
•
SOCKET 라이브러리에서 3way handshake를 통해 연결해준다.
3.
패킷을 생성 한 후 전송 데이터 HTTP 메시지를 넣어 준다.
•
전송 데이터 생성
4.
요청 패킷을 노드를 통해서 서버로 전송한다.
•
요청 패킷 서버 전달
5.
구글 서버에 요청 패킷이 전달 되면 응답 메시지를 만든다.
•
응답 메시지
•
http 버전이랑 정상응답인200 OK이다.
•
응답하는 데이터가 텍스트에 HTML형식이다. 언어는 UTF-8이다.
•
실제 HTML의 데이터의 길이
6.
만든 응답메시지를 클라이언트 서버에 다시 전송 해준다.
•
응답메시지 클라이언트에 전송
7.
클라이언트에서 웹 브라우저 HTML을 렌더링을 통해서 정보를 확인한다.
•
HTML 렌더링