一起学习数据通信~~ 哇咔咔~小编今天又来跟大家分享常识啦~~~今天给大家带来的是数据通信的相关常识。在理解数据通信之前,大家首先来回顾一下TCP/IP模型。 TCP/IP的5层模型,想必大家已经烂熟于心,然而,为什么要建立这个模型呢? 原来它的理念是这个样子哒: l 层次化的模型设计将网络的通信过程划分为更小、更简单的部件,因此有助于各个部件的独立开发、设计和故障排除; l 层与层之间相互独立,又相互依赖,每一层都有该层的功能、以及定义的协议标准。层与层之间相互配合,共同完成数据通信的过程; l 通过组件的标准化,允许多个供应商进行开发; l 通过定义在模型的每一层实现什么功能,鼓励产业的标准化; l 允许各种类型的网络硬件和App相互通信。 下面大家就结合PC机访问Server的情景,来看看数据通信的具体过程~~ 大家每台设备的IP和MAC地址都已列出~~从宏观上来看,通信过程如下图所示。 从上到下封装,从下到上解封装,从一台设备传到另外一台,大家具体来分析一下。 1. PC机打开WEB网页,想访问Server的WEB服务,会触发HTTP应用为用户构造一个数据DATA,这个就是大家要传送给Server的内容。然而HTTP不会关心数据怎么传,怎么寻址,怎么差错校验,这些都会有专门的Layer来负责,这样应用层的数据会交给传输层。 2. 到传输层,会先封装一个TCP头,因为HTTP是基于TCP的,这里大家随机产生了一个源端口1025,目的端口是80,因为是HTTP应用,默认端口是80~~ 3. 一转眼,又到了网络层,封装上IP头,源IP和目的IP不可少,强调一下,目的IP是大家Server的IP,这是大家的起点和终点,要是没有该走错路了。协议号6对应上一层封装的是TCP报头。UDP对应的协议号是17. 4. 现在到了数据链路层,封装一个以太网帧头,源MAC就是PC机的网卡上的MAC地址,目的MAC是网关的MAC地址,也就是R1的G0/0/0口的MAC地址,初始情况PC上没有这个地址,那么它会向网关发送ARP请求,来请求这个MAC地址,网关给它回复之后,就有了目的MAC。类型0x0800,是指的后面封装了一个IP头。 5. 又到了物理层,PC传给R1,是一串01010101的比特流。 6. R1拿到数据帧,会先检查是否有损坏,如果没有损坏,就看看MAC地址是否是自己G0/0/0口的MAC。好,正是自己的MAC地址,查看类型0800,后面是IP头,解封装交给上层处理。 7. 又回到了网络层,它也会先看看报文是否有损坏,如果没有,就查看IP头中的目的IP,发现不是自己的IP,非常失落,只好查看路由表,准备继续转发。 8. 到了数据链路层,这次的源MAC变成R1的MAC,而目的MAC是R2了~如果不知道目的MAC那么就要发送ARP请求~~数据类型仍然是0800. 9. 就这样,数据帧一路颠沛流离到了R2,先核对一下有没有损坏,没有的话查看目的MAC正好是自己,灰常HAPPY,又看到类型0800,那么就解封装交给上一层。 10. 到了网络层,仍旧先核对是否损坏,没问题好的,查看目的IP,发现不是自己,不过已经到家门口了,同一网段,暗自窃喜,查看路由表,准备继续转发。 11. 到了数据链路层,源MAC是自己的,目的MAC如果没有就ARP请求~~类型仍然是0800~~ 12. 一路漂泊,历经沧桑,大家终于到了Server,同样也是从数据链路层开始核对,没有损坏,查看目的MAC是自己好的,类型是0800后面有IP那么我就解封装交给上一层,网络层也先核对是否损坏,没有,好哒,目的IP也是自己,哇塞~开心到爆了~~终于到家了~~再查看协议号是6,后面是TCP,解封装交给传输层,查看到目的端口是80,原来是个HTTP应用数据,自己的TCP80端口是开放的~那么就解封装把数据交给HTTP应用~~到此为止,大家就完成了PC到Server的传输~~~一路艰辛啊有木有!!! 今天的学习就到这里啦~~~下次见喽~~~
|