때로는 브라우저 (또는 다른 응용 프로그램)의 충실한 다운로드 진행률 표시기가 손을 공중에 던지고 남은 다운로드 시간 표시를 포기하는 경우가 있습니다. 왜 가끔 예상 다운로드 시간을 못 맞추고 때로는 모두 함께보고하지 못하는 이유는 무엇입니까?
오늘의 질문 및 답변 세션은 커뮤니티 중심의 Q & A 웹 사이트 그룹 인 Stack Exchange의 하위 부문 인 SuperUser가 제공 한 것입니다.
질문
수퍼 유저 독자 Coldblackice는 자신의 브라우저가 항상 더럽혀지지 않는 이유를 알고 싶어합니다.
간혹 웹 브라우저에서 파일을 다운로드 할 때 다운로드 진행률이 파일의 전체 크기 또는 다운로드 진행 정도를 "인식"하지 못합니다. 다운로드 속도 만 표시됩니다. "알 수 없음"으로.
브라우저가 일부 파일의 최종 크기를 알지 못하는 이유는 무엇입니까? 처음에이 정보를 어디서 얻습니까?
실제로 어디?
답변
수퍼 유저 기여자 Gronostaj는 다음과 같은 통찰력을 제공합니다.
웹 서버에서 문서를 요청하기 위해 브라우저는 HTTP 프로토콜을 사용합니다. 주소 표시 줄에서 해당 이름을 알 수 있습니다 (지금은 숨겨져있을 수 있지만 주소 표시 줄을 클릭하고 URL을 복사하여 일부 텍스트 편집기에 붙여 넣으면
http : //처음에). 간단한 텍스트 기반 프로토콜이며 다음과 같이 작동합니다.먼저 브라우저가 웹 사이트의 서버에 연결하고 다운로드하려는 문서의 URL (웹 페이지도 문서 임)과 브라우저 자체에 대한 세부 정보 ( 사용자 에이전트 기타). 예를 들어 수퍼 유저 사이트의 기본 페이지를로드하려면
http://superuser.com/, 내 브라우저는 다음과 같은 요청을 보냅니다.GET / HTTP / 1.1 호스트 : superuser.com 연결 : 연결 유지 수락 : text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 사용자 에이전트 : Mozilla / 5.0 (Windows NT 6.1, WOW64) Accept-Encoding : gzip, deflate, sdch Accept-Language : pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 쿠키 : [removed for security] DNT : 1 수정 된 경우-이후 : 2013 년 7 월 9 일 화요일 07:14:17 GMT첫 번째 줄은 서버가 반환해야하는 문서를 지정합니다. 다른 줄은 헤더라고합니다. 그들은 다음과 같이 보입니다 :
헤더 이름 : 헤더 값이 행은 서버가 수행 할 작업을 결정하는 데 도움이되는 추가 정보를 보냅니다.
모든 것이 정상이면 서버는 요청 된 문서를 전송하여 응답합니다. 응답은 상태 메시지로 시작하여 일부 헤더 (문서에 대한 세부 정보 포함)가 뒤 따르고, 마지막으로 모든 것이 정상인 경우 문서의 내용이 표시됩니다. 내 요청에 대한 수퍼 유저 서버의 응답은 다음과 같습니다.
HTTP / 1.1 200 정상 캐시 제어 : 공개, max-age = 60 콘텐츠 유형 : text / html; charset = utf-8 만료 : 2013 년 7 월 9 일 화요일 07:27:20 GMT 최종 수정 : 2013 년 7 월 9 일 화요일 07:26:20 GMT 다름 : * X-Frame- 옵션 : SAMEORIGIN 날짜 : 2013 년 7 월 9 일 화요일 07:26:19 GMT 콘텐츠 길이 : 139672 <! DOCTYPE html> <html> [...snip...] </ html>마지막 줄 이후 수퍼 유저의 서버는 연결을 닫습니다.
첫 번째 줄 (
HTTP / 1.1 200 정상) 포함 응답 코드 ,이 경우200 OK. 요청에 따라 서버가 문서를 반환한다는 의미입니다. 서버가 그렇게 할 수없는 경우 코드는 다른 것입니다.404 찾을 수 없음, 및403 금지매우 일반적입니다. 그런 다음 헤더가 이어집니다.브라우저가 응답에서 빈 줄을 찾으면 해당 줄을 지나는 모든 것이 요청한 문서의 내용임을 알게됩니다. 그래서이 경우
<! DOCTYPE html>수퍼 유저 홈페이지 코드의 첫 번째 줄입니다. 다운로드 할 문서를 요청한 경우 대부분의 문서 형식은 사전 처리 없이는 읽을 수 없기 때문에 일부 횡설수설 문자 일 수 있습니다.헤더로 돌아 가기. 우리에게 가장 흥미로운 것은 마지막 것입니다.
내용 길이. 빈 줄 이후에 예상되는 데이터의 바이트 수를 브라우저에 알려주므로 기본적으로 바이트로 표현되는 문서 크기입니다. 이 헤더는 필수가 아니며 서버에서 생략 할 수 있습니다. 문서 크기를 예측할 수없는 경우 (예 : 문서가 즉석에서 생성되는 경우), 때로는 게으른 프로그래머가 문서를 포함하지 않거나 (드라이버 다운로드 사이트에서 흔히 볼 수 있음) 때로는 모르는 초보자가 웹 사이트를 만듭니다. 그러한 헤더의.어쨌든 이유가 무엇이든 헤더가 누락 될 수 있습니다. 이 경우 브라우저는 서버가 보낼 데이터의 양을 알지 못하므로 문서 크기를 다음과 같이 표시합니다. 알 수 없는 , 서버가 연결을 종료 할 때까지 기다립니다. 이것이 문서 크기를 알 수없는 이유입니다.