1.ARP协议
地址解析协议(Address Resolution Protocol)
已知对方的三层ip地址,需要二层mac地址
当一台设备(请求方)需要知道某个 IP 地址对应的 MAC 地址时,会使用 ARP封装一个数据帧。这台设备的网络层以自己的 IP 地址作为源 IP 地址、以目的设备(被请 求方)的 IP 地址作为目的 IP 地址、以自己的 MAC 地址作为源 MAC 地址、以广播 MAC 地址作为目的 MAC 地址,在本地网络中发送一个 ARP 广播消息,其目的是在本地网络 中寻找数据包目的 IP 地址对应的 MAC 地址.
工作过程
1) 主机A首先查看自己的ARP表,如果ARP表中含有主机B对应的ARP表项,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
免费ARP
功能:重复地址探测
主机被分配了IP地址或者IP地址发生变更后,必须立刻检测其所分配的IP地址在网络上是否是唯一的,以避免地址冲突。主机通过发送ARP Request报文来进行地址冲突检测。
当以一台设备的接口由 down-> up 的瞬间向同一局域网内的设备发送一个arp 报文。
源ip:本机ip
源mac:本机mac
目标mac:ff:ff:ff
目标IP:本机IP
为了检验局域网下是否由相同的ip
代理arp
代理ARP(Proxy-arp)的原理就是当出现跨网段的ARP请求时,路由器将自己的MAC返回给发送ARP广播请求发送者,实现MAC地址代理(善意的欺骗),最终使得主机能够通信。
把AR2的两个接口开启代理arp,ar1就能访问到ar3了,但其实是只能访问到AR2,借助AR2访问对方。
2.ping 过程
成帧:一个数据若想被发送出去,那么这个数据必须完成数据帧格式的封装(成帧)否则,没有资格被发送出去
数据ping过程
- 发送方先封装数据包,由于数据包需要目标MAC
- 先在自己的arp表中找,如果没有
- 发送一个广播的arp,寻找目标的mac
- 目标收到后,发送响应arp,发送发获取到mac
- 封装数据发送数据.
3.传输层TCP/UDP
1.TCP
TCP全称传输控制协议,必须对数据的传输进行控制。
tcp数据包
三次握手
第一次握手:当计算机 A 想要和计算机 B 建立连接时,会封装一个数据段,该数据段
的 SYN 位置位,表示计算机 A 希望与计算机 B 建立连接。此时 TCP 为序列号字段随机
生成一个值来代表第 1 个数据字节的序列号,这里用 a 表示;ACK 未置位,确认号为 0。
第二次握手:当计算机 B 收到数据段时,会封装一个数据段。这个数据段的 SYN
位和 ACK 位都置位,因为计算机 B 既需要确认计算机 A 的建立连接请求,又需要向
计算机 A 请求连接。SYN 位置位,TCP 为序列号字段随机生成一个值来代表第 1 个数
据字节的序列号,这里用 b 表示。ACK 位置位,确认已接收序列号为 a 的数据段。
但是,该数据段没有数据部分,因此计算机 B 等待接收的是下一个数据段,即确认
号为 a+1。
第三次握手:当计算机 A 收到 SYN, ACK 数据段时,会封装一个 ACK 数据段来确认
计算机 B 的建立连接请求。这个数据段的 SYN 位未置位,因此序列号字段不再随机生成,
而是计算机 B 第二次握手中的确认号,即 a+1;ACK 位置位,确认接收到序列号为 b 的
数据段,即确认号为 b+1。
四次握手
第一次握手:当计算机 A 想要与计算机 B 断开连接时,会封装一个 FIN 数据段, 表示之后没有数据要传输了。该数据段的 FIN 置位,表示计算机 A 希望断开和计算机 B
之间的连接。
第二次握手:当计算机 B 收到 FIN 数据段时,会封装一个 ACK 数据段来确认计算 机 A 的断开连接请求。
第三次握手:同时,计算机 B 也需要封装一个 FIN 数据段来发起断开连接请求,并且把该数据段发送给计算机 A。
第四次握手:计算机 A 使用 ACK 数据段确认自己收到计算机 B 发来的 FIN 数据段
seq:信息发送的次序,
ack:确认信息,ack=M+1:表示 seq=M的数据包已经收到,要接受M+1的数据包了ack对seq的回复
UDP
UDP全称为用户数据报协议。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法
UDP数据包
小白一枚,水平有限,如有错误,欢迎指教。。。