ARP协议、IP协议、ICMP协议、TCP和UDP协议、DNS协议、HTTP协议、HTTPS协议

协议的必要性:

协议就是计算机与计算机之间通信网络通信时,事先大成的一种“约定”。这种“约定”使不同的厂商的设备、不同的CPU以及不同操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。就好比一个中国人和外国人交流,我说中文,外国人说其他语言,完全听不懂,对牛弹琴。但是如果我们约定使用国际语言(英语)沟通,那么就能是明白对方的意思,就能正常沟通了。而这个英语就是“协议”。

TCP/IP协议族:

面试-网络协议解析_ARP协议

协议的分层:

面试-网络协议解析_TCP和UDP_02

分层的作用:

面试-网络协议解析_ICMP协议_03

七层协议的具体过程:

面试-网络协议解析_协议分析_04

发送方首选是封装数据包,打上自己的标签(源端口,源MAC,源IP地址),然后页打上(目标端口,目标MAC,目标IP地址),这些用于路由(类似寄快递的地址信息),接收方,就是接收到包裹之后,解封装,然后取出里面的数据。

协议解析(从应用层往下说)

1、HTTP协议

HTTP协议时超文本传输协议,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端镜像数据传输的一种规则。

HTTP协议是一种无状态协议,HTTP协议本身不会对发送过的请求和响应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量事务,提高效率。

然后现实生活中,很多应用场景需要保持用户登录的状态或记录用户购物车中商品。由于HTTP是无状态协议,所有必须引用一些技术来记录管理状态,例如cookie。(这个只是其中的一种方式,还有token等)

HTTP请求

面试-网络协议解析_协议分析_05

举例;
  1. 请求行(Request Line):请求行包含了HTTP请求的方法、目标资源的URL和HTTP版本信息。(对应图中第一行)
  2. 消息报头:消息报头包含了关于请求的附加信息,如用户代理、认证信息、内容类型等。
  1. User-Agent:标识了发起请求的用户代理(浏览器、应用程序等)
  2. Host:目标主机
  3. Authrization:包含了认证信息,用于访问受保护的资源。
  4. Content-Type:指定了请求体的数据类型。
  1. 空行:空行用于分割消息报头和请求正文,通常是换行。
  2. 消息正文:请求体包含了实际发送给服务器的数据。它通常在POST、PUT等方法中使用,用于传递表单数据、JSON数据等。
请求头
POST /submit-form HTTP/1.1 
消息包头
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type: application/json
Content-Length: 47
空行

请求正文
{"username": "user123", "password": "pass456"}
HTTP响应类似

面试-网络协议解析_协议分析_06

HTTP的五大特定:
  1. 支持客户/服务器模式
  2. 简单快速:HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3. 灵活:HTTP允许传输任意类型的数据对象。
  4. 无连接:无连接的含义是限制每次连接只能处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。早期这么做的原因是请求资源少,最求快。后来通过connection:Keep-Alive实现长连接。
  5. 无状态:HTTP协议时无状态。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连续传送的数据量增大。另一方面,在服务器不需要先前信息时应答就快。

2、HTTPS

HTTP不足
  1. 明文通信,内容会被获取。
  2. 不验证通信方的身份,因此有可能遭遇伪装。
  3. 无法证明报文的完整性,所以有可能已经篡改。
HTTPS = HTTP + 加密 + 认证 + 完整性保护

面试-网络协议解析_DNS协议_07

加密:对称加密、非对称加密、哈希加密、数字签名。