【数通大讲坛01】利用tcpip模型理解数据通信过程.docxVIP

【数通大讲坛01】利用tcpip模型理解数据通信过程.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【数通大讲坛01】利用tcpip模型理解数据通信过程

1.回顾TCP/IP模型?TCP/IP模型是当今IP网络的基础(由OSI七层参考模型发展而来,也称为DoD模型)。分层参考模型的设计是非常经典的理念:层次化的模型设计将网络的通信过程划分为更小、更简单的部件,因此有助于各个部件的独立开发、设计和故障排除;层与层之间相互独立,又互相依赖,每一层都有该层的功能、以及定义的协议标准。层与层之间相互配合,共同完成数据通信的过程;通过组件的标准化,允许多个供应商进行开发;通过定义在模型的每一层实现什么功能,鼓励产业的标准化;允许各种类型的网络硬件和软件相互通信。?2.理解数据通信过程?下面我们来分析一下PC去访问Server的WEB服务的详细通信过程。在阐述过程中,我们重点放在利用TCP/IP参考模型理解通信过程,因此可能会忽略部分技术细节,例如DNS、TCP三次握手等,这些技术细节这里暂不做讨论。事实上,整个过程的宏观层面如下:?我们一步一步的来分析:1) PC的用户在WEB浏览器中访问Server的WEB服务(这里我们暂且不去关注底层的HTTP交互、DNS交互等细节。重点看通信过程),PC的这次操作将触发HTTP应用为用户构造一个应用数据。当然这个数据最终要传递到Server并最终“递交”到Server的HTTP应用来处理,但是HTTP不关心数据怎么传、怎么寻址、怎么做差错校验等等,那么这些事情就交由专门的Layer来完成,所以HTTP应用数据还的经过一番“折腾”才能从PC传出去到达Server,现在开始。??2)由于HTTP基于TCP,因此这个应用数据交由TCP/IP模型中的主机到主机层进一步处理。在该层,上层HTTP应用数据被封装上一个TCP的头部,在TCP头部中,这里我们重点关注两个字段,一个是源端口号,另一个是目的端口号,源端口号为随机,目的端口号为80(HTTP服务对应的默认端口号是80)。然后这个数据segment被交给下一个Layer处理。?3)到了IP层,IP协议为这个上层下来的数据封装上一个IP头,以便该数据能够在IP网络中被网络设备转发(路由)。IP头当中,我们重点关注源IP地址、目的IP地址、协议号这三个字段。其中源地址存放的是PC自己的IP地址,目的地址存放的是Server的IP地址,而协议号字段则存放的是值6,这个值是一个well-known值,也就是行业约定的、众所周知的值,该值对应上层协议类型TCP,表示我这个IP头后面封装的上层协议为TCP。搞定之后,这个数据被交给下一层处理。?4)为了让这个IP数据包能够在链路上传输,还要给数据包封装上一个数据链路层的头部,由于我们这里是以太网链路,因此上层下来的IP数据包被封装上一个以太网的数据帧头。这个数据帧头中源MAC地址为PC的网卡MAC,那么目的MAC呢?PC知道,数据的目的地是这个IP,而本机IP是/24,显然,目的地与自己并不在同一个网段,因此需要借助自己的网关,让网关来帮助自己将数据包转发出去。那么首先我得把数据转发到网关吧?因此目的MAC地址填写的就是网关54对应的MAC地址。但是初始情况下,PC可能并没有54的MAC,所以,它会发送一个ARP广播去请求54的MAC,R1的GE0/0/0口会收到这个ARP请求并且回送ARP响应。如此一来PC就知道了网关的MAC,它将网关MAC 0018-0011-0001填写在以太网数据帧头部的目的MAC中。另外,以太网数据帧头的类型字段写上0x0800这个值,表示我这个数据帧头后面封装的是一个IP包。好了费了好大劲儿,这个数据帧终于搞定了:?5)值得一提的是,事实上在物理链路中传输的是bit流,或者电气化的脉冲,只不过为了方便理解和更加直观的分析,我们往往会以IP包或者数据帧的形式来阐述通信过程。所以从物理上说,最终这个以太网数据帧变成了一堆的101010101从网线传到了路由器R1上。?6)路由器R1在收到这一串的1010后,先将他们还原成数据帧。然后会采用相应的机制检查一下数据帧在传输过程中是否有损坏,如果没有损坏,那么就瞅瞅数据帧头部中的目的MAC地址,看看目的MAC地址是不是我收到这个数据帧的GE0/0/0口的MAC,结果发现是,它很高兴,觉得这个数据帧是给我的,它查看数据帧头部的类型字段,发现是0x0800,于是它知道里头装的是一个IP包,接着它将以太网数据帧头剥去或者说解封装,然后移交给上层IP协议继续处理。?7)现在R1的IP协议栈接着处理这个报文:?它会先校验一下数据在传输过程中,IP头有没有受损,如果没有,它就查看IP头中的目的IP地址字段,结果发现目的IP地址为,发现其实并不是自己的IP地址 – 原来这个数据包是发给别人的,于是它开始拿着目的地址到地图(路由表)里去查,看看有没有到这个目的地去的路径,结果发现有,并且这个路由条目指示它把数据包从

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档