一、IP协议
1.1、协议格式:
4位版本:描述当前协议版本ipv4,ipv6……
4位头长:描述IP报的头部长度,最小20字节,最大60字节
8位服务类型;1位保留0;3位优先权;4位服务类型:最小成本,最低延迟,最高可靠性,最 大吞吐量
16位报文长度:描述ip报文最大64k;IP报文中的数据最大64k-20
16位分片标识:IP报文长度超过了MTU则会进行分片,在对端进行分片重组;
3位分片标志:1位禁止分片,1位分片末尾标志,1位保留
13位分片偏移:以8字节位单位,描述该分片在原始报文中相对起始位置的偏移量
8位TTL:报文生命周期,描述报文所能经过的最大路由器跳数;每经过一跳就会-1 ,为0时 丢弃
8位数据协议类型:描述IP报文中的数据所采用的协议,以便于数据解析
16位校验和:检验数据一致性
32位源端IP地址+对端IP地址:描述通信两端主机
0……40字节选项数据。
1.2、IP地址组成
为了简化IP地址分配,因此决定划分网络进行分配,每个网络分配的IP地址应该拥有唯一的网络标识,以及网络中的主机唯一标识
网络号:网络的唯一标识
主机号:是主机在自己所属子网中的唯一标识
网络的划分:早期划分位五类网络
A:高位0固定,7位网络号(0~127),24位主机号
B:高位固定10,14位网络号(128.0~191.255),16位主机号
C:高位固定110,21位网络号(192.0.0~233.255.255),8位主机号
D:高位固定1110,用途:多播组网;范围
E:高位固定1111,用途:保留实验,范围
当引入CIDR方案:一种向前兼容的新方案,在原来的基础上做更加细致的网络划分
子网掩码::连续的二进制1组成的;与IP地址相与得到网络号,取反得到网络中得主机号个数
特殊IP地址:
0.0.0.0:表示当前主机上,所有的网卡地址,常用于网络服务端绑定监听地址,绑定了该地地址的指定端口,则意味着该主机上所有网卡收到的指定端口的数据,都会给这个socket。
127.0.0.1:127网络中的地址都是用于网络测试的地址(虚拟回环网卡的地址)
主机号全为0的地址:网络号(不分配给主机的,是一个网络的标识)
主机号全为1的地址:局域网广播地址
私网和公网:
(内网和外网)有一些特定的网络专门用于组建私网(基于NAPT技术节省IP地址使用) 组建私网:10. 172.16~172.31;192.168.0
二、路由选择
1、每个路由器中都有一个路由表:记录所连接的网络网络号+子网掩码+连接该网络的网卡……
使用数据中的目的IP地址,与路由表中每一项路由数据的子网掩码相与后与该网络比较,如果一致,则表示该主机,就是属于该网络的,这时候选择合适的路径转换技术
2、转发的时候,当前我们大多数网络都使用了NAPT网络地址端口转换技术
NAPT技术:组建一个小型私网,让私网中的主机使用同一个对外的IP地址进行通信。
3、转发的时候会将数据中源端地址进行转换,转换为自己对外的地址端口。
三、链路层
功能:负责相邻设备之间的数据传输
MAC地址:物理网卡的硬件地址(出厂设置) 48位数字,网卡(通信设备)的唯一标识,如图:
3.1、以太网协议
6B源端MAC地址+对端MAC地址:用于相邻设备之间的定位描述
2B数据协议:描述内部数据的协议类型,以便于进行数据解析
4B检验和:检验数据一致性
产生问题:对端的MAC地址如何获取?
3.2、ARP协议:
介于网络层与链路层之间的协议
功能:通过IP地址,获取指定相邻设备的MAC地址
①组织ARP请求数据包
填充自己的IP地址+自己的MAC地址+其他各项要素+目标IP地址
发送给所有与自己连接的设备
②相邻设备收到ARP请求后,对比目标IP是否与自己一致,若一致,则组织ARP应答,将自己的MAC 地址填充进去,进行回复
③收到ARP回复后,会在本地建立IP地址与MAC地址映射缓存数据(维持30秒)---因为DHCP动态地址分配技术,导致一台设备IP地址是不固定的
3.3、DHCP动态地址分配:
①一台主机连接网线,就会全网广播,就会全网广播DHCP请求给自己连接的设备
②若连接的设备是一个路由器,收到请求,就会进行DHCP回复,分配IP地址,,子网掩码,网关地址(路由器的IP地址)
因此每台主机连接到一个网络后,都能知道自己所连接的路由器的IP地址。
3.4、ARP局域网欺骗攻击:
①一台设备,连接到网络后,伪造IP地址不断的向路由器发送ARP回复
目的:为俩让路由器认为自己就是网络中的所有设备(路由器就会将发往局域网内所有设备的数据,发给该主机)
②一台设备,连接到网络后,伪造IP地(路由器),不断的广播ARP回复
目的:让所有设备都认为自己就是路由器,所有设备的数据都会发往该设备
解决方案:在路由器中设置MAC地址白名单
MTU:最大传输单元,链路层限制的最大数据大小(不包含链路层报头在内)
根据不同的组网技术,大小不一样
MTU对编程的影响:影响数据在网络中是否需要进行数据分片
①一个完整是的报文(UDP),若过大(64k),受限于MTU大小(以太网1500B),在网络层就会进行数据分片,包含IP报头,UDP报头在内+数据不能超过1500B,分片后进行发送
②这些分片到达对端主机之后,会进行分片重组
重组的时候,任意一个分片出问题,整个报文都会被丢弃
分片越多,报文传输问题的概率就越大
因此程序员就选需要控制,应用层提前分包,尽量避免网络层的数据分片(UDP, 1472)
但是TCP不需要考虑分片的问题:因为TCP在传输层会根据MTU计算MSS然后进行数据 分段传输
3.5、网络代理:VPN----翻墙
代理技术与NAT技术区别是什么?
代理技术:工作的应用层,目标通信主机就是代理服务器IP,类似于代购
NAT/NAPT技术:工作在网络层,目标设备就是通信目标设备,代卖商家