1.IP地址的分类(两级IP地址)
IP地址主要分为三大类:A类,B类,C类
A类地址的网络号占8位,主机号占24位,且网络号的第一个bit位是0。
B类地址的网络号占16位,主机号占16位,且网络号的前两个bit位是10。
C类地址的网络号占24位,主机号占8位,且网络号的前三个bit位是110。
2.点分十进制
3.IP地址与硬件地址
从层次上说,硬件地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址是一种逻辑地址。
在发送数据时,从高层到低层,应用层数据经传输层被封装成TCP报文,然后TCP报文又经网络层,加上带有IP地址的首部被封装成IP数据报,最后经过数据链路层,加上带有硬件地址的首部被封装成MAC帧。
连接在通信链路上的设备在收到MAC帧时,根据MAC帧首部中的硬件地址决定收下或者丢弃。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
4.地址转发协议ARP
不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
举个栗子:上图的A是一个海王,在同一局域网下的XYZB都是他鱼塘里的鱼。有一天A空虚寂寞了,十分想要B的联系方式,而他又不知道好友列表里哪一个是B,于是就向鱼塘广播式撒网:“B,做我女朋友吗”。消息发出去后,XYZ都不回应,只有B收到消息后,私发了一个消息给A:“好啊 ,我们开始聊天吧。”于是A和B开始热聊起来,但是A的激情期又很短,空了可能20分钟没和B聊天就不想和她聊了,于是就把B给甩了。(当B对A的ARP请求进行响应后,会有一个生存时间,方便A与B直接进行通信,就无需A或者B再进行广播群呼了)。
5.路由器转发分组流程
一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
如图所示,当主机H1与主机H2进行通信,首先把自己的带有IP地址IP1的IP数据报通过ARP协议封装成带有硬件地址的MAC帧HA1,通过硬件地址寻址找到HA3,转发到下一跳路由器R1,然后在R1路由器内部切换下一个网络的IP重新封装成HA4。重复上述过程,最终到达目标主机H2。
路由器转发分组的流程就类似于使用高德地图导航,你只知道自己的当前地址和目的地址,导航时,从当前位置出发,在每个岔路口会提醒你往哪个方向走,走多少米,最终到达目的地。
6.IP报文格式
版本:占4位,指IP协议的版本,通信双方使用的IP协议的版本必须一致,如IPV4,IPV6。
首部长度:占4位,可表示的最大十进制数是15,单位为4字节,所以首部最大长度为60字节。
区分服务:占8位,用来获得更好的服务。
总长度:占16位,总长度指首部和数据之和的长度,单位为字节,因此数据报的最大长度为-1为65535个字节。但是在IP协议下面的每一种数据链路层协议都有规定看一个数据帧中数据字段的最大传送单元MTU。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。
标识:占16位,每产生一个数据报,计数器就加1,并将此值赋给标识字段,当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来正确的数据报。
标志:占3位。标志字段中的最低为记为MF。MF=1即表示后面还有分片的数据报。MF=0表示这已是最后一个数据报片。中间位记为DF,只有当DF=0时才允许分片。
片偏移:占13位,单位为8个字节。表示该片在原分组中的相对位置。