이 정보는 어디에 보관 되나요 ( "이 연결은 컴퓨터 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 헤더가 2616 및 2086 보다 자세히 설명 된 HTTP / 2 용 초안 ).
호스트는 timeout
매개 변수 값을 호스트가 유휴 연결이 닫히기 전에 열린 상태로 유지되도록 허용하는 시간으로 설정합니다 . 호스트에서 데이터를 보내거나받지 않으면 연결이 유휴 상태입니다.
이 max
매개 변수는 클라이언트가 만들거나 서버가 영구 연결에서 만들 수있는 최대 요청 수를 나타냅니다. 지정된 수의 요청 및 응답이 전송되면 매개 변수를 포함하는 호스트가 연결을 닫을 수 있습니다.
그러나 서버는 임의의 시간 또는 요청 횟수 후에 연결을 자유롭게 닫을 수 있습니다 (현재 요청에 대한 응답을 반환하는 한). 이것이 구현되는 방법은 HTTP 서버에 따라 다릅니다.