看来基础知识还是有人关注的,上次我发的帖子有些概念不清,老大们太忙,那还是我再来试着说说吧!这样的基础跟现实生活中的情况不大联系得起来,打比喻的话反而难理解.
首先说明一下,ip和子网掩码实际上都应该以二进制的形式来理解,只是系统中都转换成十进制表示而已.逻辑"与"(and)运算讲起来很枯燥,大家只需要记住:和1与为1,和0与为0,就可以了.
这次只说第一种情况,还是a、b机,有两种不同的ip配置状况:
1、a机的ip是192.168.1.8,b机是192.168.1.10,子网掩码都是255.255.255.0.
a机要和b通讯,也就是和192.168.1.10通讯.a机先把自己的ip:192.168.1.8和自己的掩码255.255.255.0做与运算(大家可以自己把以上的数值转换成二进制,再按开始说的计算方式计算)得值为192.168.1.0(这个数值也叫网络号),再把192.168.1.10与255.255.255.0(注意这里的掩码也是a机的)做与运算,得值也是192.168.1.0,所得网络号相等则说明a,b机在一个子网,可以直接通讯.
前面已经说过,最终的连接是基于网卡的mac地址的,(原因是网卡只能识别mac地址,不知道ip地址是什么),而a机又不知道b机的mac地址是什么,a机会首先调用arp协议,发送一个广播帧.数据包的结构是:{[专用的广播mac地址+a机的mac地址]+[b机的ip+a机的ip]},这样的数据包同一个网段的主机都会收到,但是只有b机才会应答,回答的数据包结构是:{[b机的mac地址+a机的mac地址]+[b机的ip+a机的ip]}.(看来有必要解释一下mac地址的概念,mac地址是厂家制造网卡的时候烧录在网卡的bios里面的一串类似00-0a-8a-14-eb-80这样的12位16进制代码,前面3组是厂商代码,后3组是产品代码,结合起来可以在全球范围内唯一标识一张网卡,也就是说任何一张网卡的mac地址都应该是不同的.广播专用的mac地址就是:ff-ff-ff-ff-ff-ff,没有任何一张网卡会是这个mac地址).
完成了上面的过程,a和b就都知道了对方的mac地址,他们就都会把它记录在arp的cache里面,在windows系统里大家用"arp -a"这个命令就可以看到,那么只要不重启机器,以后a再需要和b通讯就不需要再发广播了,直接查arp的cache就可以了.a机和b机正式通讯的数据包就会是:{[b机的mac地址+a机的mac地址]+[b机的ip+a机的ip]+数据+冗余}.(我知道有点罗嗦,本人只有这个水平,不好意思!)
2、a机的ip是192.168.1.8,b机是192.168.2.8,掩码也是255.255.255.0
再用前面说过的计算,这次的数值是a:192.168.1.0,b:192.168.2.0,网络号不等说明两机不在一个网段,不能直接通讯.
a机就先建立和默认网关的连接,(前提条件是必须填默认网关的ip地址,否则是a,b是无法通讯的)方法和第一种情况一样.默认网关就是路由器,这种设备有多个端口,连接不同的网段,各端口配置的网络号必须和所接的子网网络号相同.功能就是完成各子网间的通讯连接,同时可以截断广播在子网间的传输.路由器中有各子网的路由表,主要记录各端口对应的网络号.a机发送给b机的数据包就直接发给路由器,包结构是:{[路由器接a机所在子网端口的mac地址+a机的mac地址]+[b机的ip+a机的ip]+数据},路由器将b机的网络号算出,再和路由表进行比对,查到记录的话就直接换包头,把包改为:{[路由器接b机所在子网端口的mac地址+a机的mac地址]+[b机的ip+a机的ip]+数据},这样就实现了包转发.b机发的数据包也类似,这里就不赘述了.
以上就是我所知道的基于tcp/ip协议的通讯过程中与ip地址、子网掩码有关的内容.我知道有点罗嗦,本人只有这个水平,不好意思!
-------------------------------------------------------------------------------------------
网管职业要求是:一要年轻;二多半得晚上上班……总之就是有点象X女啦!