0%

《计算机网络》- http 部分读书笔记

《计算机网络(第7版)-谢希仁》http 部分的读书小结和扩展,因为工作中最常打交道的就是这部分了。整本书都很不错,语言通俗易懂;各协议的关系、发展过程以及区别都概括的很好。
本文主要概括 HTTP、HTTP1.0、HTTP2.0、HTTPS 的之间的差异。

万维网 WWW

万维网(World Wide Web)是一个分布式的超媒体系统,是超文本系统的扩充。万维网使用 统一资源定位符URL(Uniform Resource Locator) 来标志万维网上的各种文档。

URL 的格式

URL 的一般形式由以下四个部分组成:
     <协议>://<主机>:<端口>/<路径>
URL 的<协议>就是指出使用什么协议来获取万维网文档。现在最常用的协议就是 http,其次是 ftp。有些浏览器为方便用户,在输入 URL 时,可以把最前面的“http://”甚至把主机名最前面的“www”省略,然后浏览器替用户把省略的字补上。
URL里面的字母不分大小写,但是为了便于阅读,有时故意使用一些大写字母。

超文本传送协议 HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议),使用了面向连接的 TCP 作为传输层协议,监听 80 端口,信息是明文传输,其本身是无状态的。

  • HTTP1.0(1996)每次请求都会单独建立一个TCP连接,用完关闭;(缺点:每次请求都耗费时间在连接上,非持续连接 使服务器开销很重)。
  • HTTP1.1(1999)在服务器发送完响应后仍在一段时间内保持这条连接,浏览器和该服务器可以继续在该连接上传送后续的请求报文和响应报文,使用 持续连接
  • HTTP2.0(2015)使用了新的二进制格式、多路复用、以及 header 压缩,性能相对于 HTTP1.x 提升明显。改善了在 HTTP1.1 中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制(连接数量),超过限制会被阻塞;基于 HTTPS,天生具有安全性,可以避免单纯使用 HTTPS 带来的性能下降。

影响 HTTP 网络请求的因素

影响因素主要有两个:带宽和延迟。

  • 带宽 :在浏览器刚流行的时候,大部分用户是通过拨号来上网,由于受当时的带宽条件的限制,无法使得用户的同时多个请求被处理。同时,当时的服务器的配置也比现在差很多,所以限制每个浏览器的连接数的大小也是有必要的。浏览器默认对同一域下的资源,只保持一定的连接数,阻塞过多的连接,以提高访问速度和解决阻塞问题。不同浏览器的默认值不一样,对于不同的 HTTP 协议其值也不一样。
浏览器 HTTP 1.1 HTTP 1.0
IE 6、7 2 4
IE 8 6 6
FireFox 2 2 8
FireFox 3 6 6
Safari 3、4 4 4

如果说我们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题,但是现在网络基础建设已经使得带宽得到极大的提升,我们不再会担心由带宽而影响网速,那么就只剩下延迟了。

  • 延迟
    • 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制(见上表),后续请求就会被阻塞。
    • DNS 查询(DNS Lookup):浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。
    • 建立连接(Initial connection):HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。

应用层安全协议 HTTPS

HTTPS 是使用 SSL(Secure Socket Layer,安全套接字层)协议的 HTTP 协议。SSL 作用在 HTTP 和运输层之间,在 TCP 之上建立起一个安全通道,为通过 TCP 传输的应用层数据提供安全保障。
HTTPS 监听 TCP 的 443 端口,信息是密文传输。