杂记
回忆线索:标题几个缩写的含义、DHCP配置IP地址的流程及报文中的信息、 ping的流程
1、无类型域间路由选择(CIDR):
将32位的IP地址分为前面的网络号和后面的主机号。用IP地址后面的斜杠标记网络号与主机号的分界点。子网掩码和IP地址取and就得到网络号。广播地址就是把主机号拉满,如果发送这个地址,所有这个网络号里的主机都可以收到消息。
举个例子:10.100.122.2/24中,10.100.122.2是IP地址,24代表前24位表示网络号,即10.100.122是网络号。2是主机号。子网掩码就是255.255.255.0,因为这里前24位是网络号,所以前24位置1就是子网掩码。广播号是10.100.122.255,就是网络号保留,主机号全1。这个网络号里的第一台主机是10.100.122.1。
2、动态主机配置协议(DHCP,dynamic host configuration protocol)也叫即插即用协议或者零配置协议
网络管理员只需要配置一段共享的IP地址,比如192.168.1.10到192.168.1.254,然后每个接入到机器都会通过DHCP协议在这里面申请一个IP地址,自动配置好,机器断开之后这个ip又会空出来给下一个机器。所以我们电脑联网的时候不用自己配置ip地址。
此外DHCP还允许主机得到其他信息,如子网掩码,第一条路由器地址(默认网关),本地DNS服务器地址
DHCP是一个客户-服务器协议。客户就是新主机,
分配的过程:
关键在于新接入的主机没有ip地址,只有mac地址。记住这句话我们就能分析出它和DHCP Server也就是IP管理员交流的数据包格式了。
新人的数据包DHCP DISCOVER发现报文:
新人在UDP分组中向端口67发送发现报文
Mac头:我的mac地址我能填,谁是服务器我不知道,服务器的mac我就全填1吧。
Ip头:我的ip地址都还没有,交白卷全填0吧,服务器的mac也全填1吧。
udp头:端口能填
bootp头:一个协议
Ip管理员的数据包DHCP OFFER MESSAGE提供报文:
我们分析一下,ip管理员知道自己的mac和ip,也知道新人的mac了,还没给ip它所以没有ip,所以数据包格式如下:
MAC头:我的Mac地址,新人的Mac(图中有误)
Ip头:我的ip地址,广播ip
udp头:
bootp头:
消息:这是你的ip地址,请查收。有事务ID、推荐的IP地址、网络掩码、IP地址租用期。
还没完,新人有时候会收到不止一个ip,因为DHCP Server可能不止一个。它的选择,选择之后要回复,而且不能只回复待接受那个,得全部回复,所以还是得广播,也就是目的ip和目的mac得全1。而且目的服务器也没有最终确认能不能给你,只是说这个ip你觉得怎么样,所以发数据包的时候不能直接就用上这个ip了,只能用全0。就像HR给你聊了一通人生,问了你想不想来之后,过段时间还是可能给你发拒信一样。这段时间你不能张扬地到处跟人说你被录了,免得被打脸。
新人回复DHCP REQUEST MESSAGE请求报文:
DHCP Server接到消息新人愿意用这个ip号,就要回复。这时DHCP Server知道自己的信息,知道新人的mac,但同样的新人还没确认自己能用这个ip,所以还是要通过广播的方式回复新人。
DHCP ACK MESSAGE:
MAC头:我的Mac地址,新人的Mac(图中有误)
Ip头:我的ip地址,广播ip
udp头:
bootp头:
3、ICMP协议(Internet Control Message Protocol)
互联网控制报文协议,封装在IP包里(因为测试不需要太多信息,只保留必要的信息就是IP地址),属于网络层,用于检测网络状况。ping就是基于ICMP协议工作的。
ICMP报文类型:
查询报文类型:ping就是这种,看看往返时间,派出去几个包,丢了几个包。
差错报文类型:返回传输过程出现的问题,网络不可达、主机不可达等信息。
(1)查询报文的使用
ping的流程:
构建ICMP请求数据包:类型字段,请求包的话字段为8,差错包或者别的就是别的数字;顺序号,区分数据包的顺序;发送时间,存在数据部分中,用来计算往返时间
IP层加个IP头
MAC层加个Mac头,不知道对面的mac地址的话就先ARP找目的mac地址。
接收方先检查mac地址,再检查IP地址
接收方构建ICMP应答包,类型字段为0,顺序号为接收到的请求包中的数据号
(2)差错报文的使用