目录
- TCP/IP通信过程
- 访问的实现
- 交互的实现
- 网路设备
前言
OSI参考模型和TCP/IP协议
TCP/IP协议和OSI的七层协议分层进行了简化。协议栈中的所有缩写均为协议(Protocols)。TCP和UDP分别实现可靠传输和不可靠传输。
国际标准化组织把计算机通讯分成了七层,但是互联网使用的TCPIP协议并没有严格按照这个来处理。应用层-表示层-会话层三合一成应用层,物理层和数据链路层二合一为网络接口层。合成的层没有单独细分。
也就说TCPIP协议分4层。通过上图可以看到每一次对应有哪些协议。要求把这些协议记住。
然后这次学习的教材,分了5层来讲解。通过五个模块来讲,其中网络层拆分成了三章来讲,以及通过实验的方法来更便于理解。实验使用GNS3来进行。
什么是协议
协议分为IPv4和v6.现在用的是v4,v6虽然已经在很多操作系统上得到兼容应用但是在整个因特网上仍然并不是全覆盖。随着发展,v4必将退出历史舞台,届时将由v6来主导。
协议三要素:计算机通讯提前定义好的通信语法、语义、同步。
用快递单表示,在一张快递单上。这张快递单就是快递员用来投递货物的协议
语法:在什么地方写什么内容(比如姓名地址单位名等是有固定的区域或框架来填写的)
语义:在哪一个位置做个标识(比如快递单中的打勾-到付、先付等),然后快递员必须知道这些标识代表什么意思。
正文
TCP/IP通信过程
描述的过程是一个浏览器访问一个网站。当我们打开某个网页,就是浏览器向web服务器下载网页的过程。
这个过程里:我们要传输的内容就是这个网页,这个网页是应用层要传输的数据单元。这里要明确数据段,数据包和数据帧的概念,他们分别对于不同层被捕获的数据单元,其中数据段是数据加上对应字段,这些字段可以认为是他们的协议,拥有对应的功能。
传输层首部是传输层的协议,实现传输层的功能;网络层首部是网络层的协议,实现网络层的功能;数据链路层首部是数据链路层的协议,实现数据链路层的功能。 加了对应的首部,就变成了数据段/包/帧。
传输层封装:传输层有一个缓存,来存放网页中的数据片段,因为一个网页很大,没办法一次性传输,所以会分开传输。当缓存满时,网页不能继续存入缓存,必须等待数据发过去后,缓存会清除发送成功的数据包,如果发送不成功则不会清除在缓存内的数据包。然后才能将下一个数据放入缓存,数据的放入是有顺序的。
传输层编号后,想让他到达目的地,需要地址。写上发件人和收件人(目标IP和本地IP)以及要发送的货物(数据),然后再加上传输层首部,这些首部对应传输层的功能。
网络层封装:网络层加上目标ip地址/源地址和网路程首部后,就变成了数据包。
数据链路层封装:图中因为是接入的集线器,那么集线器的广播传输性质会导致传给该局域网内的其他PC,那么如何保证我要传输的数据包到路由器而不是其他接入局域网的计算机呢?这就需要再加一层地址,也就说MAC地址作为目标。因为路由器和设备本身都有MAC地址 ,将数据包封装成数据帧。
数据帧封装后以数字信号的方式传输,路由器接口和网卡是工作在同一层的对等实体。他们工作的协议是数据链路层封装的首部,能够识别和看懂首部字段。路由器收到后,以数据包的形态在路由内部处理选择路径。图中的CSMA/CD和PPP协议等后续会在网络层章节详解。这里只需要知道,CSMA/CD协议要考虑冲突,而PPP协议因为接收方和发送方只有一个,一对一接收不会出现冲突,也就不用考虑冲突,也就不需要加上MAC地址的信息。
数据帧每过一个路由器,都要重新封装【数据帧-数据包(路由器内部处理)-数据帧】
网卡具有拦截数据帧的功能,只要MAC地址不对,就会拒绝接收,这样不需要操作系统来个过滤,节省了系统资源。
思考1:为什么需要两个地址(IP和MAC)只用一个MAC不可以吗? 思考2:目标PC能知道源PC的MAC地址吗? 答案附在章节
访问的实现
如图,首先主机请求DNS解析域名,把域名(*.com)解析成IP地址,然后将IP地址返回主机,然后将该信息作为数据进行封装,封装时,一个数据包应该包含数据、目标IP和本机IP三部分。然后数据包再进行加工成为数据帧,应该包含数据包、本机MAC、和目标MAC三部分,注意目标MAC并不是最终目标的MAC,因为路由器的作用就是寻找最佳路径并选择,所以这里的目标MAC作为起始点,应该是局域网转发路由的MAC。然后进入广域网,实现多个路由之间的传递,最终访问到目标。
封装如下:
传输阶段:(封装)
接收阶段:(解封)
整体过程:该过程对应用程序是透明的,应用程序不知道中间走过了多少程序和步骤。
MAC在不断变化的过程中实现数据包的交互和数据帧的重新封装;IP决定最终目标,MAC决定数据包的动向,两层必不可少
路径选择就近原则,且目标web服务器无法知道访问者的mac地址,但是知道IP地址。因为封装好的数据帧应为
交互的实现
本地PC访问目标服务器后,服务器为PC提供服务。假设web服务器回传网页,则
网页回馈信息传输数据时,最大一个数据包不超过1500byte,往往网站中有大量图片文字,一个数据包是无法封装所有数据的,所以将网页整体进行切割部分包
发过去各种小包(编号)传输过去,然后再形成一个完整的客户端
缓存:数据分割后放入缓存,计算机网卡中有发送和接受两种缓存装置。
{数据包到达后,才会从服务器缓存中清除该缓存包(存在丢包可能} ex)1包传输,1包包装,通过路由器逆传输.data1到达缓存后,缓存区开始向客户端发送数据片段
数据片段会一段段发入客户端,这也就是为什么打开网站时,图片并不是一次性全部展示,网速慢是一个个或逐帧展示。
网路设备
如图所示,工作在同一层的设备是对等实体。对等实体之间有相应的协议来保证其规则性。
简单分析一下这个图,设备A发出数据帧通过集线器到达路由器A,路由器A解封封装数据帧,发送给路由器B,路由器B解封封装数据帧给交换机(交换机拥有能够识别数据链路层的封装的能力),然后交换机解封封装数据帧给设备B。
路由器是三层设备,拥有网络层,数据链路层和物理层三种对应功能。我们常说路由器是网络层设备,但是其实网路层设备包含了其下面的两层功能,就像问我们是大学毕业高中毕业还是初中毕业一样,你大学毕业自动默认了你高中和初中毕业,我们一般不会说三次含有包含关系的答案。同理我们所说某种设备有某种功能是默认的最高层级别的功能,相比之下的功能也有。
这里说一下数据链路层,A路由器左接口和设备A的网卡是对等实体,网卡的物理层和路由器接口的物理层是同一层。路由器A的右接口和路由器B的左接口是PPP协议传输,所以他们是对等实体。路由器B的右接口和交换机是对等实体。又因为交换机可能接口的带宽不同,所以交换机的不同接口,可能不是同一个对等实体。
思考1Answer):数据通讯的规则决定了IP地址决定最终目标,MAC地址决定的是下一个中转地址。如果只使用MAC地址,那么只有在局域网内,要访问的PC都接入一个集线器时才能实现。那么假如说整个因特网是一个足够大的局域网,那么根据局域网的广播信号,每次通讯会发给所有计算机信号,如此庞大的资源消耗是问题之一;其次当某台设备上网时,会存在占线导致其他设备无法上网的问题,所以是不可能的。
思考2Answer):不可以。因为收到的最后一个数据帧包含的源MAC地址实际上是上一个中转站路由器的MAC地址,而不是发送数据的PC的MAC地址,这个MAC地址在第一步中转时就被过滤掉了。