协议系列之TCP/IP协议

Posted yxysuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协议系列之TCP/IP协议相关的知识,希望对你有一定的参考价值。

依据前面介绍的几种协议,将IP协议、TCP协议、UDP协议组合起来,于是便有了TCP/IP协议。如今非常多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,非常有必要对其学习一下。

打个不太恰当的例如,TCP/IP协议能够看成是邮局与邮递员的关系(实际TCP/IP协议族会包括四层。应用层、传输层、网络层、链路层)。

这个协议族中的IP协议定位到哪台计算机,而详细到这台计算机的哪个port(应用程序)就须要TCP协议。一个属于网络层,一个属于传输层。互相依赖,提供有效的解决通信问题的措施。这就好比在90年代,你写一封情书给你远方的情人,情书先从寄出邮局被送往目的地邮局,接着当地可爱的邮递员把情书送给你的情人同志手上,你俩感情得到升温。

图2-2-5-1,TCP/IP协议事实上还包括了UDP协议,即由TCP、IP、UDP三个协议组成。此图展示了TCP/IP协议的通信模型,左边是主机A。通过通信信道(通常是以太网)跟主机B进行通信。如果主机A的应用程序要发送数据到主机B的应用程序。主机A的应用程序会通过socket的API訪问TCP协议、UDP协议提供的服务,再通过IP协议,利用TCP/IP协议以通信信道为介质与主机B建立起连接。传送到主机B的数据依次经过IP协议层、TCP协议层,被主机B的应用程序接收。

技术分享

图2-2-5-1   TCP/IP通信模型

   

这里四层中每一层的功能都不一样。应用层主要发送用户的应用数据,由系统调用交给运输层处理;运输层负责建立连接,切割数据发送。释放连接,数据重组及错误处理;网络层负责确定将数据发送到哪个路由。链路层主要是对二进制用户数据进行传输校验。以下从不同角度来说明每一个层次的差别:

(1)     执行进程态。

应用层执行在用户程序进程中,属于用户态;其他三层执行在系统内核进程,属于核心态。

(2)     通信方式。

传输层是进程与进程之间的通信,是端对端的;网络层是机器与机器之间的通信,是点对点的。

(3)     数据传输单元。

传输层上是TCP或UDP报文段。网络层上是IP数据报文;数据链路层是帧数据。

(4)     寻址方式。

网络层通过IP寻址;链路层通过MAC寻址(传输层通过port寻址;一般而言MAC地址是世界唯一的、不变的,计算机通信事实上是靠MAC地址。而非IP地址。但MAC地址不能变。不灵活,所以应用层用IP进行寻址)。

 

以图2-2-5-1。分解这四层传输数据的流程:

①  主机A的应用层组织好数据,发给传输层,并调用系统API通知TCP建立连接。

②  主机A传输层接收应用层数据。组织好TCP报文。发送给网络层,进行连接建立,当中会加上目标跟源port。

③  主机A网络层接收传输层TCP数据。组织好IP报文,发送给链路层,当中会加上目标跟源IP地址。

④  链路层接收网络层数据,组装好链路报文,当中会加上MAC地址。

⑤  链路数据由网卡发送,依据目标IP找到近期的路由器的MAC地址。将数据包发往它,由它确定下一个路由。终于将数据包发送到主机B的网卡。

⑥  主机B的网络层获取IP数据包。依据IP协议拆包。

⑦  主机B的传输层获取TCP数据包,依据TCP协议拆包。

⑧  主机B应用层获取TCP拆包后的数据包进行解析,完毕对应的业务逻辑处理。

在这四个层中。数据报文的的变化能够简单用图2-2-5-2表示,应用层的数据到达传输层后,会被TCP协议打包数据(此图如果使用TCP协议),这是会加入一个TCP头部报文。而应用层数据被封装成TCP报文体。继续往下到网络层。TCP报文又被IP协议打包,这时加入了一个IP头部报文。整个TCP报文被封装成IP报文体。最后到达链路层,IP报文被链路相关协议打包,这时加入了帧头部报文和帧尾部报文,整个IP报文被封装成链路协议的报文体。

技术分享

图2-2-5-2 TCP/IP四层数据的封装

 

对于我们研究server,须要对传输层与网络层的报文比較深入理解,以下以一个更加具体的图对传输过程中TCP与IP报文组合进行说明。

依据TCP缓冲大小,会被分成一个个TCP分段,每一个分段都由IP分组与TCP段组成。在前几章已经对IP协议报文结构具体说明,这里不再赘述。IP报文的选项区域会被装入TCP报文,这样就把TCP报文嵌进IP报文,就可以利用IP协议进行发送数据传输。

技术分享

图2-2-5-3 TCP/IP协议报文




喜欢研究java的同学能够交个朋友,以下是本人的微信号:

技术分享






以上是关于协议系列之TCP/IP协议的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP网络编程系列之二(初级)

TCP编程之网卡信息获取和域名解析

「Netty系列」彻底弄清网络七层协议TCP/IPIPTCP(Netty前置一)

即时通讯开发之TCP/IP中的IP协议ARP协议

即时通讯开发之TCP/IP中的IP协议ARP协议

计算机网络—网络原理之TCP/IP协议