※ 포스팅 내용의 모든 출처는 아래 링크와 같습니다. 작성 내용 오류에 대한 피드백을 환영합니다.
복습을 목적으로 작성한 포스팅이며, 비상업적 목적임을 알립니다.
출처: www.inflearn.com/course/http-웹-네트워크/dashboard
URI(Uniform Resource Identifier)
- URI 정의
- 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있음
- 쉽게 생각하면 URI는 URL과 URN의 상위개념임 - 단어 뜻
- Uniform : 리소스를 식별하는 통일된 방식
- Resource : 자원, URI로 식별될 수 있는 모든 것
- Identifier : 다른 항목과 구분하는데 필요한 정보 - URL : Uniform Resource Locator
- URN : Uniform Resource Name
URL
- Resource Locatr
- 리소스가 있는 위치 지정
- 위치는 변할 수 있으나, 이름은 변하지 않음
- ex ) foo://example.com:8042/over/there?name=ferret#nose
URN
- Resource Name
- 리소스에 이름 부여
- URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음
- ex ) urn:example:annimal:ferret:nose
URL 분석
https://www.google.com/search?q=hello&hl=ko
- URL 전체 문법
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko - 프로토콜 : https
- 호스트명 : www.google.com
- 포트 번호 : 443
- 패스 : /search
- 퀴리 파라미터(= 쿼리 스트링) : q=hello&hl=ko
(1) URL : Scheme
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- 주로 프로토콜 사용
- http는 80포트, https는 443 포트를 주로 사용 (포트 생략 가능)
- https = http + 보안
프로토콜
- 어떤 방식으로 자원에 접근할 것인가를 약속하는 규칙
- ex. http, https, ftp 등
(2) URL : Userinfo
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- URL에 사용자 정보를 포함해 인증
- 거의 사용하지 않음
(3) URL : host
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- 호스트명
- 도메인명 또는 IP 주소를 직접 사용 가능
(4) URL : PORT
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- 접속 포트
- 일반적으로 생략하며, 생략시 http는 80, https는 443
- 특정 서버에 접근할 경우에는 입력함
(5) URL : Path
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- 리소스 경로(path), 계층적 구조임
(6) URL : Query
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- key=value 형태
- ? 로 시작, &로 추가가 가능함
- 웹 서버에 제공하는 파라미터, 문자 형태
(7) URL : Fragment
sheme://[userinfo@]host[:port][/path][?query][#fragment]
https://www.google.com:443/search?q=hello&hl=ko
- html 내부 북마크 등에 사용됨
- 서버에 전송하는 정보 아님
웹 브라우저 요청 흐름
- URL에서 host의 DNS를 조회한 뒤, PORT를 확인해 HTTP 요청 메시지를 생성함
HTTP 요청 메시지 예시
GET /search?q=hello&hl=ko HTTP/1.1
HOST: www.google.com
HTTP 메시지 전송
- HTTP 메시지 전송
(1) 웹 브라우저가 HTTP 메시지 생성
(2) SOCKET 라이브러리를 통해 전달
(a) TCP/IP 연결 (IP, PORT) => TCP 3 way handshake
(b) 데이터 전달
(3) TCP/IP 패킷 생성, HTTP 메시지 포함
(4) 네트워크 인터페이스에서 LAN을 지나 인터넷을 통해 서버로 전달 - 수신 받은 메시지는 HTTP 메시지만 꺼내어 해석한 뒤 응답 메시지 전송
- 클라이언트는 응답 받은 메시지의 HTML을 렌더링함
'Study > Computer Science' 카테고리의 다른 글
[HTTP] 인터넷 통신 (0) | 2021.05.10 |
---|---|
[OS] 프로세스간 커뮤니케이션 - IPC(InterProcess Communication) (0) | 2021.05.10 |
[스케쥴러] 선점형과 비선점형 스케쥴러 (0) | 2021.03.25 |
[운영체제] 프로세스 스케쥴링 (Process Scheduling) (0) | 2021.03.25 |