当前位置: 代码迷 >> 综合 >> 网络通信 (网络层(IP协议)/链路层(以太网协议))
  详细解决方案

网络通信 (网络层(IP协议)/链路层(以太网协议))

热度:88   发布时间:2024-01-28 03:40:34.0

网络层:负责地址管理与路由选择(为每条网络中的数据选择合适路径);IP;路由器
IP协议格式:
在这里插入图片描述
4位版本号IPV4/IPV6;
4位头部长度:表示IP报头的长度,以4字节为单位(20-60字节);
8位服务类型:3位弃用,1位置0,4位TOS字段(最大吞吐量,最小成本,最高可靠性,最小延时);
16位数据报长度:限制一个完整的Ip报头不超过64k,
udp不超过64k-28;

**分片标识:**数据传输时最大长度不超过数据报长度64k即65536字节,并且受限于链路层数据帧MTU(最大传输单元),通常再以太网协议下为1500字节(可配置),如一条udp数据小于64k-28即可发送,但是链路层受限于MTU需要分片处理;
若报文大小大于MTU,小于数据报长度,则会在网络层进行分片处理;
16为分片标识:标识该当前分片属于哪一个上层报文;
3位标志:1位保留,1位禁止分片位,1位分片标志位;
13位分片偏移:当分片在对端数据重组时,需要确定该分片在报文的位置,13位的大小为8192,假设一个分片在报文中的偏移量是64000偏移量,这时13位无法标识,因此偏移的单位是8字节,以8字节为单位,8192*8刚好为65536,所以,每一个分片的长度都为8的倍数;
8位TTL:报文的最大生命周期,每一次经过路由器就会-1,为0时标识找不到对端,会被丢弃(默认一般为64,现在多为128),防止产生环路;
8位上层协议:记录传输层协议,数据分用时用于解析上层协议;
16位校验和:校验数据一致性;
32位源端/对端地址空间:描述了通信中的俩台主机;
0-40字节选项数据:保存其他信息;

数据分片:

在这里插入图片描述
完整的报文,在网络层数据分片后,在对端重组时,重新组合成完整的报文;

地址管理

IP地址:ipv6/ipv4;-uint_t -2^32个IP地址,用于在网络中标识主机;
IP地址的组成:网络号+主机号;
网络号:是一个网络的标识,俗称网段(这个网络中分配的IP地址都带有这个网络的标识,每个网络的网络号保证不同,就可以保证分配的IP地址不同);
网段的划分:早期/当前
A:用于组建大型网络,高1位固定为0,7位网络号,24位主机号;网络范围0-127,IP地址范围:0.0.0.0-127.255.255.255,可以分配2^31个主机;
B:用于组建中型网络,高俩位固定为10,14位网络号,16位主机号;网络号范围128.0-191.255;IP地址范围128.0.0.0-191.255.255.255;
C:用于组建小型网络,高3位固定为110,21位网络号,8位主机号;网络号范围192.0-223.255;IP地址范围:192.0.0.0-223.255.255.255;容纳256个主机;

当前:
**CIDR方案:**如何将网络划分的更加精细,使用子网掩码;
子网掩码: uint32_t,由连续二进制数字组成;
子网掩码与IP地址相与,得到当前网络号;
子网掩码取反,得到主机号范围;子网掩码255.255.255.0 主机号范围0-255;
例:某公司申请了C类网络,192.168.2.0/24,公司有四个部门,希望划出四个子网,求每个子网的网络号,子网掩码,IP地址范围?
1.c类网络最大主机号为256,分成四个为64;
2.最大主机号为0.0.0.63 ,取反得到子网掩码:255.255.255.192;
3.每个子网6个主机号
IP地址范围:192.128.2.0-192.168.2.63 网络号 192.128.0.2 子网掩码255.255.255.192
……
以此类推即可

特殊IP地址
0.0.0.0可以识别主机上任何网卡地址,常用于服务端监听地址;
255.255.255.255:全网广播地址(任意一个主机收到这个地址的数据,都会认为是发送给自己的,适配所有IP地址,常用于DHCP请求地址)
127.0.0.1本地虚拟回环网卡地址(常用于本地网络通信测试)
主机号全为0;实际就是网络号,是网络的表示;
主机号全为1;udp局域广播地址;

公网/外网 内网/私网

公网/外网:即互联网
内网/私网:一个私有网络,只可内部通信
IP地址不够用 –
1.DHCP动态分配;
2.NAT网络地址转换(主要用于私网向外部传输IP地址)

私网之间,只要网络不相邻,网络号就可以相同,分配IP地址可以冲突(对外上网时需要通过NAT转换,对外并不冲突)

路由选择

路由选择:路由器为每一个流经的数据根据目的IP地址进行路径选择,即拿到数据根据目的地址,在路由表中进行匹配,查看这个目的主机属于哪个与自己相连的网络,然后通过自己连接这个网络的网卡,将数据发送到对应网络中;
在这里插入图片描述
互联网中路由器记录的路由表(包含不仅仅是与自己相连网络的路由信息,与自己不相连的也会记录,路由器会广播自己的路由表多少层网络)路由表生成算法;

链路层

链路层:负责相邻设备之间的数据帧传输;

在这里插入图片描述
链路层就是负责每一个相邻节点之间的数据传输;
相邻地址通过MAC地址来描述识别(一个设备可能有多个相邻设备)
MAC地址:网卡的硬件地址uint8_t amc[6];
在这里插入图片描述
48位源端/对端mac地址:描述识别相邻设备–描述相邻设备之间的数据传输;
16位上层协议:网络层的协议类型,进行数据分用时解析数据;
32位CRC校验和:数据帧尾,包含校验和在内;

如何获取对端mac地址?
一个主机,第一次通过网线连接到路由器上,然后发送DHCP请求,路由器收到后会进行响应,给主机分配IP地址;
**ARP协议:**一个介于网络层与链路层之间的协议–通过IP地址获取MAC地址;
封装ARP请求,然后将ARP请求广播到整个局域网中(在以太网头中设置的对端MAC地址,FFFFFFFF,ARP请求中描述自己的MAC地址和IP地址,以及对端IP地址,对端MAC地址),相邻设备收到ARP请求后,检测目的的IP地址是否与自己相符,若相符组织ARP响应,填充自己的MAC地址回复出去,不相符则丢弃

ARP局域网欺骗攻击:恶意主机收到ARP广播请求,伪装自己,告诉主机自己就是目标主机,将自己的MAC地址发过去。
解决方案:防火墙白名单,主机获取到相邻设备MAC地址后,会缓存一段时间;

MTU:最大传输单元–链路层限制数据帧大小(默认1500字节,可配置)
在这里插入图片描述
MTU对上层协议的影响:
tcp协议:tcp在传输层,进行三次握手时,进行MSS数据段协商,告诉对方自己的MSS大小,然后取较小一方作为MSS,tcp在传输层进行数据分段;
MSS= MTU-最小IP报头长度-最小tcp报头长度 即1500-20-20= 1460;

udp协议:udp不考虑mss,只要数据段大小小于64k-28,就可以进行传输,但是这个数据大小若是大于mtu,mtu会在网络层进行数据分片;
udp不可靠传输,分片越多,容易出现问题;
解决方案:在udp协议使用期间就考虑好这个问题,将udp按照mtu分包处理;

DNS:域名系统–用于存储IP地址与域名之间的映射关系,提供域名解析,通过域名解析获取服务器IP地址
在这里插入图片描述

ICMP协议:网络层协议,用来进行网络探测
ping–ssh协议使用22号端口/telnet协议使用23号端口;
ping工具通过ICMP协议实现,进行网络探测,网络层不涉及端口

NAT/NAPT服务:网络地址转换服务

在这里插入图片描述
代理服务
个人网络与互联网服务商之间的代理机构
在这里插入图片描述