1 minute read

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

🔗original-link

Updated: