TCP/IP网络协议的分析(1)——总体思想

1.1 什么是网络协议?

两台计算机上的程序要交换数据,为保证数据可靠传输,必须要对数据进行中间处理,而协议就是这个处理过程的规定。这好像是两台计算机为进行通信而签订的协议。联系实际生活,计算机通信好比是我们收发快递,快递协议就是寄快递、送快递、收快递各个过程的规则条文。大家都按这个规则来收发快递,保证了快递的准确及时送达。

下面是官方说法,网络协议是由三个要素组成:

(1) 语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。

(2) 语法。语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。

(3) 时序。时序是对事件发生顺序的详细说明。(也可称为“同步”)。 

1.2 TCP/IP网络协议的构成

TCP/IP网络协议并不是一个孤立的协议,而是众多协议组成的协议簇。就好比我们委托快递公司有一套规则,快递公司内部包裹流转有一套规则,快递公司送给收件人也有一套规则,这些规则共同构成了快递协议。

根据TCP/IP协议的功能,可以将其划分成5个层次,这5个层次是逻辑关系上的分层。

TCP/IP协议的分层

分层组织的原则是:低层协议为相邻的上层协议提供服务(接口),是上层协议得以实现的基础。

①物理层:就是把电脑连接起来的物理手段,常见的有光纤、双绞线,以及无线电波,它决定了电信号(0和1)的传输方式,物理介质的不同决定了电信号的传输带宽、速率、传输距离以及抗干扰性等等,这一层的PHY协议规定了传输信号所需的物理电平、介质特征。

②链路层:规定了数据帧能被网卡接收的条件,发送方会在发送的数据帧的首部加上接收方网卡的 MAC 地址信息,接收方只有监听到属于自己的MAC 地址信息后,才会去接收并处理该数据。

③网络层:每台网络设备都应该有自己的网络地址, 网络层规定了主机的网络地址该如何定义, 以及如何在网络地址和 MAC 地址之间进行映射,即IP协议、ARP协议、路由协议。

④传输层:网络层实现了数据包在主机之间的传递,而一台主机内部可能运行着多个网络程序,传输层可以区分数据包是属于哪一个应用程序的,可以说传输层实现了数据包端到端的传递。另外,数据包在传输过程中可能会出现丢包、乱序和重复的现象,网络层并没有提供应对这些错误的机制,而传输层可以解决这些问题,这就是TCP协议,引入了三次对话机制的UDP协议;

⑤应用层:应用层以下的工作完成了数据从一个主机上的应用程序传输到另一台主机的应用程序,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差。因此,应用层定义了各种各样的协议来规范数据格式,常见的有 HTTP、FTP、MQTT等,之所以会有许多的应用层协议,是因为互联网中传递的数据种类很多、差异很大、应用场景十分多样。

1.3 TCP/IP通信数据(报文)的传输过程

下面简要介绍数据是怎样按照TCP/IP协议在以太网中进行接收和发送的。

下图直观的表示了数据在以太网上的传输过程:

发送端:
第一步——应用层操作:用户(应用程序)发送数据, 将数据向下交给传输层,应用层可以通过调用传输层的接口来编写特定的应用程序。

第二步——传输层操作:传输层会在数据前面加上传输层首部,即TCP首部,向下交给网络层。

第三步——网络层操作:网络层会在数据前面加上网络层首部(IP 首部),然后将数据向下交给链路层。

第四步——链路层操作:链路层会对数据进行最后一次封装,即在数据前面加上链路层首部,形成以太网数据包,然后将数据交给网卡。

第五步——物理层操作:网卡将数据转换成物理链路上的电平信号,数据就这样被发送到了网络线路中。

接收端:
当设备的网卡接收到某个数据包后, 它会将其放置在网卡的接收缓存中,并告知TCP/IP 内核。 然后 TCP/IP 内核就开始工作了,它会将数据包从接收缓存中取出,并逐层解析数据包中的协议首部信息,并最终将数据交给某个应用程序。

数据的发送过程,可以概括为TCP/IP 的各层协议对数据进行封装的过程;数据的接收过程与发送过程正好相反,可以概括为 TCP/IP 的各层协议对数据进行解析的过程。

网上有一个很形象的比喻:
网络通信就好比送快递,商品外面的一层层包裹就是各种协议,协议包含了商品信息、收货地址、收件人、联系方式等,然后还需要配送车、配送站、快递员,商品才能最终到达用户手中。一般情况下,快递是不能直达的,需要先转发到对应的配送站,然后由配送站再进行派件。配送车就是物理介质,配送站就是网关, 快递员就是路由器,收货地址就是IP地址,联系方式就是MAC地址。 快递员负责把包裹转发到各个配送站,配送站根据收获地址里的省市区,确认是否需要继续转发到其他配送站,当包裹到达了目标配送站以后,配送站再根据联系方式找到收件人进行派件。

 

 

猜你喜欢

转载自blog.csdn.net/tuxinbang1989/article/details/102728794