URL과 URI에 대해 알아보자.
URL은 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다. URL은 scheme, hosts, url-path로 구분할 수 있다.
URI는 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더해 query, bookmark를 포함한다. query는 웹 서버에 보내는 추가적인 질문이다. http://www.google.com:80/search?q=JavaScript 를 브라우저의 검색창에 입력하면 구글에서 JavaScript를 검색한 결과가 나타난다.
그래서 브라우저의 검색창을 클릭하면 나타나는 주소는 URI이다. URI는 URL을 포함하는 상위개념이다.
URL은 URI다는 맞는 말이지만, URI는 URL이다는 틀린 말이다.
부분 | 명칭 | 설명 |
---|---|---|
file://, http://, https:// | scheme | 통신 프로토콜 |
127.0.0.1, www.google.com | hosts | 웹 페이지, 이미지, 동영상 등의 파일이 위치한 웹 서버, 도메인 또는 IP |
:80, :443, :3000 | port | 웹 서버에 접속하기 위한 통로 |
/search, /Users/username/Desktop | url-path | 웹 서버의 루트 디렉토리로부터 웹 페이지, 이미지, 동영상 등의 파일이 위치까지의 경로 |
q=JavaScript | query | 웹 서버에 전달하는 추가 질문 |
HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식이다. 메세지 타입은 두 가지가 있다.
요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나네끔 하는 메시지이고, 응답(response)은 요청에 대한 서버의 답변이다.
HTTP는 요청 메서드는 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 각각의 메서드는 서로 다른 의미를 구현하고 있지만, 일부 기능은 메서드 집합 간에 서로 공유하기도 한다.
주요 메소드 5가지
기타 메소드 4가지
HTTP 요청과 응답의 구조는 서로 닮았으며, 그 구조는 다음과 같다.
시작 줄(start-line)에는 실행되어야 할 요청, 또은 요청 수행에 대한 성공 또는 실패가 기록되어 있다. 이 줄은 항상 한 줄로 끝난다.
옵션으로 HTTP 헤더 세트가 들어간다. 여기에는 요청에 대한 설명, 혹은 메시지 본문에 대한 설명이 들어간다.
요청에 대한 모든 메타 정보가 전송되었음을 알리는 빈 줄(blank line)이 삽입된다.
요청과 관련된 내용(HTML 폼 콘텐츠 등)이 옵션으로 들어가거나, 응답과 관련된 문서(document)가 들어간다. 본문의 존재 유무 및 크기는 첫 줄과 HTTP 헤더에 명시된다.
HTTP 메시지의 시작 줄과 HTTP 헤더를 묶어서 요청 헤드(head)라고 부르며, 이와 반대로 HTTP 메시지의 페이로드는 본문(body)이라고 한다.
HTTP 응답의 시작 줄은 상태줄이라고 불린다.
응답에 들어가는 HTTP 헤더는 다른 헤더와 동일한 구조를 따른다. 대소문자를 구분하지 않는 문자열 다음에 콜론(':')이 오며, 그 뒤에 오는 값은 구조가 헤더에 따라 달라진다. 헤더는 값을 포함해 전체를 한 줄로 표시한다.
다양한 종류의 응답 헤더가 있는데, 이들은 다음과 같이 몇몇 그룹으로 나눌 수 있다.