티스토리 뷰

1. URI

URI(Uniform Resource Identifier): 자원(URI로 식별할 수 있는 모든 것)을 구분, 식별하는 통일된 방식이다.

URIURLURN으로 구성되어있다.

URL(Locator): 리소스가 있는 위치를 지정. URL를 입력하면 해당 위치로 찾아가서 그 리소스를 찾아냄.

URN(Name): 리소스에 이름을 부여(마치 isbn처럼).

현재 URN만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않아 거의 URL만 사용된다.

URL 분석

전체문법
scheme://[userinfo@]host[:port][/path][?query][#fragment]

예시
https://www.google.com[:443]/search?q=hello&hl=ko
  • scheme: https
  • host: www.google.com
  • port: 443
  • path: /search
  • query parameter: q=hello&hl=ko

scheme

주로 프로토콜을 나타낸다.

프로토콜은 어떤 방식으로 자원에 접근할 것인가하는 클라이언트와 서버의 규칙이다. (예 http, https, ftp)

https(secure)는 http에 보안이 적용된 버전이다.

userinfo

URL에 사용자정보를 포함해서 인증. 거의 사용하지 않음.

host

호스트명. 도메인이나 IP주소.

port

접속 포트. 일반적으로 생략함 특정 서버에 따로 접속해야 하면 명시.

http는 80, https는 443을 주로 사용.

path

리소스 경로. 계층적구조(예: /category/guitar/fender/telecaster/12)

query

key=value의 형태.

?로시작. &로 추가가능 (예: ?keyA=v1&k2=v2)

쿼리 파라미터(query parameter) 혹은 쿼리 스트링(query string)이라고 불린다.

웹서버에 제공하는 문자 형태의 파라미터.

fragment

html 내부 북마크 등에 사용함

서버에 전송하는 정보 아님

2. 웹 브라우저 요청 흐름

사용자가 URL을 입력하면 클라이언트에서 호스트를 보고 DNS 조회, IP 받고 포트 확인한다.

그 이후에는 웹 브라우저가 HTTP 요청 메세지 생성한다.

그렇다면 HTTP 요청 메세지는 아래와 같이 생겼다.

GET /search?q=hellp&hl=ko HTTP/1.1
HOST: www.google.com

HTTP 요총 메세지는 아래의 순서로 서버로 전달된다.

  1. HTTP 요청 메세지 생성
  2. SOCKET 라이브러리를 통해 OS의 TCP/IP로 전달
    • TCP/IP 연결(IP, PORT를 통해 3 way handshake)
    • 데이터를 TCP로/IP로 전달(HTTP 메세지 등)
  3. HTTP 데이터 포함한 TCP/IP 패킷 생성.
    • TCP/IP 패킷: 출발지 IP/PORT, 목적지 IP/PORT
  4. 네트워크 LAN을 통해 서버로 TCP/IP 패킷 + HTTP 메세지 전송

위의 과정을 거쳐 서버에 도착하면 서버는 패킷의 IP, PORT 정보를 확인하고 HTTP 메세지를 열어본다.

그 다음 서버는 HTTP 응답메세지를 작성하여 패킷과 함께 클라이언트에게 보낸다.

이때 응답메세지는 아래와 같이 생겼다.

HTTP/1.1 200 OK
content-type: text/html;charset=UTF-8
content-length: 3423

<html>...</html>

클라이언트는 저 응답메세지를 확인한 뒤 문제가 없으면 화면에 보여준다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함