工作打交道最多的还是浏览器,对于输入URL到页面呈现的步骤类似的文章其实也是看了不少,但是还是觉得差点什么;最后选了《图解HTTP》这本书,基本也覆盖了HTTP协议中的大部分内容,自己也进行了知识点提炼和总结,在这里记录一下;

Web及网络基础

Web 是建立在 HTTP 协议上通信的,而 HTTPTCP/IP 协议族内部的一个子集。

📌TCP/IP 协议族

为了满足不同的硬件、操作系统之间的通信,需要制定约束的规则,而这些规则也就称为协议;而 TCP/IP 指的是 TCPIP 两种协议,也有说法是 IP 协议通信过程中,使用到的协议族的统称。

TCP/IP 协议族是基于分层进行管理的,分层化的设计使得改动以及任务划分更加清晰;

TCP/IP分层

在发送请求的时候,客户端在应用层HTTP协议)发出一个请求,生成请求的HTTP报文,为了传输方便,在传输层TCP协议)将获取到的报文切割成报文段转发给网络层(IP协议),搜索对方的地址后转发给链路层; 同样的服务器端按照倒序,直到服务端应用层接收重组出HTTP报文,请求才算接受完成。

📌TCP的确保可靠性

相比较UDP为面向非连接的协议,TCP协议则是在发送数据前需要建立可靠的连接;通常TCP协议通过三次握手的策略以及FlagSYNACK)标志来保证通信的可靠性。

三次握手
  • 发送端首先发送一个带 SYN 标志的数据包给对方
  • 接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息
  • 最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束

若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。
同时TCP协议可以提供字节流服务,这样当HTTP报文主体的数据较大的时候,更易于传输(例如:大图加载的时候是一块一块进行加载)

📌IP协议 - 路由选择及数据传输

位于网络层的IP协议的主要作用就是各种数据包的传送;

IP协议不提供可靠的传输服务,只是尽自己最大努力支付来传输数据包,可靠性由上层协议提供(TCP协议) IP协议也是一种无连接协议,事先不会建立会话;

IP地址及MAC地址

IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对

,依据ARP协议,可以通过IP地址反查出对应的MAC地址

ARP协议

ARP 同样也是网络层协议,可以通过目标主机的IP地址,查询解析目标主机的MAC地址;中转时利用下一站设备的MAC地址继续搜索下一个中转对象;

每台主机在自己的ARP缓存区中都有一个ARP列表,保存了是近期与自己有过通信的主机的IP地址和MAC地址之间的对应关系。在进行数据中转的时候,向本网段的所有主机发送一个携带IP地址的ARP请求数据包,收到后查询自己的IP地址,是否符合条件;

HTTP 协议及报文简述

HTTP 协议规定在数据由客户端开始建立通信,而服务端没有获得请求之前不会进行响应,所以在一条通信线路来说,HTTP 协议可以明确区分哪一端是客户端,哪一端是服务端。

📎HTTP 协议的特性

  • 无状态

    HTTP 协议不会对请求和响应之间的状态做出保存,即:对于发送过的请求和响应不做持久化处理(这样的设计有利于快速的处理大量的事务),在 HTTP 1.1 中可以可以通过 cookie 进行管理状态满足业务需求

  • 持久连接

    在初始的 HTTP 协议中,每进行一次 HTTP 通信需要断开一次 TCP 连接,但请求包含多个图片的文档时候,会频繁断开 TCP 连接,所以在后期的版本中(1.0 部分及 1.1 之后)采用了持久连接的方法。 其特点是: 只要任意一端没有明确的提出断开连接则继续保持 TCP 的连接状态

  • 管线化

    因为持久连使得多数请求可以以管线化的方式进行发送请求,使得可以不用等待一个请求完成就可以继续发送,可以做到**并行发送**多个请求。 使用管线化的方式可以使得请求更快的结束,请求数目越多,时间差越明显;

  • 基于 Cookie 的状态管理

    由于 HTTP 协议为了减少服务器及内存的消耗被设计为无状态,但是各种业务中则需要保存登录状态等需求,于是引入了 Cookie 技术。

    Cookie 技术通过在请求和响应报文中写入 cookie 信息来控制客户端的状态。Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。

    当在 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到 cookie 信息,这样能有效的防止 XSS 攻击。