计算机网络笔记--Part4 - 雨中的博客

这系列记录翀翀🤠学习计算机网络时的核心笔记以及自己的思考,作为408组成学科之一,一定要认真学习。赠一言与君共勉:一个人的一生总会遇到这样的时刻,一个人的战争。在这种时候,你的心被颠倒了,但在别人眼里,你只是比平时安静一点,没有人会觉得奇怪。这种战争注定是单枪匹马的。

TCP/IP参考模型

前面一讲中我们重点学习了OSI7层模型以及对OSI7层模型简化后的5层模型,但是这种参考模型实际上只是在理论上被广泛的认可,并未广泛应用与商业中,究其原因是分层过于理想,偏向理论。因此APPA在研究ARPnet时提出了TCP/IP模型,这种模型从低到高依次为网络接口层(对应OSI参考模型中的物理层和数据链路层)、网际层、传输层和应用层(对应OSI中的会话层、表示层和应用层)。这种模型更加利于应用,因此得到了广泛的应用而成为了事实上的国际标准。TCP/IP的结构及各层的主要协议如下图:

网络接口层的功能与OSI的物理层和数据链路层类似。表示物理网络的接口,但是实际上TCP/IP并未真正描述这一部分的功能,只是指出主机必须使用某种协议与网络连接,以便在其上传递IP分组。具体的物理层网络可以是各种类型的局域网,比如以太网,令牌环网、令牌总线等,也可以是电话网、SDH等数据公共网络。总之网络接口层的作用就是从主机或节点接受IP分组,并把它们发送到指定的物理网络上。

我们不难发现网际层(主机-主机)是TCP/IP体系结构的核心关键部分。他和OSI网络层的功能非常类似。网际层将分组发送任何一个网络,并为之独立的选择合适的路由来实现跳转,但是每一个分组可能走的路径都是不同的,因此是乱序抵达的,不能保证分组是有序抵达目的主机的,因此各个分组的有序交付由高层负责。网际层定义了标准的分组格式和协议,即IP。他是唯一标识目的的地址,不会在中继系统的跳转中发生变化。当前我们采用的IP协议是第4版,即IPv4,但是现在IPv4地址已经快被使用耗尽了,因此正在向下一版IPv6转换。

传输层(应用-应用或者进程-进程)的功能同OSI模型的传输层类似,即使得发送端和目的端主机上的对等实体进行会话。传输层主要有以下两种协议:

  1. 传输控制协议(TCP),这种协议是面向连接的,数据传输的单位是报文段,能够提供可靠的交付即不出错。
  2. 用户数据包协议(UDP),这种协议是无连接的,数据传输的单位是用户数据报,不提供可靠的交付,只能提供尽最大努力交付,因此并不能保证数据的正确性,还需要高层进行进一步的差错检测。

而应用层(用户-用户)包含了所有的高层协议,如虚拟终端协议(Telnet)、文件传输协议(FTP)、域名解析服务(DNS)、电子邮件协议(SMTP)和超文本传输协议(HTTP)等。

我们连接了TCP/IP参考模型后可以看出IP协议是因特网中的核心协议,上层的一切服务都是依托于网际层的IP实现的。由于TCP/IP可以实现为各种应用提供服务,同时TCP/IP也允许IP协议在各种网络构成的互联网上运行(所谓的IP over everything),因此因特网才能发展成巨大的规模,同时TCP/IP也能被广泛的应用于认可。

思考:参考模型的结构对比?

如下图是不同的参考模型的直视对比图,相同颜色对应的功能是类似的:

TCP/IP与OSI参考模型的比较

首先我们认同TCP/IP和OSI模型时有许多相似之处的,只不过一个偏向理想的模型,一个偏向于商业应用的便利。

相似点

两者都是采取分层的体系结构,将庞大且复杂的问题规划为若干个较容易处理的,范围较小的问题,而且分层的功能也相似。

其次,两者都是基于独立的协议栈的概念

最后,两者都可以解决异构网络的互联,实现世界上不同厂家生产的计算机之间的通信。

思考:什么是异构网络?两者都是如何实现异构网络的互联的?

首先异构网络就是指组成结构不同的网络,例如A子网是星形结构,B可能是总线形结构,但是通过参考模型描述的功能都可以实现两者的数据通信,网间互联。归根结底,两个模型最终都是通过IP来实现的异构网络的互联的。

不同点

首先OSI模型的最大贡献就是精确的定义了三个主要概念:服务、协议和接口。服务是纵向相邻两层之间的概念,协议是水平源端和目的端对等实体之间的概念,而接口就是相邻两层数据交付的概念。这与现代的面向对象程序设计思想非常吻合。而TCP/IP模型在这三个概念上却没有明确的区分,不符合软件工程的思想。

其次,OSI模型产生在协议发明之前,没有偏向于任何特定的协议,通用性良好。但是由于设计者在协议方面没有充足的经验,不知道该把那些功能放到那一层更加合适,因此出现了不适应于商业应用的缺陷。而TCP/IP模型是在协议出现后提出的,因此不会出现协议不能匹配模型的情况。

第三,TCP/IP模型在设计之初就考虑到了多种异构网络的互联的问题,因此将网际协议(IP)作为了一个独立的重要层次。而OSI模型最初只考虑了利用一种标准的共用数据网络将不同的系统互联,因此OSI模型在认识到网际协议IP的重要性后,只好在网络层中又划分出了一个子层来完成类似于TCP/IP中IP的功能。

因此OSI参考模型的网络层实际上比TCP/IP参考模型的网际层功能范围更加广,结构也更加复杂。IP协议提供的服务是TCP/IP参考模型的核心也是主要功能,而对于OSI模型网络层还包括了RIP,OSPF等协议提供的服务。

最后,OSI模型在网络层支持无连接和面向连接的通信(TCP和UDP),但在传输层仅有面向连接的通信。而TCP/IP模型认为可靠性是端到端的问题,因此他在网际层仅有一种无连接的通信模式,但是传输层支持了无连接和面向连接的两种模式。这个不同点要牢记!

ISO/OSI参考模型 TCP/IP参考模型
网络层 无连接+面向连接 无连接
传输层 面向连接 无连接+面向连接
面向连接和无连接的区别?

面向连接分为三个阶段,第一是建立连接,在此阶段,发出一个建立连接的请求,只有在连接成功后,才能开始第二阶段的数据传输,第三阶段当数据传输完毕后,还需要释放连接。而无连接就没有这么复杂的过程,直接进行数据传输。因此面向连接的传输更加可靠但是开销也更大,无连接开销小更加广泛应用于数据传输(毕竟大部分应用对于数据的正确性并不是极高)。

五层结构的提出

我们发现OSI和TCP/IP协议都不是完美的,两者都有各自的优缺点。OSI模型试图建立一个全世界计算机网络都要遵循的统一标准,从技术角度来看是追求一种完美的理想状态,但是这也导致了基于OSI模型的软件效率极低,OSI模型缺乏市场与商业动力,结构复杂,实现周期长,运行效率低。而TCP/IP模型又对概念定义模糊,造成层与层之间的界限模糊,协议栈不发。因此我们要采取一种折中的方法,即综合两者的优点,也就提出了5层结构,我们熟知的物理层,数据链路层、网络层、传输层和应用层。

最后简单介绍一下使用通信协议栈进行通信的节点的数据传输过程。每一个协议栈的最顶端都是一个面向用户的接口。下面各层是通信服务的协议,用户传输一个数据报时,通常给出用户能够理解的自然语言,然后通过应用层,将自然语言转换成用于通信的通信数据。通信数据到达传输层,作为传输层的数据部分(传输层SDU),加上传输层的控制信息(传输层PCI),组成传输层的PDU,然后交付到网络层,传输层的PDU下放到网络层后,就成为了网络层的SDU,然后加上网络层的PCI,又组成了网络层的PDU,下方到数据链路层,数据链路层要同时在网络层的PDU头和尾都进行包裹形成数据帧,下放到物理层再进行包裹然后通过光缆信道传输。最后到达接收方节点协议栈,接收方再逆向逐层的将包裹拆开,然后把收到的数据交给用户。

一定要注意只有在数据链路层的成帧过程,是要在数据主体的首部和尾部都进行包裹,而其他层都只是在头部进行包裹。同时传输层是第一个要对信息进行切割分段的过程,当然网络层和数据链路层也可能会对其进一步再分割。

展望

前面我们花费了4讲对计网有了一个整体的认知,接下来我们将以五层参考模型展开进行每一层的协议、服务的详细讲解。通常在学习计网时有自上向下和自下向上的两种学习策略。在学校中我们是自上向下讲解的,但是我发现这样会造成在学习初期有许多疑惑不能理解,因此我在笔记中采用了自下向上的讲解策略,从最底层开始循序渐进的向上层进行学习,更方便于初学者透彻理解每一个协议、服务提出的作用,同时对整体有更全面的掌握。




©2020 - 2021 By wenchong
津ICP备2021009044号

本站总访问量为 访客数为

本站使用 Volantis 作为主题|借助hexo强力驱动|由腾讯云提供云服务