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=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의 버전 표시는 껍데기 뿐인것 같다.
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자