目录
[四、ARP协议 局域网协议](#四、ARP协议 局域网协议)
[五、DNS 域名解析协议](#五、DNS 域名解析协议)
[1. 解析地址:DNS 域名解析(寻找商店位置)](#1. 解析地址:DNS 域名解析(寻找商店位置))
[2. 建立连接:TCP 三次握手(确认收货双方身份)](#2. 建立连接:TCP 三次握手(确认收货双方身份))
[3. 加密加固:TLS 握手(如果是 HTTPS)](#3. 加密加固:TLS 握手(如果是 HTTPS))
[4. 发送请求:HTTP Request(提交订单)](#4. 发送请求:HTTP Request(提交订单))
[5. 服务器处理(后端逻辑处理)](#5. 服务器处理(后端逻辑处理))
[6. 返回响应:HTTP Response(发货)](#6. 返回响应:HTTP Response(发货))
[7. 浏览器渲染(拆快递并陈列)](#7. 浏览器渲染(拆快递并陈列))
[8. 断开连接:TCP 四次挥手(礼貌告别)](#8. 断开连接:TCP 四次挥手(礼貌告别))
一、数据链路层

上一章解决的问题是通过ip来使得数据能够从主机A传递到主机B
数据链路层,解决的是,直接相连的主机之间(电脑之间、路由器之间),进行数据交付的问题
负责在同一物理网络(广播域)内 ,通过MAC地址 进行"直接"寻址和帧传输。它确保数据帧能从一个设备准确送达另一个直接相连的设备。
需要用到的就是MAC地址,区分在同一个局 域网中,区分特定的不同的主机


上图中的以太网帧就是在数据链路层所进行封装和解封
二、局域网的通信原理
当一个局域网中的mac1发送给mac7一条数据时,会把这条消息发送给每个主机,当拿到这个消息时,发现源端和目的端和自己没有关系就会丢弃掉,这条消息也就在这样的情况下进行数据碰撞,直到传递到了mac7地址。

A主机发送一条消息到达另一侧的B主机,首先在路由表上看到下一跳的路由地址R,于是数据链路层进行数据的打包,传递到R路由器的数据链路层,再由R数据链路层进行数据的拆分,拿到里面的IP报头数据,再R上的路由表上进行分析,获得到它下一跳的地址。

数据在路由表上获得了它下一条的数据之后,再由R路由器的数据链路层对该IP数据报进行向下封装,此时目的端和源端地址更新为MACX和MACR,然后重复上面的操作,继续进行路由转发,以上就是数据链路层在这个路由转发时的角色

MAC帧只在局域网中有效,因为再每次进行解包之后就进行丢弃,转发时又会进行新的MAC帧的封装
三、交换机
在一个局域网中,数据之间的传递靠不断地进行**数据碰撞。**那么更多主机以及路由器的出现就会导致更多的数据碰撞,为了缓解这个问题,就引入的交换机。
在数据链路层,根据目标MAC地址,将数据帧智能地转发到正确的端口,而非广播。
如下图,交换机的出现,划分了碰撞域,减少了局域网碰撞

另外,抓包工具,实际就是在数据链路层中,对接收到的数据进行获取
四、ARP协议 局域网协议
上面提到了,局域网中,不同主机之间通过mac地址进行数据转发,问题是,从一个路由器到达另一个路由器进行拆分时,在网络层识别到了需要跳转的下一跳ip地址
例如路由器D的网络层解析到了 这个是由主机A发送给主机B的,并且将目的ip与本路由器掩码相与,得到就是本路由器的网络号,就确定了你要找的主机B就是本子网内部的主机,于是向下数据链路层进行MAC封装成帧,但是问题是封装的帧头中主机B的MAC地址不知道呀

就需要一个技术,在局域网中,能够把目标主机的ip地址转换为mac地址,也就是ARP协议。

原理:
主机A广播给本局域网一条ARP请求,然后主机B再看到这个请求之后,发现是对应自己的IP地址,于是把自己的MAC地址以APR响应返回给主机A。

ARP协议格式
也就是主机A广播了一条下面格式的报文,主机B之间返回给了主机A下面格式的报文
协议格式中的硬件类型、协议类型、硬件地址长度、协议地址长度一般都是固定的
硬件地址、以太网地址也就是mac地址,协议地址也就是ip地址

模拟一次ARP过程
ARP协议是在数据链路层,MAC帧以上的位置,如下进行封装

以上封装的MAC帧就在如下局域网中广播

错误响应:
局域网中每台设备都会接收到这条ARP帧,例如macA接收到这个帧之后,进行拆封之后,发现op字段是1(表示请求帧)然后看请求ip,发现和自己不对应,这是发给ipB的就会进行丢弃

正确响应
当这条MAC帧广播到正确的MACB的设备时,macb进行拆封,发现其ARP协议字段中op字段为1(表示为请求),然后再看请求ip就是本主机ip,于是就会构建一个应答ARP报文,这个应答报文中的OP字段为2(表示应答),以及其余的信息,就可以直接将该ARP报文封装一对一发送到MACR。

当MACR再次接收到上面那个应答帧时,查看OP字段为2,然后拿到自己想要的ip地址的MAC地址
小tips:
所有的APR请求都是广播(ARP协议字段的第一个以太网目的地址为全F )给每个设备,由每个设备经由数据链路层进行拆分,上交给网络层时,通过ip比对,才能发现这个请求是否是发送给本设备的,从而在网络层选择丢弃
但是所有的APR应答,在其余不相干设备接收时,直接在数据链路层进行丢弃,因为ARP协议字段的第一个以太网目的地址已经确认为MACR

如此一个设备就可以访问到其余其他设备的mac地址

arp 主机mac地址和ip地址,会被主机缓存起来,临时缓存起来
1、arp只有在缓存失效的时候,才会进行
2、我可以通过我的ip和子网掩码,得到我的网络号,然后拼接ip地址,ping所有的主机,从而得到所有主机的ip和mac
3、如果收到了多次同样的arp应答,会以最新的为准
ARP欺骗
主机之间可以封装ARP成为MAC帧,那么如果有一个主机C在已经建立联系好的俩个主机A、B之间,不断给A发送一个新的ARP请求,将主机A绑定主机B的mac地址修改为C的mac地址,导致A本来想给B发送的消息只能发送给主机C,这就叫做ARP欺骗
五、DNS 域名解析协议
DNS 是一整套从域名映射到 IP 的系统
TCP/IP 中使用 IP 地址和端口号来确定网络上的一台主机的一个程序 . 但是 IP 地址不方便记忆 .
于是人们发明了一种叫主机名的东西 , 是一个字符串 , 并且使用 hosts 文件来描述主机名和 IP 地址的关系
本地浏览器要访问腾讯的网址,输入www.qq.com后,先会去DNS服务器上获取其对应的映射ip,然后再拿这个ip去访问腾讯


浏览器中输入url后发生的事情
1. 解析地址:DNS 域名解析(寻找商店位置)
你在浏览器输入的是
www.baidu.com(域名),但计算机只认识 IP 地址。
浏览器缓存:首先查浏览器有没有记录。
操作系统缓存 & Hosts 文件 :如果没有,查电脑本地记录(比如你之前配置虚拟机 IP 时改过的
C:\Windows\System32\drivers\etc\hosts)。DNS 递归查询:如果本地都没有,就去问运营商的 DNS 服务器,一层层往上找,直到拿到对应的 IP 地址。
2. 建立连接:TCP 三次握手(确认收货双方身份)
拿到 IP 后,浏览器要和服务器打个招呼,建立一个稳定的连接。
第一次握手:客户端发个包:"你好,能听到吗?"(SYN)
第二次握手:服务器回个包:"听到了,你能听到我吗?"(SYN/ACK)
第三次握手:客户端回个包:"我也听到了,那我们要开始说话了。"(ACK)
3. 加密加固:TLS 握手(如果是 HTTPS)
现在的网站基本都是 HTTPS。在 TCP 建立后,双方会协商一套加密算法 并交换证书,确保你发出的 NER 文本数据不会被中间人窃听。
4. 发送请求:HTTP Request(提交订单)
连接建好了,浏览器正式发出请求。它会包含:
方法:GET(获取页面)或 POST(提交数据)。
路径 :
/index.html或/api/ner。请求头:你的浏览器型号、Cookie 等信息。
5. 服务器处理(后端逻辑处理)
这是你作为开发者最关心的部分。服务器收到请求后:
Web 服务器(如 Nginx)接收请求。
应用层处理:请求转发到 Python(Flask/FastAPI)或 Java 程序。
核心逻辑 :程序调用你的 BERT-BiLSTM-CRF 模型进行实体识别。
多智能体介入 :如果置信度低,触发多智能体辩论,各 Agent 交换意见,最终汇总结果。
6. 返回响应:HTTP Response(发货)
服务器处理完后,把结果包好发回来。
状态码 :
200 OK表示成功;404表示找不到;500表示你的深度学习模型崩了。内容:HTML 页面代码,或者是 NER 识别出的 JSON 结果。
7. 浏览器渲染(拆快递并陈列)
浏览器拿到代码后开始干活:
解析 HTML 构件 DOM 树。
加载资源:下载 CSS、JS、图片(同样会重复上面的步骤)。
执行 JS:如果是单页应用(Vue/React),此时才会动态渲染出页面。
8. 断开连接:TCP 四次挥手(礼貌告别)
当数据传输完毕,双方会通过四次挥手确认断开连接,释放服务器资源。