040524. HTTP
https://developeritchaeyachae.tistory.com/27
HTTP (Request/Response)
HTTP ? : (서버와 클라이언트가) HTML,CSS와 같은 파일을 주고받기위한 메시지, 문서전송을 위한 프로토콜(통신 규약) HTTP message는 request,response가 있다. 개발자도구의 Network탭을 통해 웹브라우저와 웹
developeritchaeyachae.tistory.com
복습!
1990년 웹은 4가지로 이루어져있었다.
1. HTML
2. URL, URI
3. WEB BROUSER/WEB SERVER
4. HTTP
HTTP - 가장중요한 통신규칙, 인터넷이 움직이는 근간.
Hyper Text TRansfer Protocol
클라이언트 -> 서버 : 물건주세요!
클라이언트 : 서버님, HTML주세요 = REQUEST
서버: 여기있습니다. = RESPONSE
컨텐츠를 주고받기위해서는, server, clinet가 공통인 메시지가 필요한데
그 메시지가 HTTP.
개발자도구에서 Network를 통해 모니터링 할 수 있다. = HTTP 메시지를 볼수 있다.
Request Headers - 요청한 데이터
아래 두줄이 필수이다.
Host : 프로세스를 구분하기위한 수단.
HTTP1/1방식으로, 상태(성공적으로 데이터 받아 찾아줄게)
웹브라우저 : 사용자가 요청한 정보를 대신 물어봐준다. (header)
웹서버: 위와같은 생긴 응답 header를 만들어주는 기계 같은것
으로 비유 할 수 있다.
아래. 첫번째 행: 요청행
Request와 Response 메시지의 기본틀
- start line : start line에는 요청이나 응답의 상태를 나타냅니다. 항상 첫 번째 줄에 위치합니다. 응답에서는 status line이라고 부릅니다.
- HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합입니다.
- empty line : 헤더와 본문을 구분하는 빈 줄이 있습니다.
- body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함합니다. 요청과 응답의 유형에 따라 선택적으로 사용합니다.
(요청)Request message
Start line : HTTP method + 요청 대상(일반적으로 URL이나 URI) 또는 프로토콜, 포트, 도메인의 절대 경로 + HTTP 버전
*참고 : get / post <- http method , get : 리소스를 받아야하고 post : 데이터를 서버로 전송
HTTP haders: 필수로 있어야하는것은 Host - 하나의 웹서버가 여러개의 도메인을 서비스할 수 있다.
예를들어, a라는 웹서버거ㅏ a.com, b.com 을 호스팅하고있고, 각각의 주소별로 다른 웹사이트라고 한다면, 웹서버는 host에 적혀있는 주소를 보고서 다른 주소를 보내 줄 수 있다. 이것이 가상 호스트
뒷부분은 port. 한대의 컴퓨터에는 여러개의 서버가 설치될수 있는데 8080에 등록되어있는 웹서버를 의미한다. (프로세스)
(User agent)라고 써있는것은 ? 웹브라우저의 다른 표현. 요청하는 웹브라우저가 어떤 웹브라우저인지. Chrome Macintosh, Mac OS버전이 무엇인지 ~~
(Accept Engoding) : 웹브라우저-웹서버 전송하는 데이터가 크면, 압축을 해서 전송하면 웹브라우저는 압축을 풀어서 처리할 수있는데, 어떤 압축 방식을 지원합니다.
(If-modified-since): 마지막으로 다운받은 날짜
자신이 가지고있는 파일이랑 비교해서 더 다운로드할 필요없으면 전송 x
(응답)Response message
Status line : 그림과 같이 3가지를 포함한다.
- 현재 프로토콜의 버전(HTTP/1.1)
- 상태 코드 - 요청의 결과를 나타냅니다. (200, 302, 404 등)
- 상태 텍스트 - 상태 코드에 대한 설명
headers
- General headers : 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없는 헤더.
- Response headers : 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더로, Vary, Accept-Ranges와 같이 상태 줄에 넣기에는 공간이 부족했던 추가 정보를 제공
- Representation headers : 이전에는 Entity headers로 불렀으며, body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함하는 헤더
body
모든 응답에 body가 필요하지는 않다. 201, 204와 같은 상태 코드를 가지는 응답에는 본문이 필요없다.