TCP、HTTP

网络的通畅是Web性能的一个重要衡量指标。要了解浏览器如何获得信息就要了解基本的计算机网络知识,本节主要学习了TCP协议和HTTP协议。

TCP

了解TCP之前需要首先了解一下什么是IP,我们都听说过IP地址,它其实就和我们每个人的家庭住址一样,不过它是每个计算机的地址。有了它,数据就能实现在各个不同的计算机之间传输,实现将数据精确传输到指定的计算机。
数据在计算机之间的传输有以下几个步骤:

  • 主机A上层将一个数据包交给网络层
  • 网络层给数据包附加一个IP头(IP头就像寄快递时候的快递单),然后交给底层
  • 底层通过物理网络将数据包传输到主机B的网络层
  • 主机B的网络层解析数据包,将IP头拆下来,剩余部分交给上层。
    通过IP实现了数据在不同主机之间的传输。但是IP只负责数据的传输,主机B接收到数据之后并不知道将这些数据交给哪个应用程序来处理,这就需要UDP来解决。
    UDP协议是负责将数据传输给指定的应用程序。支持UDP协议需要在上层和网络层之间添加一个传输层。于是整个数据传输流程就多了两个步骤,上层将数据交给传输层,传输层给数据附加一个UDP头,然后再交给网络层附加IP头。到达主机B后,IP头被拆下来,然后数据被交给主机B的传输层,传输层通过解析UDP头识别出数据需要交给哪个应用程序,然后将数据交给上层。
    UDP实现了将数据送达应用程序。UDP传输速度还快,但是稳定性差,数据在传输过程中容易丢失而且不支持重传。传输过程中大文件会被拆分成小文件传输,UDP并不知道如何将这些小文件重新组合成大文件。由此就产生了TCP协议。
    TCP和UDP最大的不同在于TCP支持重传并且TCP引入了数据包排序机制,能够将小文件重新组合形成大文件。
    一个TCP连接的声明周期主要包含建立连接(三次握手)数据传输断开连接(四次挥手)。在数据传输的过程中每传输一个数据包服务端就会等待客户端的消息,如果没有等到就会触发重传机制。
    TCP实现了将数据完整地传输到应用程序

HTTP

HTTP是建立在TCP连接的基础上,允许浏览器向服务器请求资源的一种协议
这里主要是需要了解浏览器如何构建HTTP请求,以及服务器如何响应HTTP请求。

  1. 构建请求。浏览器首先会构建一个请求行信息,准备发起网络请求。
  2. 查找缓存。发起网络请求前查找浏览器缓存,如缓存中有要请求的文件,则直接加载而不会去服务器中下载。
  3. 准备IP和端口。数据包是通过IP来进行传输的,建立TCP连接前首先要获取到IP,通过域名系统,请求DNS返回域名对应的IP。
  4. 等待TCP队列。Chrome的机制是,同一个域名最多只能建立6个TCP连接,超出的部分会进入等待队列。
  5. 建立TCP连接。这个在TCP的生命周期中有提到。
  6. 发送HTTP请求。这个请求中分为请求行,请求头和请求体三个部分。请求行中有请求方法、请求URI和HTTP协议的版本。发送请求行就是告诉服务器浏览需要什么类型的资源,主要方法有get和post。请求头中是一些浏览器自身的属性信息。
  • 上述步骤就是浏览器构建并且发送HTTP请求的过程,接下来就是服务器的响应过程。
  1. 服务器响应HTTP请求。
    7.1 返回请求。也是三个部分,响应头、响应行和响应体。响应头中包含HTTP协议版本和状态码,状态码表示处理结果(比如常见的404,表示请求的页面不存在)。请求体中是一些服务器的基本信息,它响应的时间以及一些需要保存在浏览器的Cookie等信息。请求体中就是浏览器请求的资源了,比如HTML文件。
    7.2 断开连接。返回请求数据后断开连接,也可以选择保持连接。
    7.3 重定向。如果输入的URL不是完整的页面地址,就会触发重定向。服务器返回的状态码是301,代表需要重新定向,在响应头中还有一个Location字段,最终浏览器就会访问这个字段中对应的网址。

补充

  1. 某些页面第二次访问的时候就很快的原因?
    一些重要的资源,比如DNS对应的IP以及某些服务器要求的页面资源被缓存在浏览器中,下次再访问的时候直接加载缓存的内容。
  2. 网站登录状态的长期保持?
    也是缓存的功劳。用户第一次登陆后,服务器返回一段代表用户信息的字符串让浏览器缓存到Cookie里面,下次访问浏览器会将Cookie中的数据发送给服务器,服务器验证该用户是否登陆过,如果是登陆过,直接返回该用户的页面信息就可以了。

小结

  • 了解了IP、UDP、TCP,了解了数据如何通过它们实现在不同的计算机之间进行传输。UDP、TCP各自的优缺点。
  • 了解HTTP。了解从输入URL到浏览器展示出页面的过程中都发生了什么。了解缓存机制如何加快页面的访问速度并且保持用户长期登录。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容