胡正 高朱飞 徐壮
摘要:随着互联网时代的到来,互联网思维正不断颠覆人们对传统行业的认知。本文透过纷繁复杂的网络世界,从支撑互联网运行的底层机制即TCP/IP模型出发,自底向上详细论述该模型各层功能,从而清晰描绘出互联网上任何两台计算机之间实现互联互通的背后机理,以期为相关人员理解互联网运行机制提供有益借鉴。
关键词:互联网;TCP/IP模型;数据通信
中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2020)08-0022-03
0 引言
当前,互联网正以前所未有的速度与传统各行各业进行深度融合[1-4]。要想深入理解互联网时代,就不得不提互联网的运行机制:TCP/IP模型[5]。虽然TCP/IP模型只有5个层次,但是各个层次都有它独特的功能,它们之间相互配合,才能完成全球的互联网通信。如何深入理解TCP/IP模型各层的功能,是每一名想理解互联网运行机制人员面临的一大难题。
本文站在从无到有构建网络通信的角度,给出TCP/IP模型各层的由来,以及每一层的功能,以期为关心互联网运行机制的人员理解TCP/IP模型各层功能提供借鉴。本文所述TCP/IP模型自顶向下由应用层、传输层、网络层、数据链路层与物理层组成。后续将自底层向顶阐述各层功能。
1 TCP/IP各层功能
1.1 物理层功能
首先以双机通信为例。如果采用有线的方式实现两台主机之间的通信,至少需要一条网线把两台主机连接起来,才能保证源主机发出的数据到达目的主机。同时,我们知道源主机待发送的数据其实是01序列,而在网线上传输的只能是电信号。因此,只用网线把两台主机连接起来还不能实现两台主机之间的数据通信,还必须把源主机上待发送的数据也就是01序列转换为可以在网线上传输的电信号。此外,目的主机还需要把收到的电信号再转换为01序列以便进行数据处理。当然,如果采用光纤作为实现数据传输的介质,那么收发主机自然需要实现01序列与光信号之间的转换。实现01序列与光电信号之间的转换其实就是物理层的功能。
1.2 数据链路层功能
对于简单的双机直接互连通信模型,通过物理层即可实现它们之间的通信。对于三台及以上的计算机,应该如何实现它们之间的两两相互通信?最简单的方法是把每两台计算机用网线互连起来,但是这样一台主机为了和其余的主机通信,那么它必须配置多个网络接口和多根网线,显然该方法不经济。与卫星通信中任何两个地球站通过卫星中转实现通信的方式类似,我们完全可以把多台计算机全部连接到一台中心设备上,让中心设备作为中转站完成每两台计算机之间的通信,该中心设备其实就是交换机。
当两台计算机直接用网线互连时,一台主机发出的数据必然会传输给另外一台主机,所以不用考虑源主机发出的数据要传给哪一台主机的问题。但是,对于连接在交换机上的多台主机而言,怎么保证从一台源主机发出的数据能够去往它要去的目的主机,而不会误传给其他主机?为了解决这一问题,就需要给每台主机分配一个独立标识,该独立标识实际上就是主机的物理地址,一般称为MAC地址。此时,源主机在给目的主机发送数据之前,通过给待发送的数据添加目的MAC地址控制待发送数据去往目的主机,同时通过给待发送的数据添加源MAC地址用以指明该数据来自哪台源主机。至此,通过MAC地址即可实现由交换机互连起来的局域网内任何相邻的两台主机之间的通信。这其实就是数据链路层的功能之一:实现数据在相邻节点设备之间的传递。
当数据在相邻节点设备之间的线路上传递时,它容易受到线路上电子热运动或来自外界的电磁干扰,从而导致目的主机可能会收到错误的数据。为此,目的主机必须具备判断收到的数据是否出错的能力,这其实就是数据链路层的差错检测功能。源主机的数据链路层模块在发送数据之前,它将会采取类似给数据贴上 “封条”的操作。当目的主机收到数据后,它的数据链路层模块通过检测“封条”是否损坏就可以判断数据在传输过程中是否出错。由此,我们总结出数据链路层的功能是实现数据在相邻节点之间的传递,同时对数据进行差错检测。
1.3 网络层功能
通過对数据链路层功能的阐述,我们知道局域网中某台源主机给该网络中另外一台目的主机发数据时,它必须要知道目的主机的MAC地址。MAC地址是网卡制造商在生产时就固化到网卡的存储芯片中,但是每块网卡都可能被出售到世界各地。所以,在互联网上很难通过MAC地址对目的主机进行定位。不过,这并不影响局域网内任何两台主机之间通过MAC地址实现数据通信。因为局域网的覆盖范围比较小,所以源主机可以通过广播的方式获取处在同一个局域网内目的主机的MAC地址,从而实现它们之间的数据通信。但是,源主机通过广播方式获取目的主机MAC地址的方法并不能应用于广域网更不用说互联网,因为这会带来广播风暴。通过以上分析,我们不难看出仅仅依靠数据链路层和物理层并不能实现世界范围内的互联网通信。
为了实现当今互联网范围内的网络通信,我们可以从电话网通信获得启示。类似电话网通过电话号码对座机进行定位,在互联网上也是给每台主机分配全网惟一的网络地址对主机进行定位,该地址就是IP地址。类似电话号码由区号和座机号组成,网络里面也是首先给每一个由交换机组建的网络分配一个惟一的网络号,然后再给该网络内的每一台主机分配一个惟一的主机号。由网络号与主机号就组成了IP地址,通过IP地址就可以实现对互联网上任何一台主机的定位。以上所述其实就是TCP/IP模型网络层的编址功能。所谓编址是指给网络里面的每一台主机编配全网惟一的IP地址。
由交换机组建的不同局域网之间通过工作在网络层的路由器互连起来,通过路由器就实现了全球范围内网络的互连。如果两台主机相距很远,那么数据如何从一台源主机所在的源网络穿越茫茫的互联网到达目的主机所在的目的网络而不是在网络中走丢?与我们开车从一地去往另外一地需要地图或者导航类似,数据在网络里面从源主机穿越茫茫网络到达目的主机,也需要导航,这就需要网络层具备给数据选择从源主机到达目的主机路线的能力。通过以上分析,我们得出网络层的功能主要是给主机编址以及选择数据从源主机到达目的主机路径。
1.4 传输层功能
通过物理层、数据链路层与网络层就能够实现两台主机之间的通信吗?答案是否定的。其实,网络通信的起点和终点都是运行的应用程序,运行的应用程序称为应用进程。例如,我们通过微信发送消息时,首先需要打开微信程序,打开的微信程序其实就是微信进程。那么,如何保证一台源主机上微信进程发出的数据去往目的主机上的微信进程,而不会被错误的发往目的主机上的其他应用进程例如网页浏览器?这就需要传输层,它实现了两个应用进程之间的通信。通过给通信双方主机上的应用进程进行编号,即可确定发送数据与接收数据的应用进程,应用进程的编号称为端口号。因此,当源进程发送数据时,它会给待发送的数据添加目的应用进程的端口号,以便指明数据将要去往的目的应用进程。同时,它也会给待发送的数据添加源应用进程的端口号,以便指明该数据来自哪个源应用进程。以上所述其实就是TCP/IP模型传输层的功能之一:实现应用进程之间的通信。
当数据穿越茫茫的网络向目的主机传递时,与邮局传递快递类似,网络层并不能保证数据能够不出差错的到达目的主机。自然,网络层也就无法保证数据能够正确的到达目的应用进程。但是对于某些网络应用进程而言,例如浏览网页、发送电子邮件、下载文件,实现此类网络应用的应用进程要求数据必须准确无误的从源进程传输到目的应用进程。为了给网络应用进程提供可靠传输服务,传输层除了具备实现应用进程之间通信的功能,还需要具备为应用进程提供可靠数据传输服务。此外,传输层还需要解决源应用进程与目的应用进程之间发收数据能力不匹配的问题,否则会出现源应用进程发送大量数据将目的应用进程淹没的情况出现,这必然会导致目的应用进程因为来不及接收源应用进程后续发过来的数据而选择丢弃数据。传输层匹配收发进程之间数据收发能力的功能称为流量控制功能。除此之外,传输层还要考虑当网络中某个节点发送拥塞了,源应用进程需要抑制发送数据的速度,以免网络的拥塞程度进一步上升从而造成通信的中断。因此,传输层还需要具备拥塞控制功能。综上所述,我们总结传输层的主要功能是:实现应用进程之间的通信、实现数据的可靠传输、流量控制与拥塞控制。
1.5 应用层功能
从前文可知,网络通信的起点与终点都是应用进程。与写信需要规范书写的格式类似,应用进程之间在交互数据时也需要规范双方的交换行为。例如,源应用进程发出的数据格式是文字、图片还是音视频?该数据是否被加密,采用何种加密方法?该数据是否被压缩,采用何种压缩方法?如此等等。为了规范通信双方应用进程之间的数据交互,就需要TCP/IP模型中的应用层。应用层正是通过这一功能为各种网络应用进程提供网络通信服务,从而最终为我们提供了海量的网络应用,最终造就了今天繁荣的互联网时代。
2 结语
当前,互联网正处在高速发展階段,各类网络应用层出不穷。不管互联网的未来如何发展演进,互联网运行的底层机制也就是TCP/IP模型其实一直未变。正是通过TCP/IP模型各层功能的实现才实现了世界范围内的互联互通,才让我们享受到互联网时代带来的种种红利。本文从实现网络世界里主机之间的通信出发,详细阐述了TCP/IP模型各层的功能,以期为关心互联网发展的人士提供看待高速发展变化互联网的底层运行视角。
参考文献
[1] 冯晓英,王瑞雪,曹洁婷,等.“互联网+”时代三位一体的教育供给侧改革[J].电化教育研究,2020(4):42-48.
[2] 王芳.“互联网+”背景下的现代农业发展路径探析[J].农业经济,2020(3):19-20.
[3] 巩英杰,张媛媛.“互联网+”视角下养老服务产业转型升级路径研究[J].宏观经济研究, 2020(3):153-163.
[4] 张学诞,张耀文.“互联网+”背景下我国税收合作遵从机制的构建[J].税务研究,2020(1):96-100.
[5] Cerf,Kahn.A Protocol for Packet Network Intercommunication[J].IEEE Trans on Comms,1974,22(5):637-648.