Lostinformation 2017. 7. 25. 01:09

HTTP란?


인터넷 상에서 웹 서버와 클라이언트가 통신할 때 필요한 프로토콜이 입니다.


TCP 기반의 응용 계층 프로토콜으로서 TCP 3 ways handshaking 과정을 통하여


TCP 세션이 맺힌 상태에서 동작합니다.


보통  TCP라 한다면 연결 지향형을 먼저 생각하지만, HTTP는 통신이 끝나면 바로


서버와 클라이언트의 접속이 끊깁니다. 이 때문에 비연결 지향형이라 칭하구요.


또한, HTTP는 암호화 되지 않은 Plain 텍스트 즉 평문 전송을 합니다.


달리 말하면 보안에 취약하다는거죠.


한가지 더 말씀드리자면, HTTP 메시지는 단방향성 특징을 가지고 있습니다.


서버에게 요청한 사용자가 익명성처럼 설정이되어 누군지 모른다는 뜻이죠.


그래서 모든 요청을 동일하게 처리합니다. 이것이 단방향성입니다.


그래서 사용자마다 다른 처리를 원한다면 인증 과정을 거쳐야 합니다.



HTTP 특징


- 인터넷을 사용할 때 필요한 7 응용 계층의 프로토콜입니다.

- TCP 기반이지만 비연결 지향형 프로토콜입니다.

- 평문적인 전송만을 선호합니다.

- 단방향성 특징을 갖습니다.


그럼, 이제 HTTP 응답, 요청 메시지에 대하여 한번 알아보도록 하겠습니다.



(위 그림은 HTTP 요청, 응답 메시지의 구조입니다)


HTTP Request


해석 그대로 HTTP 요청입니다.


클라이언트 측에서 웹 서버로 전송하는 메시지로, 사용자가 서버에 있는 자원을


요청하여 작업할 때 발생합니다.


HTTP Request 메시지의 구조는 총 네가지로 구분됩니다.


위 그림을 보면 알겠지만, 요청라인, 헤더, 공백, 바디 이렇게 네가지입니다.


이 부분에서 중요한 건 각 항목들은 CRLF 즉, 윈도우에서 치는 엔터를 기준으로 구분됩니다.


먼저 요청라인부터 확인하겠습니다.


요청라인은 Method / URL / 버젼 으로 구성되어 있습니다.


메소드는 단어 뜻 그대로 방법, 어떠한 방식으로 서버에 자원을 요청하는 지


그 형태를 나타냅니다.


여러가지 메소드들이 있는데 이 부분은 아래와 같습니다.



HTTP 헤더


General 헤더 - 클라이언트, 서버 또는 HTTP와 연관된 정보


Request 헤더 - 요청 형식과 서버의 매개 변수


Response 헤더 - 응답을 전송하는 서버에 대한 정보


[Accept: type / subtype]: 클라이언트가 받아들이는 미디어의 우선순위.

[Accept-Language: 언어종류]: 클라이언트가 우선적으로 지원하는 언어.

[Accept-Encoding: 인코딩 타입]: 클라이언트가 수용 가능한 인코딩의 타입.

[User-Agent: 브라우저 명]: 응답이 가능한 웹 브라우져의 종류

[호스트:포트]: 응답을 요청한 호스트 서버

[Proxy-connection : Keep-Alive]: 프록시 연결 사용

[Pragma : no-cache]: 프록시 시스템에 대한 지시문