ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:655.84KB ,
资源ID:24103774      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24103774.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(TCP包结构.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

TCP包结构.docx

1、TCP包结构TCP数据包结构 TCP提供一种面向连接的、全双工的、可靠的字节流服务。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。TCP的接收端必须丢弃重复的数据。TCP对字节流的内容不作任何解释。对字节流的解释由TCP连接双方的应用层解释。TCP通过下列方式来提供可靠性:应用数据被分割成TCP认为最适合发送的数据块,称为报文段或段。TCP协议中采用自适应的超时及重传策略。TCP可以对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。TCP的接收端必须丢弃重复的数据。TCP还能提供流量控制。TCP报文段格式源端口和目的端口字段各占2字节。端口是传输层与应用层的服

2、务接口。传输层的复用和分用功能都要通过端口才能实现。序号字段占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。确认号字段占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。数据偏移占4bit,它指出TCP报文段的数据起始处距离 CP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。保留字段占6bit,保留为今后使用,但目前应置为0。紧急比特URG当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。确认比特ACK只有当ACK

3、1时确认号字段才有效。当ACK0时,确认号无效。复位比特RST(Reset) 当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。同步比特SYN同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。终止比特FIN(FINal)用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。窗口字段占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。检验和占2字节。检验和字段检验的范围包括首部和数据这两

4、部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。紧急指针字段占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。选项字段长度可变。TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。填充字段这是为了使整个首部长度是4字节的整数倍。TCP首部的主要选项:最大报文段长度MSS(Maximum Segment Size)是TCP报文段中的数据字段的最大长度。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”窗口扩大因子,用于长肥管道。时间戳,可用于测量往返时延RTT。 TCP的数据编号与确认TC

5、P协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。TCP的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。为提高效率,TCP可以累积确认,即在接收多个报文段后,一次确认。一、TCP的流量控制TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。TCP报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限

6、。发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送窗口确定为500字节。发送端只要收到了对方的确认,发送窗口就可前移。发送TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。发送端已发送400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。现在发送端还可发送300字节。发送端收到对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。现在发送端最多还可发送400字节的数据。利用可变窗口大小进

7、行流量控制 双方确定的窗口值是400二、慢启动和拥塞避免发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个TCP连接需要有以下两个状态变量:接收端窗口rwnd(receiver window) 又称为通知窗口(advertised window)。拥塞窗口cwnd(congestion window)。接收端窗口rwnd和拥塞窗口cwnd接收窗口rwnd 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。拥塞窗口cwnd(congestion

8、 window) 是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。发送窗口的上限值发送端的发送窗口的上限值应当取为接收端窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定:发送窗口的上限值Minrwnd,cwnd当 rwnd cwnd 时,是接收端的接收能力限制发送窗口的最大值。当 cwnd rwnd 时,则是网络的拥塞限制发送窗口的最大值。慢启动算法的原理在刚开始发送时,可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至2倍MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使

9、分组注入到网络的速率更加合理。慢启动和拥塞避免算法的实现举例当TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段。慢启动门限的初始值设置为 16 个报文段,即ssthresh = 16。发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。在执行慢启动算法时,拥塞窗口cwnd 的初始值为1,发送第一个报文段M0。发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于是发送端可以接着发送M1和M2两个报文段。接收端发回ACK2和ACK3。发送端每收到一个对新报文段

10、的确认ACK,就把发送端的拥塞窗口加倍。现在发送端的cwnd从2增大到4,并可发送M4M6共 4个报文段。发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍,因此拥塞窗口cwnd随着传输次数按指数规律增长。当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd = 16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢启动算法。当cwnd = 12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一

11、个往返时延就增加一个MSS的大小。乘法减小(multiplicative decrease)“乘法减小“是指不论在慢启动阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢启动门限值 ssthresh 设置为当前的拥塞窗口值乘以0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。加法增大(additive increase)“加法增大”是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。进入拥塞避免算法后,拥塞窗口的增大速度由指数增长变为线性增长。TCP中默

12、认报文段丢失是由于网络拥塞造成超时而引起的。“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。三、TCP的重传机制重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。由于TCP的下层是一个互连网环境,IP数据报所选择的路由变化很大。因而传输层的往返时延的方差也很大。往返时延的自适应算法记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文

13、段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT。每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT:平均往返时延RTT =a*(旧的RTT)+(1-a)*(新的往返时延样本)在上式中,0=a1。参数a的选择若a很接近于1,表示新算出的平均往返时延RTT和原来的值相比变化不大,而新的往返时延样本的影响不大(RTT值更新较慢)。若选择a接近于零,则表示加权计算的平均往返时延RTT受新的往返时延样本的影响较大(RTT值更新较快)。典型的a值为7/8。超时重传时间RTO(Retransmission Time-Out)计时器的RTO应略大于上面得出

14、的RTT,即: RTO b * RTT这里b是个大于1的系数。若取b很接近于1,发送端可及时地重传丢失的报文段,因此效率得到提高。但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。因此TCP原先的标准推荐将b值取为2。往返时间测量的复杂性TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK。如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?Karn算法在计算平均往返时延RTT时,TCP不采用重传报文段的往返时延样本。由于避免了二义性的存在,这样得出的平均往返时延RTT和重传时间就较准确。当网络时延增大时,TCP忽略了重传对

15、往返时延的影响,会造成反复重传。修正的Karn算法报文段每重传一次,就将重传时间增大一些:新的重传时间r*(旧的重传时间)系数r的典型值是2 。当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和重传时间的数值。实践证明,这种策略较为合理。四、TCP的传输连接管理TCP是面向连接的协议,提供透明、可靠的数据流传输。传输连接有三个阶段,即:连接建立、数据传送和连接释放。传输连接的管理就是使传输连接的建立和释放都能正常地进行。在TCP的连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对传输

16、实体资源(如缓存大小,连接表中的项目等)进行分配。客户服务器方式TCP 的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。用三次握手建立TCP连接TCP连接建立A的TCP向B发出连接请求报文段,其首部中置同步比特SYN =1,并选择序号x,表明传送数据时的第一个数据字节的序号是x。B的TCP收到连接请求报文段后,如同意,则发回确认。B在确认报文段中应置SYN=1,其确认号应为x1,同时也为自己选择序号y。A收到此报文段后,向B给出确认,其确认号应为 y1。A的TCP通知上层应用进程,连接已经建立。当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。TCP连接的释放在数据传输结束后,通信的双方都可以发出释放连接的请求。TCP连接释放采用文雅释放过程。TCP连接的释放是两个方向分别释放连接,每个方向上连接的释放,只终止本方向的数据传输。当一个方向的连接释放后,TCP的连接就称为“半连接”或“半关闭”。当两个方向的连接都已释放,TCP连接才完全释放。TCP连接释放的过程TCP的正常的连接建立和关闭

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1