今天小编给各位分享的是各层协议,「网络工程师」-传输层协议-TCP协议的知识,,希望对您有所帮助。如果你还想了解更多这方面的信息,请点击本站其他相关内容,共同学习吧!如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文导读目录:
各层协议,「网络工程师」-传输层协议-TCP协议 ♂
「网络工程师」-传输层协议-协议
·传输控制协议( ,)提供了面向连接、可靠地字节流服务。使用协议的应用程序不必考虑数据可靠性传输问题。
、报文格式·报文共分为报头和数据两个部分,如下图所示。报头的前个字节是固定的,后面有*个字节的选项(为整数),因此报头的最小长度是字节。
报头中各字段含义如下:
()源端口和目的端口:报文中的源和目的端口加上报文中的源和目的地址字段,构成一个四元组<源端口,源IP地址,目的端口,目的IP地址>,唯一标识一个连接。
()发送序号、确认序号和通告窗口:这几个字段在滑动窗口机制中用到,因为是面向字节流的协议,所以报文段中的每个字节都有编号。发送序号字段给出了该报文段中携带的数据的第一个字节分配的编号(标志位为),如果在报文中标志位为,则序号字段表示初始序号( ,)。确认序号给出了接收方希望接收的下一个报文段中数据流的第个字节的编号,确认序号字段只有在标志位为时有效,而一旦连接建立好,则这个确认序号字段一直有效。通告窗口字段给出了接收方返回给发送方关于接收缓存大小的情况。
()头部长度:表示报头长度,以位为单位。报头之所以需要这个字段,是因为报头有一个选项字段,而选项字段的长度是可变的。头部长度字段为位,意味着报头的最大长度是字节;如果报头没有选项字段,则报头的最小长度为字节。
()位的标志位:用于区分不同类型的报文,目前标志位有、、、、和。
:这个标志位用于连接建立,标志位和标志位搭配使用,当请求连接时,=,-=;当响应连接时,=,=.:当标志位为时,意味着确认序号字段有效;:发送带有标志位的报文后,连接将被断开;:这个标志位表示连接复位请求,用来复位那些产生错误的连接;:该标志位为时,表示报文的数据段中包含紧急数据,紧急数据在报文数据段的位置由紧急指针字段给出;:这个标志位表示操作,是指当报文到达接收端以后,立即传送给应用进程,而不是在缓存中排队。()校验和:通过计算整个报头、数据,以及来自报头的源地址、目的地址、协议和长度字段构成的伪头部得来的。
()选项:中最常用的选项字段是最大分段长度(),即最大的数据分段长度。每个连接的发起方在第一个报文中就指明了这个选项,其值通常是发送方主机所连接的物理网络的最大传输单元()减去报头长度(报头长度最小值为字节)和报头长度(报头长度的最小值为字节),这样可以避免发送主机对报文进行分段。
字段只能出现在标志位为的报文(即连接建立请求报文和连接建立响应报文)中,如果连接的另一方不接受发起方各处的值(即协商不成功),则发起方就将设定为默认值字节(这个值加上字节报头,再加上字节报头等于字节,而这正是.广域网的)。
、建立与释放连接的建立是从客户向服务器发送一个主动打开请求而启动的,如果服务器已经执行了被动打开操作,那么双方就可以交换报文以建立连接。只有在建立连接之后,双方才开始收发数据。而且,当其中一方发送完数据后,就会关闭它这一方的连接,同时向对方发送撤销连接的报文。需要注意的是,连接的建立是一个非对称的活动,即一方执行被动打开另一方执行主动打开;而中止连接则是对称的活动,即每一方都独立地关闭连接。
. 建立连接连接的建立使用了三次握手(- )机制。三次握手的目的是使数据段的发送和接收同步,同时也向其他主机表明其一次可接收的数据量(窗口大小)并建立逻辑连接。三次握手的过程如下图所示:
双方通信之前均处于状态。
()第一次握手
源主机发送一个同步标志位=的数据段。此段中同时标明初始序号( ,)。是一个随时间变化的随机值,即=,=。源主机进入-状态,若后面没有收到对方的应答,状态变为。
()第二次握手
目标主机接收到后发回确认数据报文。该数据报文=,同时确认序号字段标明目标主机期待收到源主机下一个数据段的序号,即=+(表明前一个数据段已收到且没有错误)。
此外,在此段中设置=,并包含目标主机的段初始序号,即=,确认序号=+,=,自身序号=。此时目标主机进入-状态。(注:表示报文首部的位,和表示序号)。
()第三次握手。
源主机进入状态,然后再回送一个确认数据段,同样带有递增的发送序号和确认序号(=,确认序号=+,自身序号=+),当目标主机接收到源主机确认后,进入状态。会话的三次握手完成,接下来源主机和目的主机可以互相收发数据。
. 释放连接连接的释放使用了四次挥手机制。
双方通信之前均处于状态。
()第一次挥手:源主机发送一个释放报文(=,自身序号=),源主机进入-状态。
()第二次挥手:目标主机接收报文后发出确认报文(=,确认序号=+,自身序号=),目标主机进入-状态。此时,源主机停止发送数据,但是目标主机仍然可以发送数据,连接为半关闭状态(-)。源主机接收到报文后等待目标主机发出报文,这可能会持续一段时间。
()第三次挥手:目标主机确定没有数据,向源主机发送后,发出释放报文(=,=,确认序号=+,自身序号=)。目标主机进入-状态。
注意:由于此时目标主机处于半关闭状态,还会发送一些数据,其序号不一定是+,因此设为。而且,目标主机必须重复发送一次确认序号=+。
()第四次挥手:源主机接收到释放报文后,对此发送确认报文(=,确认序号=+,自身序号=+),在等待一段时间确定报文达到后,源主机进入状态。目标主机在接收确认报文后,也进入状态。
、可靠传输是可靠的传输层协议,这就表示,应用进程把数据交给后,就能无差错地交给目的端的应用进程。使用差错机制保证数据的可靠传输,的差错控制机制主要是确认和重传。在介绍差错控制机制前,先介绍一下的字节编号。
. 字节编号和确认提供面向连接的字节流传输服务,也就是说,协议将要传送的数据看成是一个个字节组成的字节流,而且接收方返回给发送方的确认是按字节进行的,而不是按照报文段进行。每个连接传输字节流数据的第一个字节序号是建立连接时初始序号加。
假设每跳要传送字节的文件,分为个报文段进行传送,每个报文携带字节。假设连接建立随机选择的初始序号为,则对第一个字节的编号从开始。那么每个报文段的字节编号如下所示:报文段的字节序号为(范围从~);报文段的字节序号为(范围从~);报文段的字节序号为(范围从~);报文段的字节序号为(范围从~);报文段的字节序号为(范围从~)。
采用差错控制机制是字节确认,一般情况下,接收方确认已收到最长的连续的字节计数,报文的每个确认序号字段指出下一个希望接收到的字节,实际上就是对已经收到的所有字节的确认。
字节确认的优点是即使确认丢失也不一定导致发送方重传。假设接收方发哦是那个的报文段的确认序号是,标明字节编码为前的所有字节都已经收到。如果接收方前面已经发送过确认序号为的报文段,但是如果确认序号为的这个报文段丢失,也不需要发送方重发这个报文段,这就是所谓的“累计确认”。
. 超时重传和重传定时器发送方为了恢复丢失或损坏的报文段,必须对丢失或损坏的报文段进行重传。事实上,发送方每发送一个报文段,就启动一个重传定时器,如果在规定的时间之内没有收到接收方返回的确认报文,重传定时器超时,于是发送方重传该报文。
影响超时重传最关键的因素是重传定时器的定时宽度,但确定合适的宽度是一件相当困难的事情。因为在互联网环境下,不同主机上的应用进程之间的通信可能在一个局域网上进行,也可能要穿越多个不同的网络,端到端传输延迟的变化幅度相当大,发送方很难把握从发送数据到接收确认的往返时间( ,)。为了解决上述问题,采用了一种适应性重传算法,下面将描述这个算法并讨论它的改进过程。
. 超时重传时间计算算法该算法的大致思想是:动态维持往返时延()的平均值,然后把重传定时器的值设为的函数,每当发送一个报文表时,它就记录下发送时刻。当该报文段的回来时,记录下返回时刻,同时把返回时刻和报文发送时刻之间的时间差记为。接着,在前一次的估算值和当前的新采样值之间通过加权求和计算出新的估算值。具体公式如下:
其中,,因子决定了对延迟变化的反应速度。当接近时,当前的采样值对估算值几乎不起作用;而当接近时,估算值紧随延迟的变化而变化,直接采用当前的采样值作为新的估算值。作为折中,协议规范推荐取值为.~.。
重传定时器的值通过下列公式计算出来:
当接近时,能迅速检测到报文丢失并及时重传,从而减少等待时间,但可能引起许多不必要的重传。当太大时,重传报文的数目减少,但等待确认的时间增加。作为折中,协议规范推荐取。
例如,当取.,取时,而且当前的等于,而现在发送一个报文段并且收到确认的是,则:
?
各层协议,「网络工程师」-传输层协议-TCP协议的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于各层协议,「网络工程师」-传输层协议-TCP协议的信息别忘了在本站进行查找喔。
还没有评论,来说两句吧...