3.1分组交换
当主机H1要向另一主机H2发送数据(报文)时,首先将数据划分成若干个等长的分组,然后将这些分组一个接一个地发往里与H1相联的路由A ,当A接到分组后,先放入缓冲区,再按一定的路由算法确定该分组下一步将发注哪个结点,如此一个结点一个结点传递,直到最终目的H2。
3.2数据报
数据报是通过网络传输的数据的基本单元,包含一个报头(header)和数据本身。
3.3IP分片
链路层数据帧封装的数据大小是有限制的。
3.4ip地址分类
ip地址有5种
A类:1.0.0.0~126.255.255.255
B类:128.0.0.0~191.255.255.255
C类:192.0.0.0~223.255.255.255
D类:224.0.0.0~239.255.255.255
E类:240.0.0.0~254.255.255.255
其中127.0.0.0~127.255.255.255用于环回测试,D类地址用于组播,E类地址用于科研
3.5如何根据掩码来确定ip地址网段
上面我们已经举例了解了子网掩码的作用,接下来我们再来了解如何确定子网掩码和判断ip地址的网段。
通常我们在划分vlan的时候会使用以下例子:
例1:
创建vlan1:ip地址:192.168.1.1 子网掩码:255.255.255.0
创建vlan2: ip地址:192.168.2.1 子网掩码:255.255.255.0
那么他们是不是在同一个网段呢?平时配置ip地址较多的朋友,可以直观的判断,他们并不是属于同一个网段,那么如何计算呢?要想判断两个ip地址是不是在同一个网段,只需将ip地址与子网掩码做与运算,如果得出的结果一样,则这两个ip地址是同一个子网当中。
详细计算
将ip地址192.168.1.1转换为二进制
11000000 10101000 00000001 00000001
将子网掩码255.255.255.0转换成二进制
11111111.11111111.11111111.00000000
然后将两者相“与(and)"运算:
11000000 10101000 00000001 00000001
11111111.11111111.11111111.00000000
然后得到:
11000000 10101000 00000001 00000000
转换成网络号就是:192.168.1.0
将ip地址192.168.2.1转换为二进制
11000000 10101000 00000010 00000001
将子网掩码255.255.255.0转换成二进制
11111111.11111111.11111111.00000000
然后将两者相“与(and)"运算:
11000000 10101000 00000010 00000001
11111111.11111111.11111111.00000000
然后得到:
11000000 10101000 00000010 00000000
转换成网络号就是:192.168.2.0
很明显,二者的结果是不一样的,一个是网段192.168.1.0,一个是网段192.168.2.0,所以不是一个网段。
例2
ip地址1:192.168.1.1 子网掩码:255.255.252.0
ip地址2:192.168.2.1 子网掩码:255.255.252.0
很明显,我们这个和上面例1的ip地址是一样的,只是子网掩码不一样,如果不看子网掩码,首先可能就判断他们不是同一个网段。
这里面和上面例1中***变化就是子网掩码从255.255.255.0换成了255.255.252.0了,那我们来看下,他们是否属于同一个网段。
详细计算
将ip地址192.168.1.1转换为二进制
11000000 10101000 00000001 00000001
将子网掩码255.255.252.0转换成二进制
11111111.11111111.11111100.00000000
然后将两者相“与(and)"运算:
11000000 10101000 00000001 00000001
11111111.11111111.11111100.00000000
然后得到:
11000000 10101000 00000000 00000000
转换成网络号就是:192.168.0.0
将ip地址192.168.2.1转换为二进制
11000000 10101000 00000010 00000001
将子网掩码255.255.252.0转换成二进制
11111111.11111111.11111100.00000000
然后将两者相“与(and)"运算:
11000000 10101000 00000010 00000001
11111111.11111111.11111100.00000000
然后得到:
11000000 10101000 00000000 00000000
转换成网络号就是:192.168.0.0
很明显,二者的结果是一样的,都是属于192.168.0.0网段,所以他们是同属于一个网段。
3.6私有IP地址
这里需要注意的是,你发没发现,为什么我们前端启动webpack测试环境的时候,一般地址都是192.168..(* 是指0-255的数字); 在公司和家里都是这个网段,不是很奇怪吗,你家里的网段怎么和公司一样呢?
其实是因为有一部分叫私有IP地址,是不能拿到网络上跟别的计算机通信的。只能是局域网自己内部用。比如说有:
还有一些特殊地址,需要了解
第一行,全一,代表是255.255.255.255,在本网络的目的地址写这个的话,就会内网广播
第二行,网络号特定值,主机号是全0,比如,192.169.10.1,这是c类网络,所以网络号是192.169.10,主机号是1,当主机号全0时,就是0,表示192.169.10.0这个网段
第三行,还是192.169.10.1这个c类地址,主机号都是1,也就是8个1,代表255,所以192.169.10.255表示本网段的广播地址
第四行,大家最熟悉不过了,127作为网络号,主机号非全0或1,比如说127.0.0.1代表本机,称为环回地址。
3.7网络地址转换(NAT)
如上图所示,192.168.0.3,192.168.0.4都是私有网段上的,它们无法跟外网通信,这个时候由于路由器安装了NAT软件,就可以将自己的ip地址,即路由器的ip地址172.38.1.5作为内网的代理,去访问外网,外网返回来的数据,经过路由转换,转换成内网的192.168网段的私有地址。
3.8ARP协议
每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的映射关系
当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该IP地址对应的MAC地址
如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址
此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致
如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中
如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址
源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输
如果源主机一直没有收到ARP响应数据包,表示ARP查询失败