본문 바로가기

[+] Information/[-] Network

HTTP 1.0 ?? HTTP 1.1 ??

paros와 같은 프록시 툴을 사용하실 떄 제일 많이 볼 거라 생각이 됩니다.

저 또한 프록시 툴을 쓸 때 제일 많이 보니까요..

HTTP 1.0은 또 무엇이며 HTTP 1.1은 또 무엇일까요?

HTTP가 뭔지부터 알아야 겠죠?

HTTP(HyperText Transfer Protocol)는 WWW(World Wide Web) 상에서 정보를 주고 받는 프로토콜 이다. 주로
HTML 문서를 주고 받는 데에 쓰이고 TCPUDP를 사용하며, 80번 포트를 사용한다. 1996년 버전 1.0, 그리고 1999년 1.1이 각각 발표되었으며, 현재 가장 널리 쓰이는 버전이 1.1이다.(출처 : 위키백과)

또, HTTP 프로토콜은 연결상태를 유지하지 않는(Connection less) 프로토콜 입니다. 만들어질 때 부터 가지고 있는 특징 이죠.

이유는 웹의 기본 개념은 불특정 사용자에게 서비스를 하는 것 입니다. 그렇기에 특정사용자와 계속 연결을 하고 있을 이유가 없기 때문에 다른 새로운 특정 사용자와 연결을 하기 위해 Connection을 데이터 전송 후 바로 끊도록 설계 되어 있습니다.

HTTP 1.0은 Connection을 할 때 마다 3way-handshaking을 합니다. 계속 연결을 해줬다, 끊어줬다 하면 초창기에는 효율적일지 모르나 요즘같은 멀티미디어 시대에는 효율적이지 못한 방식 입니다.

이러한 불필요한 방식을 개선하여 나온 것이 HTTP 1.1입니다.

HTTP 1.1 은 HTTP 1.0과는 다르게 Connection을 한번 할 때 동시에 여러클라이언트와 하게 됩니다.

그렇기에 여러 클라이언트와 Connection을 한다 하여도 3way-handshaking을 한번 하게 되는 것 입니다.

또한 한번에 여러 클라이언트와 동시에 Connection을 하기 때문에 1.0처럼 데이터 전송후 바로 연결을 종료 해 주지 않아도 됩니다. 그래서 1.1은 일정시간동안 계속 연결을 유지 합니다.

또, 데이터를 전송완료 했는데도 불구하고 어느정도 시간까지 계속 연결을 하고 있는것이 1.1 입니다.

서버 입장에서는 사용자가 연결을 끊었는지 웹 특성상 알 수 없으므로 오랜시간 연결을 지속합니다.

제 생각에는 HTTP 1.1에 단점이라고 생각이 됩니다.

HTTP 버전은 브라우저 설정을 통해 변경 할 수 있습니다.

또 버전마다 보안 취약성이 있기 때문에 상황에 맞게 적절히 이용하는게 좋겠습니다.

어떠한 취약점이 있는지는 나중에 더 자세하게 공부를 해서 포스팅 해야 할 듯 하네요..

알고는 있지만 설명하기에는 뭔가 부족한 부분이 있어서...

혹시 제가 쓴 내용중에 틀린부분이 있거나 미숙한 부분이 있으면 댓글 달아주세요~ ^^