탕구리's 블로그

HTTP는 무엇인가요? 본문

Conception/Computer Network

HTTP는 무엇인가요?

탕구리당 2019. 2. 25. 11:19
반응형


시작하기 전에


해당 블로그에 작성되는 글은 주인장의 지극히 주관적인 생각이 다수이며, 대부분의 지식은 구글링을 통해 얻고 있기 때문에 옳지않은 정보가 있습니다. 

잘못된 부분이나 수정해야 하는 부분이 있다면 과감히 덧글을 남겨주세요! 모르는게 많은 새싹입니다



오늘의 주제

오늘의 주제는 HTTP가 뭔지 알아보는 시간을 갖도록 하겠습니다.




HTTP (Hyper Text Transfer Protocol)

WWW 상에서 정보를 주고 받을 수 있는 프로토콜 입니다. 주로 HTML 문서를 주고 받는곳에 쓰이며, TCP와 UDP를 사용합니다. 포트는 80포트를 사용하고 있습니다. HTTP는 v1.0 v1.1 그리고 현재는 v2.0 까지 나왔습니다.


HTTP는 애플리케이션 레벨의 프로토콜 TCP/IP위에서 작동합니다.


HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜 입니다. 웹브라우저가 HTTP를 통하여 서버로부터 웹페이지나 그림 정보를 요청하면, 서버는 요청에 맞는 응답값을 클라이언트에게 전달하게 됩니다.




HTTP 요청 방식

HTTP의 요청방식은 다음과 같습니다.


1. ISP를 통해 DNS 서버로 부터 IP를 취득합니다.

2. 3-way-handshake를 통해 서버 컴퓨터와의 세션을 생성합니다. 일종의 초기화 과정을 가집니다.

3. 통신이 모두 이루어진 후에는 4-way-handshake를 통해 세션을 종료하고 통신을 마칩니다.




HTTP 데이터 포멧

HTTP의 요청 데이터는 "HEADER"와 "BODY"로 구성되어 있습니다.

요청과 응답시 주고받는 데이터는 다음과 같은 형태입니다.




요청 Header에는 다음과 같은 정보를 담고 있습니다.



General Headers

- Via와 같은 헤더는 메시지 전체에 적용된다.


Request Headers

- User-Agent, Accept-Type과 같은 헤더는 요청의 내용을 좀 더 구체화 시키고, 컨텍스트를 제공하기도 하며, 조건에 따른 제약사항을 가하기도 하면서 요청 내용을 수정합니다.


Entity Headers

- Content-Length와 같은 헤더는 요청 본문에 적용된다. 요청에 본문이 없는경우 Entity는 전송되지 않는다.


1. 메소드와 프로토콜 버전 ex) GET HTTP/1.1

2. HOST - localhost:3000

3. USER_AGENT - os 및 브라우저 정보 ex) Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24\r\n

4. Accept - Content-type ex) text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n

5. Accept-language  ex) ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4\rn

6. Accept-encoding - gzip, deflate

7. Connection - keep-alive

8. Upgrade-Insecure-Requests

9. Content-type - multipart/form-data

10. Content-Length - 234



응답 Header에는 다음과 같은 정보를 담고 있습니다.



General Headers

- Via와 같은 헤더는 메시지 전체에 적용된다.


Request Headers

- Vary와 Accept-Ranges와 같은 헤더는 상태 줄에 미처 들어가지 못했던 서버에 대한 추가 정보를 제공한다.


Entity Headers

- Content-Length와 같은 헤더는 요청 본문에 적용된다. 요청에 본문이 없는경우 Entity는 전송되지 않는다.


1. 프로토콜 버전과 응답상태

2. 타 도메인 접근여부에 대한 판단

3. 접속유지 정보

4. 미디어 타입 압축 방식

5. 컨텐츠의 타입

6. 데이터 생성 시간

7. 버전의 리소스를 식별하는 식별자

8. 연결에 대한 타임아웃과 요청 최대갯수의 정보

9. 수정된 시간

10. 서버로 사용되는 프로그램 이름

11. 쿠키정보

12. 수신자에게 안전한 송송을 위해 메세지에 어떤 인코딩이 적용되었는지 알려줌

13. 응답에 영향을 줄 수 있는 헤더들의 목록을 클라이언트에게 알려줌

14. frame/iframe/Object의 허용 여부




* HTTP 1.1 Headers => 참고

반응형
Comments