计算机通信过程
描述A主机到B主机各种通信过程。
1、A主机和B主机在同一网段,如源主机A:192.168.1.1/24和目标主机B:192.168.1.2/24。
A主机会利用这两个IP地址和子网掩码相与,判断出目标地址与自己在同一网段,就会查询B主机的MAC地址;如果本地记录了就会直接把包扔给B主机,B主机看到目标MAC地址是自己,目标IP也是自己,就会收下此数据包;如果本地没有记录目标主机的MAC地址,就会通过ARP广播询问目标主机的MAC地址是什么,目标地址收到广播后返回自己的MAC地址给A主机,然后A主机就会把包扔给B主机,B主机查看MAC、IP地址都是自己,就收下此数据包。
2、A主机和B主机不在同一网段,如源主机A:192.168.1.1/24和目标主机B:192.168.2.1/24。主机A的默认网关为C,主机B的默认网关为D。
首先A主机还是会利用这两个IP地址和子网掩码相与,判断出目标地址与自己不在同一网段,A主机会查看自己的路由表,查看路由表中是否指定了B主机网段的网关D;如果有就会把包发送给网关D,D就会经过1中的过程,把包发给B主机;如果本地路由表中没有B网段的信息,那么就会把包发送给本机的默认网关C,网关C也会查询本地路由表,是否有指定网关D的信息,如果有就会扔给网关D,否则就会扔给默认路由,以此类推总会找到网关D,然后主机B收到此数据包。
udp、tcp等一些通信协议是为了确定应用的,IP地址是为了确定主机,MAC地址是为了确定网卡。
交换机:二层交换机只是有一个汇聚功能;三层交换机就可以实现路由功能,也有汇聚功能。
路由器:只有路由功能,没有汇聚功能,只要经过路由器,就可以肯定两IP不会在同一网段。
举个栗子:
A主机和B主机在同一网段,如A和B都在一个宿舍楼。(把大学的所有学生宿舍看为整个网络)
A给B发送一个包,A通过子网掩码判断出B和自己住在一个宿舍楼,看一下自己有没有记录B的门牌号,如果有就直接送给他,如果没有,就会在走廊喊一声,“B你的门牌号是什么”,B收到这个广播就会回应,然后A听到后就会发包给B。
A主机和B主机不在同一个网段,如A在M楼,B在N楼。
A判断B和自己不在同一个宿舍楼,就会直接把包扔给宿管大爷,宿管大爷对查看自己的路由表,看B在哪个宿舍楼。如果有记载就会发给B的宿管大爷,如果没有,就会发给默认的宿管大爷(默认路由),宿管大爷一直查路由表转发,直到把包送给B的宿管大爷,B的宿管大爷收到后,看一下B的门牌号,如果有就把包发过去,如果没有就喊一嗓子“B门牌号多少啊” B收到后给予答复,宿管大爷就会把包发给B。