真正的平静,不是避开车马喧嚣,而是在心中修篱种菊。尽管如流往事,每一天都涛声依旧,只要我们消除执念,便可寂静安然。愿每个人,在纷呈世相中不会迷失荒径,可以端坐磐石上,醉倒落花前。
1.IP分片原因与报文控制字段
因为不同的链路连接对应的网络层,MTU可能不一致,会导致发送方发出的最大尺寸数据包超出接收方的MTU。为了避免数据包超出接受方的MTU而导致数据无法接收,所以需要对数据包进行分片
- ID字段:标识符,表示自己来自哪一个数据包
- FALG字段:有三个标志位 ①标志保留位 ②标志该数据包是否禁止/运行分段 ③表示为是否是最后分片
- Fragment Offset分片偏移,描述该分片在数据包中的位置和重组顺序
2.ARP/RARP/免费ARP协议
ARP用于地址解析。通过目的IP地址解析出MAC地址,进行二层通讯。通过广播发送ARP查询请求目的IP的MAC地址,当与发送方处于同一网段的主句收到请求后,比对IP,若IP为本机,那么单播回应本机的MAC地址;若不是,则不回应。发送方收到对应的MAC地址后,将IP与MAC地址写入ARP缓存,下次则直接通过MAC地址进行二层通讯
ARP的使用场景
- 目的IP本地IP处于同一网段下:那么查询的就是目的IP的MAC地址
- 不在同一个网段下:本机存在到达目的IP的路由时,那么ARP请求的便是下一跳路由器的MAC地址,一直更替到目的IP所在的网段。若没有找到,则查询缺省路由的MAC地址
RARP的使用场景
- RARP即逆向ARP,通过MAC地址查询IP。多用于无盘工作站,通过MAC地址,向服务器请求IP地址
免费ARP使用场景
主动将自己的IP作为目的IP发送请求,然后将广播发送ARP信息
- 因为广播中有自己的IP地址,若发出广播后,得到回应,说明该网络中已存在此IP地址;、
- 由于ARP广播,也顺便通告了自己的MAC地址
- 在VRRP备份组中通告主备设备发生变化
- 可用于更新其他主机的 ARP 缓存表。
3.Ping与Tracert
ping用于测试网络的连通性,而tracert用于跟踪所经过的路由器IP
Ping
- 由源主机向目的主机发起ICMP echo-request报文,当目的主机收到报文后,会向源主机发送ICMP echo-reply报文。计算发送时间与接收时间之间的差值,得出延迟的时间。若在规定时间内未得到reply回包,则说明主机不可达。
Tracert
- 基于ICPM:向目的主机发送TTL(Time To Live)值为1的request报文,那么到达第一个路由器时就被丢弃,然后返回超时的ICPM报文,反复三次后,发送TTL值+1的request报文。直到到达目的主机,回复reply报文,最后将沿途的IP地址全部输出
- 基于UDP:向目的主机发送TTL值为1、端口处于30000以上的报文(常见为33434),其余与上大致相同,到达目的地址后,将数据包发送给UDP端口在30000以上的进程,因为本地没有通过该端口服务,此时返回一个ICPM端口不可达报文
4.TCP协议
TCP协议通过传输确认机制来维护数据传输的可靠性
- A主机发送第一个TCP报文给B主机,随机产生Seq-Number,若分片发送,除第一个外,后续的Seq-Number是上一个报文的Seq-Number+报文数据的长度
- B主机收到后,先进行矫错,无误回复的TCP报文中产生Ack-Number(确认号)为收到最后一个报文的Seq-Number+报文数据长度,并同时生成一个自己的Seq-Number
- A主机收到B主机的回复后,通过Ack-Number报文可以确认上次的报文完整无误,同时开始校验收到的报文。随后,向B主机发送的TCP报文携带Seq-Number为上一次收到B主机的ACK-Number报文,并携带Ack-Number为上一次收到B主机最后一个报文的Seq-Number+报文的数据长度
- 在传输中,因为没有收到,或者校验错误,会在下一次向对方发送报文时,携带Ack-Number为错误报文的Seq-Number,对方收到,会重传该报文,直到收到对方发会正确的Ack-Number后,继续向后发送
