- 테스트 환경
- 윈도우 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=100
Connection: 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=100
Connection: 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의 버전 표시는 껍데기 뿐인것 같다.