初识网络协议:如何上网

大多数人只知道拉一根网线,往有网卡的电脑上一插,什么也不需要做,就可以上网了。

其实在你看不见的地方,有很多事情发生了。

首先,ipconfig后你会发现,你被分配了一个IP地址,IP地址上面是网卡的MAC地址,系统还给你配置好了子网掩码默认网关

MAC地址是一个网卡的物理地址,用十六进制,6个byte表示。网卡自打生产出来,就带有号称全局唯一的MAC地址。不过MAC地址是一个局域网才有效的地址,所以只要局域网唯一就好了。

默认网关(Gateway),默认网关的地址一定和源IP地址是同一个网段,往往不是第一个就是第二个,如192.168.1.1。

有了IP地址和MAC地址,配置好了网关,我们就能上网了。这里以机器A访问机器B为例。

机器A当然知道自己的相关信息,要访问机器B肯定也知道机器B的IP地址,但是不知道B的MAC地址。

那么如何获取B的MAC地址呢?这里用到了ARP协议,也就是已知IP地址,求MAC地址的协议。

源IP地址:IP-A

源MAC地址:MAC-A

目标IP地址:IP-B

目标MAC地址:首先通过IP地址和子网掩码看是否在同一个局域网下,在同一个局域网下,就没网关什么事儿了,直接将源地址和目标地址放入IP头,然后通过ARP获取目标MAC地址,将源MAC地址和目标MAC地址放入MAC头中,发出去就可以了。

不在同一个局域网下,将源地址和网关IP地址放入IP头,通过ARP获取默认网关MAC地址,将源MAC地址和网关MAC地址放入MAC头,再发送出去。网关收到网络包后会转发给对应的设备,在这里,网关分两种,一种是不改变IP地址的,我们称之为转发网关,另一种是改变IP地址的,我们称之为NAT网关。为什么要改变IP地址呢?这也很好理解,内网访问外网的时候,都会被路由器NAT成运营商的地址,例如上一章ipconfig和浏览器查看IP。

很多情况下,人们把网关就叫作路由器。其实不完全准确,而另一种比喻更加恰当:路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的IP地址都和局域网的IP地址有着相同的网段,每只手都是它握住的那个局域网的网关。任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下MAC头和IP头,看看,根据自己的路由算法,选择另一只手,加上IP头和MAC头,然后扔出去。

MAC头和IP头的细节:

那么最后,我还有一个问题。为什么我插了网线,什么都没有做,就被分配了一个IP地址呢?

这是因为动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP。

有了这个协议,当一台新的机器加入一个网络的时候,新来的机器会使用IP地址0.0.0.0向广播IP地址255.255.255.255发送一个广播包,广播包是封装在UDP里面的,里面有新来的电脑的MAC地址。网络如果配置了DHCP Server(可以有多个),就立刻能知道来了一个新机器,就会根据MAC地址分配给它一个IP地址,我们称之为DHCP Offer。除此之外,服务器还会发送子网掩码、网关和IP地址租用期等信息。

新来的机器会选择接收最先到达的DHCP Offer,并发送一个DHCP Request广播数据包,包中包含机器的MAC地址、租约分配的IP地址、提供租约的DHCP服务器地址等。此时还是用0.0.0.0的IP地址进行广播,因为还没有得到DHCP Server的最后确认。当DHCP Server接收到DHCP Request后,会广播返回给新机器一个DHCP ACK消息包,里面有这一IP地址的合法租用信息额其他配置信息,表示已经接受了新机器的选择。当其他DHCP Server接受到DHCP Request后,发现没有接受自己给的IP地址,则会撤销提供的IP地址,以便提供给下一个新来的机器使用。

当IP地址租用期过去50%时,客户机会向为其提供IP地址的DHCP Server发送DHCP Request消息包。客户机接收到该服务器回应的DHCP ACK消息包,会根据消息包更新配置。这样,IP租用更新就完成了。

 

参考资料:《趣谈网络协议》

猜你喜欢

转载自www.cnblogs.com/74percent/p/12364704.html