[http] Keep-alive 헤더 설명

사이트 구축 요청을 받았는데 공동 개발자 중 한 명이 연결 유지 헤더를 포함해야한다고 말했습니다.

나는 그것에 대해 많이 읽었지만 여전히 질문이 있습니다.

msdn->

개방형 연결은 서버가 각 요청에 대한 콘텐츠를 더 빨리 반환 할 수 있기 때문에 클라이언트가 웹 페이지 콘텐츠에 대해 여러 요청을 할 때 성능을 향상시킵니다. 그렇지 않으면 서버는 모든 요청에 ​​대해 새 연결을 열어야합니다.

보고

여기에 이미지 설명 입력

  • 는 IIS (F)를 보낼 때 keep alive헤더 ( 또는 사용자가 연결 유지 전송 ), 그 (뜻인가 E, C, B단지 내 세션에있는 연결 저장)을?
  • 이 정보는 어디에 보관 됩니까 ( “이 연결은”Royi “에 속함 )?
  • 다른 사람이 그 연결을 사용할 수 없다는 의미입니까?
  • 그렇다면-헤더 유지-중복 된 연결 사용자의 수를 줄인다는 의미입니까?
  • 그렇다면 연결이 나에게 얼마나 오래 저장됩니까? (즉, 만약 내가 keep alive를 설정하면 언제까지 “keep”?)

관심있는 사람들을위한 ps :

이 샘플 페이지 를 클릭하면 연결 유지 헤더가 반환됩니다.



답변

이 정보는 어디에 보관 되나요 ( “이 연결은 컴퓨터 A와 서버 사이 F“)?

TCP 연결은 소스 IP와 포트 및 대상 IP와 포트로 인식됩니다. 사용자의 OS, 모든 중간 세션 인식 장치 및 서버의 OS는이를 통해 연결을 인식합니다.

HTTP는 요청-응답과 함께 작동합니다. 클라이언트는 서버에 연결하고 요청을 수행하고 응답을받습니다. 연결 유지가 없으면 각 응답 후 HTTP 서버에 대한 연결이 닫힙니다. HTTP 연결 유지를 사용하면 특정 기준이 충족 될 때까지 기본 TCP 연결을 열어 둡니다.

이를 통해 단일 TCP 연결을 통한 다중 요청-응답 쌍을 허용하여 TCP의 상대적으로 느린 연결 시작의 일부를 제거합니다.

IIS (F)가 연결 유지 헤더를 보낼 때 (또는 사용자가 연결 유지 헤더를 보낼 때), 이는 (E, C, B) 연결을 저장한다는 의미입니까?

아니요. 라우터는 세션을 기억할 필요가 없습니다. 사실, 동일한 TCP 세션에 속하는 여러 TCP 패킷이 모두 동일한 라우터를 통과 할 필요는 없습니다. 즉, TCP가 관리하기위한 것입니다. 라우터는 최상의 IP 경로를 선택하고 패킷을 전달합니다. Keep-alive는 클라이언트, 서버 및 기타 중간 세션 인식 장치에만 해당됩니다.

내 세션에만 해당합니까?

다른 사람이 그 연결을 사용할 수 없다는 의미입니까?

이것이 TCP 연결의도입니다 . 이는 두 당사자만을위한 종단 간 연결입니다.

그렇다면-헤더 유지-중복 된 연결 사용자의 수를 줄인다는 의미입니까?

“겹친 연결”을 정의합니다. 다음 과 같은 장점과 단점에 대해서는 HTTP 영구 연결 을 참조하십시오 .

  • 더 적은 수의 연결이 동시에 열리기 때문에 CPU 및 메모리 사용량이 낮습니다.
  • 요청 및 응답의 HTTP 파이프 라이닝을 활성화합니다.
  • 네트워크 정체 감소 (TCP 연결 감소).
  • 후속 요청의 지연 시간 감소 (핸드 쉐이킹 없음).

그렇다면 연결이 나에게 얼마나 오래 저장됩니까? (즉, 만약 내가 keep alive를 설정하면 언제까지 “keep”?)

일반적인 연결 유지 응답은 다음과 같습니다.

Keep-Alive: timeout=15, max=100

예를 들어 HTTP (Hypertext Transfer Protocol) Keep-Alive Header 를 참조하십시오 ( keep-alive 헤더가 26162086 보다 자세히 설명 된 HTTP / 2 용 초안 ).

  • 호스트는 timeout매개 변수 값을 호스트가 유휴 연결이 닫히기 전에 열린 상태로 유지되도록 허용하는 시간으로 설정합니다 . 호스트에서 데이터를 보내거나받지 않으면 연결이 유휴 상태입니다.

  • max매개 변수는 클라이언트가 만들거나 서버가 영구 연결에서 만들 수있는 최대 요청 수를 나타냅니다. 지정된 수의 요청 및 응답이 전송되면 매개 변수를 포함하는 호스트가 연결을 닫을 수 있습니다.

그러나 서버는 임의의 시간 또는 요청 횟수 후에 연결을 자유롭게 닫을 수 있습니다 (현재 요청에 대한 응답을 반환하는 한). 이것이 구현되는 방법은 HTTP 서버에 따라 다릅니다.


답변