在每个参考点中设计多项技术,这些技术在原理上相互独立,在通信过程中却相互配合,共同完成网络通信,习惯上我们把技术按照网络技术层次进行划分,通信过程中是对等通信,比如有线接入PC的ARP只能和企业网关的ARP互通,而不能和DHCP互通,我们以一次完整的通信来描述完整的过程:
1. 假设PC要访问新浪网,我们在浏览器中输入www.sina.com.cn,此时访问是什么样的呢?是不是浏览器立刻向新浪网发起访问呢,不是的,因为互联网访问都是通过IP地址进行访问的,域名只起到一个助记作用,就好比手机通信簿,记忆力好的话完全可以把每个人的手机号码记录到脑子里,要聊天时直接拨打号码就行了,但是很多人偏偏没那么好的记性,我们发明了电话簿,把以人名为记忆对象,把手机号码输入到一个个人名里头,这样我们想聊天翻翻电话簿,找到对应的人名,一按“呼叫”,手机自动呼叫该人名下的电话号码。那么在互联网世界中,域名就相当于人名,IP地址就相当于电话号码,DNS就相当于电话簿,所以浏览器访问新浪时首先需要去DNS查询www.sina.com.cn对应的IP地址。
2. 当PC要向DNS询问新浪对应的IP时,需要向DNS发送请求,这个请求相当于一封信,寄信人是PC,收信人是DNS,那么这封信如何发送的呢?
3. 人们寄信找邮寄,PC寄信则是靠网关,PC查到目的IP是DNS,和PC并不在同一网段,这时候就需要靠网关转发,那么PC是否可以直接把IP包直接发给网关呢?
4. PC发出去的IP包目的是DNS并不是网关,所以网关没有办法直接处理IP包,PC需要把IP包在封装到一个数据结构称为以太网帧中,以太网帧目的要填写网关的MAC,源填写PC的MAC,MAC地址是48位和网络芯片绑定,网关的MAC如何获得呢?
5. 48位的MAC使用动态的ARP协议来请求既方便又省事,PC首先在局域网中广播查找网关IP对应的MAC,网关收到请求后会单独向PC发送ARP响应告诉PC网关的MAC。
1. PC在获得网关MAC后就可以把发给DNS的IP包封装到发给网关的以太网帧中,以太网帧的目的MAC是网关,源MAC是PC,所以网关可以接收,网关接收后根据路由信息把IP包转发给电信(网关可能要通过ARP请求电信MAC),此时还涉及到NAT地址转换,把源IP从PC的内网IP换成网关的公网IP,电信再把IP包转发给DNS。
2. DNS收到请求后把新浪域名IP恢复发给网关,网关根据NAT会话表项把目的IP换成PC再发送给PC,此时有可能网关也需要向PC发送ARP请求PC的MAC,这样PC就获得了新浪网的IP地址。
3. PC获得新浪网IP地址后向新浪网请求春晚视频,和向DNS请求类似,也把IP包封装在以太网帧中发送给网关,网关进行NAT转换地址后转发给电信,电信再经过一系列转发交给新浪。
4. 新浪收到请求后向网关回复春晚视频,网关收到后再经过NAT处理把目的IP换成PC的发给PC,这样反复交换数据PC就能够看到完整的春晚视频。