网络基础_02

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过程

  1. 发送方先封装数据包,由于数据包需要目标MAC
  2. 先在自己的arp表中找,如果没有
  3. 发送一个广播的arp,寻找目标的mac
  4. 目标收到后,发送响应arp,发送发获取到mac
  5. 封装数据发送数据.

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数据包


小白一枚,水平有限,如有错误,欢迎指教。。。

相关推荐
wang090740 分钟前
网络协议之为什么要分层
网络·网络协议
EasyDSS2 小时前
EasyCVR视频汇聚平台助力大型生产监控项目摄像机选型与应用
网络·人工智能·音视频
等猪的风3 小时前
openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解
运维·服务器·网络
千码君20163 小时前
什么是数据链路层的CRC检测以及为什么要放到帧尾?
服务器·网络·网络协议·以太网·奇偶校验·crc检测·以太网帧
后院那片海3 小时前
Web基础与HTTP协议
网络·网络协议·http
科技小E3 小时前
EasyRTC嵌入式音视频通信SDK智能安防与监控系统的全方位升级解决方案
大数据·网络·人工智能·音视频
程高兴5 小时前
高压直流输电MATLAB/simulink仿真模型+说明文档
开发语言·网络·matlab
开***能8 小时前
高炉项目中DeviceNET到Ethernet的转换奥秘
网络·网络协议·自动化
努力也学不会java8 小时前
【网络原理】 网络编程套接字
java·开发语言·网络·网络协议·tcp/ip·php
不老刘8 小时前
Uni-app网络请求AES加密解密实现
网络·uni-app