1. 网络协议IP
IP配套三个协议:ARP(地址解析协议),ICMP(网际控制报文协议),IGMP(网际组管理协议)
1.1 IP地址
A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0),但可指派的网络号是126个(即128-2)。减2的原因是:
- IP地址中全0的IP地址是个保留地址,意思是“本网络”;
- 网络号为127(即011111)保留作为本地软件环回测试:本主机的进程之间的通信之用。
若主机发送一个目的地址为环回地址(例如127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。

每一个IP地址都由网络号和主机号两部分组成。从这个意义上说,IP地址是一种分等级的地址结构。分两个等级的好处是:
-
IP地址管理机构在分配IP地址时只分配网络号(第一级),而剩下的主机号(第二级)则由得到该网络号的单位自行分配。这样就方便了IP地址的管理;
-
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间以及查找路由表的时间。

IP地址与硬件地址
从层次的角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址
在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是MAC地址。在IP层抽象的互联网上只能看到IP数据报,在局域网的链路层,只能看见MAC帧。

IP数据报中首末地址一直不变,MAC帧中会随着路由器的变换而变化。
1.2 ARP地址解析协议
ARP协议:通过IP地址找到MAC地址。
每一台主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
当主机A要向本局域网上的某台主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。如果没有就自动运行ARP,找到B的硬件地址。
广播找B,单播响应

注意:
- A发出请求,B响应之后,B也会把A的MAC地址存入ARP缓存。
- ARP缓存中超出生存空间的地址会被删除掉,再广播。
- ARP只能解决同一局域网的主机/路由器的IP地址和MAC地址。
对于不在同一网络的ip地址,不能通过一次ARP进行解析地址;当然其实也不需要直接知道目标ip的MAC地址,只要知道下一个路由器的地址,接下来的工作就交给下一个路由器继续转发就好了。
1.3 IP数据报格式

-
总长度: 首部+数据部分
-
标识: 每产生一个数据报,标识+1,分片后的子数据报拥有相同的标识,标识的意义就是方便分片后的数据报重新组合
-
标志: 最低位MF=1时表示还有分片;中间位DF=1时表示不能分片
-
片偏移:在分片前的相对位置,单位是8个字节,也用于分片重组
-
生存时间(TTL): 单位是跳数,跳一个路由器->TTL-1
-
首部校验和:只检验数据报的首部,不检验数据部分
数据链路层协议规定了最大传送单元MTU,总长度大于MTU时,IP数据报会分片