곰돌이 놀이터

[기본] HTTP 란? 본문

기본 개발 지식

[기본] HTTP 란?

달나라 곰돌이 2018. 7. 18. 16:05

HTTP 란? 


HTTP( Hypertext Transfer Protocol )란  브라우저 같은 응용 프로그램을 통해 사용자와 서버( 서비스 제공자 ) 사이 데이터를 전송하는 프로토콜( 통신규약 )로 WWW( World Wide Web )의 분산되어 있는 서버와 사용자 간에 하이퍼텍스트를 이용한 정보 교환이 가능하게 만든다.

HTTP는 1989년 Tim Berners Lee가 처음 설계하였으며 웹에서만 사용하는 TCP/IP 기반 프로토콜로 한 지점에서 다른 지점(보통 사용자와 서버)으로 요청과 응답을 전송한다.


HTTP 메소드 


HTTP 메소드는 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 말하고

HTTP 메소드의 종류에는 8가지가 있다.


■ GET

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

→ 데이터의 전달 : 이름과 값을 쌍으로. ex) name=value

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

→ 데이터가 URL에 노출

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

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

■ POST

→ 폼에서 POST 지정하는 경우

→ 데이터는 HTTP Boby에 숨겨서 서버로 전송

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

■ PUT

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

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

→ 보안적으로 위험, 비활성화 시킨다.

■ HEAD

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

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

■ DELETE

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

→ 보안적으로 위험, 비활성화

■ OPTIONS

→ 어떤 HTTP 메소드를 지원하는 지 검사

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

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

■ TRACE

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

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

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

■ CONNECT

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

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


HTTP 특징 


■ TCP(Transmission Control Protocol) / IP(Internet Protocol)를 이용하는 응용 프로토콜(application protocol) 이다.

컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷을 통해 원하는 정보를 주고 받는 기능을 이용하는 응용 프로토콜로 포트 번호는 기본적으로 80번을 사용한다.

■ HTTP는 연결 상태를 유지하지 않는 비연결성 프로토콜입니다.

예를들면 브라우저를 통해 사용자의 요청(Request)에 따라 서버와 접속하여 요청에 대한 응답(Response)의 데이터를 전송 후 연결을 종료한다.

이러한 심플한 상태이기 때문에 전산 자원이 적게 든다는 장점이 있다.

하지만, 연결이 지속적이지 않기에 사용자와 종료 후 추가적인 요청을 처리할 수 없다는 단점이 있다. 

이런 단점을 해소하기 위한 방법으로 Cookie, Session, URL Rewriting, Hidden Form Field 등이 사용된다.

참고로 HTTP와 반대로 연결 상태 유지하는 프로토콜은 FTP, Telnet이 있다.

■ HTTP는 연결 상태를 유지하지 않는 프로토콜이기 때문에 요청(Request)/응답(Response)방식으로 동작한다.

서버가 먼저 응답하지 않으며 사용자의 요청 한개에 대해 한개의 응답을 하는 방식이다.

Comments