HTTP

2015. 8. 12. 02:39프로그래밍/서버

728x90
728x90
정의

HyperText Transport Protocol의 약자로 웹서버와 클라이언트간의 문서를 교환하기 위한 통신규약.


특징

HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석

TCP/IP 프로토콜의 응용 계층이다

TCP Protocol을 이용한다.


파이프라이닝(Pipe Lining)

응답 메시지가 도착하지 않은 상태에서 연속적으로 요구 메시지를 서버에 전달.

이때, 서버는 요구 메시지를 수신한 순서대로 응답 메시지를 클라이언트에게 전달.

연결과 종료횟수를 줄임으로써 네트워크 자원을 절약.

발생하는 패킷의 숫자를 감소, 네트워크 트래픽 감소.


HTTP 메시지

메시지 종류 - 요청 메시지(Request Message, C->S), 응답 메시지(Response Message, S->C)


HTTP Header

클라이언트와 서버 사이에서 부가적인 정보를 교환한다.

General, Request, Response, Entity Header가 있다.


General Headers

메시지에 대한 일반적인 정보 제공.

Header 설명 예 
Connection Connection 옵션지정 Connection: close 
Date 메세지가 작성된 일시 Date: Wed, 05 May 2010 17:27:50 GMT


Request Header

클라이언트의 구성과 문서 형식을 지정

Header 설명 예 
Accept 클라이언트가 받아들이는 미디어 타입 Accept: text/javascript, text/html, application/xml, text/xml, /
Accept-charset 클라이언트가 다루는 문자열 ? 지정 Accept-Charset: windows-949,utf-8;q=0.7,*;q=0.3 
Accept-language 클라이언트가 받아들일 언어 Accept-Language: ko-KR 
Host 호스트의 주소와 포트 번호 Host: www.gurubee.net 
User-agent 클라이언트 프로그램( 웹 브라우저)을 표시 User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1


Response Headers

서버의 구성과 요청에 대한 특별한 정보를 지정

Header 설명 예 
Server HTTP Server 정보 

Server: Apache 


Entity Headers

문서의 본문에 대한 정보 제공

Header 설명 예 
Content-Length 응답되는 컨텐츠의 사이즈 Content-Length: 3495 
Content-Type 응답되는 컨텐츠의 유형 Content-Type: text/html; charset=UTF-8 
Expires Cache가 초기화 되는 시간 Expires: Thu, 01 Dec 1994 16:00:00 GMT 
Last-Modified 응답되는 컨텐츠가 마지막으로 수정될 일시 Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT


HTTP Request Message

Format

Request Message 설명 
GET /home/newRelease.nhn HTTP/1.1 Reqeust Line (HTTP method(GET, POST, HEAD, TRACE...), URL, HTTP 버전 정보를 알 수있다.) 
Accept: /
Accept-Language: ko-KR
Referer: http://www.gurubee.net/
x-flash-version: 10,2,159,1
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1..
Host: www.gurubee.net
Connection: Keep-Alive
Cookie: JSESSIONID=286C75937E048B54850657F5203532ED; 
Headers


HTTP method

GET

URL에 해당하는 정보의 전송요청

데이터 전달 : 이름과 값을 쌍으로 보낸다. ex) name=value

데이터 구분 : &사용. ex)name1=value1&name2=value2

데이터가 URL에 노출

인코딩/디코딩의 과정이 없기 때문에 POST보다 빠르다.

URL의 길이 제약으로 인해 많은 데이터 전송은 무리


POST

폼에서 POST 지정하는 경우 사용

데이터는 HTTP Body에 숨겨서 서버로 전송된다.

GET으로 보낼 수 없는 자료를 전송할 때 사용.


HEAD

GET과 동일하나 HTTP Header 정보만 요청

네트워크 대역을 절약, 리소스의 크기확인시 사용


OPTIONS

응답 가능한 HTTP 메소드를 요청

요청한 URL에 어떤 메소드 요청이 가능한지 확인한다.

보안적으로 위험, 해커들에게 중요한 정보를 제공하게 된다.


PUT

URI로 지정한 서버에 있는 파일을 대치한다.

URI로 지정한 파일이 없는 경우는 파일을 새로 작성한다.

보안적으로 위험.


*통합 자원 식별자(Uniform Resource Identifier, URI)는 인터넷에 있는 자원을 나타내는 유일한 주소이다. URI의 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상 붙어 다닌다.

  • 프로토콜 (HTTP 혹은 FTP) + : + // + 호스트이름 + 주소
  • 예: http://ko.wikipedia.org

위의 프로토콜 형태는 URI의 한 종류인 URL 형식의 표현 방법따른 예 입니다.


DELETE

URI로 지정한 서버에 있는 파일을 삭제한다.

보안적으로 위험.


TRACE

서버측에서 받은 리퀘스트 라인과 헤더를 그대로 클라이언트에게 반송한다.

프록시 서버 등을 쓰는 호나경에서 리퀘스트가 바뀌어 써지는 모양을 살펴볼 때 사용한다.

Request의 Loopback 테스트용으로 사용할 수 있다.


CONNECT

터널링의 목적으로 연결요청

Forward Proxy에 HTTP TLS(Transport Layer Security) 터널링(Tunneling)을 요청할 때 사용


*터널링 - 서로 다른 통신규약을 사용하는 통신망 사이에서 데이터를 전송하는 방법의 한 가지로 하나의 망이 다른 망과의 연결을 이용해 데이터를 전송할 수 있게 해주는 기술을 말한다. 터널링은 터널을 통해 서로 다른 지역을 통과하는 것처럼 통신망으로 전달된 데이터 패킷을 다른 통신규약을 사용해서 표현한 다음 전달하는 방법이다. 이 방법을 통해 데이터 패킷에서 사용되던 통신규약을 채용하지 않은 통신망이라도 데이터 패킷을 전송할 수 있게 된다.


HTTP Response Message

Format

Request Message 설명 
HTTP/1.1 200 OK Status Line 
Last-Modified: Wed, 05 May 2010 17:27:50 GMT
Content-Length: 1251273
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Expires: Sun, 05 Jun 2011 06:25:47 GMT 
Headers 


Status Code

Status Code 설명 
200 OK 
400 Bad Request (잘못된 요청) 
403 Forbidden (접근권한 없음) 
404 Not Found (요청한 내용이나 파일을 찾을 수 없음) 
500 Internal Server Error (서버 에러)


728x90
반응형

'프로그래밍 > 서버' 카테고리의 다른 글

TCP Max Packet  (0) 2015.09.11
리눅스 vim cheat sheet  (2) 2015.09.05
TCP vs UDP  (1) 2015.08.18
리눅스 네트워크 명령어  (0) 2015.08.10
vim 설치  (0) 2015.08.09
프라우드넷  (0) 2015.07.24
동기화  (0) 2015.07.23