TCP/IP协议栈是什么


TCP/IP是什么?是互联网进行数据传输的规矩。

我们利用互联网看视频打游戏刷新闻、购物导航付款等等都是在规矩下进行的。其实无论我们利用互联网干什么,其实都是接收和发送数据,游戏、视频不过是传输数据内容和处理方式不同罢了,而数据传输内容的方式是不变的,就好像寄快递,把物品打包贴上收件地址交给快递小哥发出,或空运陆运甚至海运,到了目的地再分拣运输签收拆包装。我们可以寄任何合乎规定的东西也可以收任何物品,无外乎这个方式,或者说这个规矩,再或者说这个步骤,什么步骤?打包——贴签——运输——分拣——运输——签收——拆包装。互联网亦是如此,它为了满足我们干不同的事情(购物导航……),用不同的传输方式(以太网、WIFI……),也规定了数据传输的规矩,或者说方式,再或者更专业的说法,这个协议。这个协议像极了我们的物流行业,数据就是抽象的物品,也经过了一个抽象的“打包——贴签——运输——分拣——运输——签收——拆包装”过程,TCP/IP协议的作用就是对这个过程的每一步骤做了规定,就好像是物流法规一样。利用互联网进行的数据都要经过这样一个过程,这个过程我们称为分层传输(其实就是分步骤),分层(分步骤)有个标准或者说参考,这个参考我们称之为参考模型,这个模型就是我们熟知的7层模型或4层模型。每一层都有相应的规定,这个规定我们称之为协议,例如TCP、UDP、IP、ICMP等等,这些协议规定了具体的传输规范,以适用于不同场景和传输要求,这些互联网传输数据的协议(规则)我们统称为TCP/IP协议栈(簇)。这也就是为什么前文我们说TCP/IP是规矩(协议)的代表了。

上文我们用一个例子来对TCP/IP协议栈做了解释,接下来我们就从专业的方面说一下为什么要分层?

我们先说一个词——“耦合性”。耦合性不知道大家熟悉不,有时候也称之为耦合度,这是用来表示两个模块的关联程度的。我们做工程一般都要分好几个模块来做,这样便于维护和协作,只要每个模块的接口信号不变,模块内容爱怎么折腾就怎么折腾,这种低耦合度就特别利于维护和移植。如果几个模块混在一块纠缠不清,能牵一发动全身,那就不好办了,会挨骂的,当年刚工作时候,我就被批过,记忆犹新。

回过头来,我们再说互联网,全球以亿计的设备实现互连,那么必然需要一个低耦合度的模型来规范。就好像水管螺丝,只要尺寸合适,都可以往上怼。所以互联网也要这样,它是一个网,巨大的网,终端设备就是网交织的一个又一个节点,只要按照人家的要求“接”上去就是联网了。就比如我们连跟网线设个IP就能看电视一样。

所以说,TCP/IP体系采用分层的目的就是降低耦合性,理清数据解析打包的步骤,更利于维护和扩展。

下面我们就来看看TCP/IP协议栈的分层模型。我们一般会看到如图1-2所示的分层模型,这是从《图解TCP/IP》这本书里面截下来的,左边是OSI模型,右边是TCP/IP协议栈的参考模型。这样一类比,可以理解TCP/IP协议的参考模型是OSI模型的简化版,实际上也差不多是这样,OSI模型像是个理论基础,但不适用实际情况,所以设计人员们群策群力的搞出来这样一个四层模型以供应用。注意我说的是四层,但图明明是五层嘛,这是因为硬件这一层或者说物理层是开放的,留给各厂家自由发挥了,以满足不同应用场景的不同需求。

image.png

 

“利用分层的体系结构,我们可以讨论一个定义良好的、大而复杂系统的特定部分。这种简化本身由于提供模块化而具有很高价值,这使实现由层提供的服务易于改变。只要该层对其上面的层提供相同的服务,并且使用来自下面层次的相同服务,当某层的实现变化时,改系统的其余部分保持不变。对于大而复杂且需要不断更新的系统,改变服务的实现而不影响该系统其他组件是分层的另一个重要优点。——《计算机网络》”






快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~

有建议、有需求、有疑问、联系我

<