Мне интересно, как клиент, который запросил веб-страницу, например, запрос на получение, точно знает, когда он получил все запрошенные данные и что больше нет данных, которые можно было бы использовать с примерами https и http?
Спасибо
Нет разницы между HTTP и HTTPS, поскольку HTTPS - это просто HTTP, туннелируемый через туннель TLS.
Чтобы ответить на ваш вопрос: если сервер отправляет заголовок Content-Lenght: x
, то тело ответа должно быть точно размером x октетов (байтов). Если сервер не отправляет этот заголовок, он изменяется:
для HTTP 1.0 тело ответа определенно завершается после того, как сервер закрывает соединение. Для HTTP 1.1 это сложнее, потому что сервер может использовать кусочную кодировку: http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.3.6.1
Ссылочный пример HTTP Exchange
Образец HTTP Exchange
Чтобы получить файл по URL
http://www.somehost.com/path/file.html
сначала откройте сокет для хоста www.somehost.com, порт 80 (используйте порт по умолчанию, равный 80, поскольку ни один из них не указан в URL). Затем отправьте что-то вроде следующего через сокет:
GET /path/file.html HTTP/1.0 From: someuser@jmarshall.com User-Agent: HTTPTool/1.0 [blank line here]
Сервер должен ответить примерно следующим образом, отправленным через тот же сокет:
HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354 <html> <body> <h1>Happy New Millennium!</h1> (more file contents) . . . </body> </html>
После отправки ответа сервер закрывает сокет.