HTTP 1.1 과 HTTP 1.0의 keep-alive 관련 테스트
- 테스트 환경
- 윈도우 7에서 APM설치, 아파치만 실행후
cmd창에서 명령 실행
(참고 : 윈도우7은 telnet을 따로 설치해줘야함)
telnet localhost 80 GET / HTTP/1.1 Host: localhost Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 Accept-Encoding: gzip,deflate,sdch Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
-> HTTP/1.1 200 OK Date: Wed, 08 Oct 2014 02:28:21 GMT Server: Apache Content-Length: 3211 Keep-Alive: timeout=5, max=100Connection: Keep-Alive Content-Type: text/html;charset=UTF-8
[내용 생략]
telnet localhost 80 GET / HTTP/1.0 Host: localhost Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 Accept-Encoding: gzip,deflate,sdch Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
-> HTTP/1.1 200 OK Date: Wed, 08 Oct 2014 02:28:56 GMT Server: Apache Content-Length: 3211 Connection: close Content-Type: text/html;charset=UTF-8
[내용 생략]
- HTTP 1.1
- KeepAlive 기능이 있음
- 뭐하는 기능인가? connection less인 http의 커넥션 오버해드를 줄이고자 커넥션을 일정기간 유지해서 재활용하느는 기능.
응답해더에서
**Keep-Alive: timeout=5, max=100Connection: Keep-Alive**처럼 표시되면 동작중이며 5초간 유지, 100번 사용 가능 이라는 뜻 -
telnet으로 테스트하면 내용출력 하고 잠시후에 끊어진다.
(조금 후 ‘호스트에 대한 연결을 잃었습니다.’ 라고 나올것이다. 정확하게 5초를 기다리지는 않는것 같다.) - HTTP 1.0
- KeepAlive 기능이 없으므로 바로 연결이 끊어진다.
-
Connection: close 라고 표시된다
-
telnet으로 테스트하면 내용출력 하고 바로 커넥션이 끊어진다.
(바로 ‘호스트에 대한 연결을 잃었습니다.’ 라고 나올것이다.) - 주의
- KeepAlive 설정은 서버의 설정에 따라서 다를 수 있다.
-
대량의 접속이 있는 곳에서는 KeepAlive를 Off 해서 사용하는 경우가 많다.
- 첨고
- 호스트에 대한 연결을 잃었습니다.
Connection closed by foreign host. (영문 리눅스 응답) -
서버에서 클라이언트의 접속을 끊었다는 뜻이다.
- HTTP 1.0으로 요청 하더라도
Connection: keep-alive
를 요청해더에 넣고 요청하면 KeepAlive가 동작하도록 요청된다.
HTTP의 버전 표시는 껍데기 뿐인것 같다.