728x90

[네트워크] HTTP

HTTP프로토콜은 TCP/IP기반의 네트워크를 바탕으로 WWW서비스를 위해서 디자인된 통신규약이다.

웹브라우저(클라이언트)는 HTML문서를 파싱해서 문서화면를 보여주는 역할을 한다.


HTTP프로토콜의 특징
(1) Stateless하다
한 번 서버와 커넥션을 맺으면 서버와 커넥션을 유지해서 메시지를 주고 받는 것이 Stateful프로토콜.

예, FTP를 이용하여 데이터전송을 한다고 하면 FTP서버접속과 종료까지 클라이언트와 서버 사이에는 커넥션(connection)이 존재하고 있다. 이 커넥션이 유지되고 있는 도중에는 연속적인 작업요청을 할 수도 있다.

HTTP프로토콜은 하나의 커넥션에서 연속적인 작업 요청을 할 수 없다. 하나의 작업요청마다 커넥션을 새로 맺어야 한다.

stateful프로토콜을 사용하는 서버는 클라이언트 개수만큼 커넥션을 관리해야 하며 요청닥업이 없더라도 그 커넥션을 유지해야한다. 그래서 서버의 부하도 늘어날 수 밖에 없다.

stateful프로토콜을 사용하는 서버는 클라이언트를 인식하는 장점이 있는데, stateless는 인식하지 못한다. 그래서 session이나 cookie와 같은 우회방법을 통해 http클라이언트의 트랜잭션과 관련된 대이터를 서버나 클라이언트에 저장하여 관리한다. 그래서 서버와 클라이언트가 메시지를 주고 받을 때 서버가 어떤 클라이언트인지를 인식할 수 있다.

stateless프로토콜은 요청이 끝나면 커넥션을 끊기 때문에 그만틈 더 빠르고, 더 많은 클라이언트의 요청을 처리할 수 있다.

(2) 트랜잭션처리
클라이언트가 서버로 데이터를 요청하고, 서버는 클라이언트에게 데이터를 전송하는 것을 '트랜잭션'이라는 단위로 부른다.

HTTP Request와 HTTP Response 한 쌍으로 구성되어 있고, 이 한쌍을 트랜잭션이라고 한다.


HTTP프로토콜 표준에 정의된 명령어
OPTIONS: 웹서버에서 사용할 수 있는 명령어의 종류를 요청한다.
HEAD: HTTP프로토콜의 헤더정보만 수신한다.
GET: 서버에서 문서를 박아온다. 클라이언트가 서버로 데이터를 전송할 때 URL에 붙여서 전송하며, 보통 URL뒤에 물음표(?)기호로 URL과 데이터를 구분한다. 여러개의 데이터를 전송할 때 대이터구분 '&(앰퍼샌드)'기호로 한다. 하지만 GET명령어에서 전송할 수 있는 데이터의 양은 제한적이며 최대 2048바이트까지 전송 가능하다.

POST: 서버에서 문서를 받아온다. GET방식과 다르게 HTTP Request 메시지의 바디에 데이터를 넣어서 전송한다. 보낼 수 있는 데이터의 양은 무제한에 가깝다.
PUT: 서버에 파일을 올리는 명령어로 보통 웹서버에서는 비활성화되어 있는 기능이다.
TRACE: 클라이언트가 전송한 HTTP Request를 그대로 반환한다. 디버깅의 목적으로 사용한다. (검사용)
DELETE: 서버에 파일을 삭제하는 명령어로 보통 웹서버에서는 비활성화 되어 있는 기능이다.
CONNECT: 터널링방식의 연결을 요청할 때 사용한다. 클라이언트가 HTTP통신을 하기 위해서 초기에 맺는 커넥션과는 상관없다.




*
맥북 메모앱에 메모해놓은 것들을 다시 정제하여 포스팅해놓을 것.


'네트워크' 카테고리의 다른 글

[네트워크] OSI Model  (0) 2020.06.22
[네트워크] MAC Address 메모  (0) 2020.06.16
[NET] TCP/IP PROTOCOL(forouzan) 목차  (0) 2020.06.14
[NET] HTTP와 Cookie  (0) 2020.06.14
[네트워크] 프록시 서버  (0) 2020.06.09

+ Recent posts