TCP数据包格式.docx
- 文档编号:11234187
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:13
- 大小:410.88KB
TCP数据包格式.docx
《TCP数据包格式.docx》由会员分享,可在线阅读,更多相关《TCP数据包格式.docx(13页珍藏版)》请在冰豆网上搜索。
TCP数据包格式
TCP数据包格式(zz)
修改浏览权限|删除
TCP提供一种面向连接的、全双工的、可靠的字节流服务。
在一个TCP连接中,仅有两方进行彼此通信。
广播与多播不能用于TCP。
TCP的接收端必须丢弃重复的数据。
TCP对字节流的内容不作任何解释。
对字节流的解释由TCP连接双方的应用层解释。
TCP通过下列方式来提供可靠性:
应用数据被分割成TCP认为最适合发送的数据块,称为报文段或段。
TCP协议中采用自适应的超时及重传策略。
TCP可以对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
TCP的接收端必须丢弃重复的数据。
TCP还能提供流量控制。
TCP报文段格式
源端口与目的端口字段——各占2字节。
端口就是传输层与应用层的服务接口。
传输层的复用与分用功能都要通过端口才能实现。
序号字段——占4字节。
TCP连接中传送的数据流中的每一个字节都编上一个序号。
序号字段的值则指的就是本报文段所发送的数据的第一个字节的序号。
确认号字段——占4字节,就是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移——占4bit,它指出TCP报文段的数据起始处距离CP报文段的起始处有多远。
“数据偏移”的单位不就是字节而就是32bit字(4字节为计算单位)。
保留字段——占6bit,保留为今后使用,但目前应置为0。
紧急比特URG——当URG=1时,表明紧急指针字段有效。
它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认比特ACK——只有当ACK=1时确认号字段才有效。
当ACK=0时,确认号无效。
复位比特RST(Reset)——当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其她原因),必须释放连接,然后再重新建立运输连接。
同步比特SYN——同步比特SYN置为1,就表示这就是一个连接请求或连接接受报文。
终止比特FIN(FINal)——用来释放一个连接。
当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段——占2字节。
窗口字段用来控制对方发送的数据量,单位为字节。
TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
检验与——占2字节。
检验与字段检验的范围包括首部与数据这两部分。
在计算检验与时,要在TCP报文段的前面加上12字节的伪首部。
紧急指针字段——占16bit。
紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
选项字段——长度可变。
TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。
填充字段——这就是为了使整个首部长度就是4字节的整数倍。
TCP首部的主要选项:
最大报文段长度MSS(MaximumSegmentSize)就是TCP报文段中的数据字段的最大长度。
MSS告诉对方TCP:
“我的缓存所能接收的报文段的数据字段的最大长度就是MSS个字节。
”
窗口扩大因子,用于长肥管道。
时间戳,可用于测量往返时延RTT。
TCP的数据编号与确认
TCP协议就是面向字节的。
TCP将所要传送的报文瞧成就是字节组成的数据流,并使每一个字节对应于一个序号。
在连接建立时,双方要商定初始序号。
TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。
TCP的确认就是对接收到的数据的最高序号表示确认。
接收端返回的确认号就是已收到的数据的最高序号加1。
因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。
为提高效率,TCP可以累积确认,即在接收多个报文段后,一次确认。
一、TCP的流量控制
TCP采用大小可变的滑动窗口进行流量控制。
窗口大小的单位就是字节。
TCP报文段首部的窗口字段写入的数值就就是当前给对方设置的发送窗口数值的上限。
发送窗口在连接建立时由双方商定。
但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。
发送端要发送900字节长的数据,划分为9个100字节长的报文段,而发送窗口确定为500字节。
发送端只要收到了对方的确认,发送窗口就可前移。
发送TCP要维护一个指针。
每发送一个报文段,指针就向前移动一个报文段的距离。
发送端已发送400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。
现在发送端还可发送300字节。
发送端收到对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。
现在发送端最多还可发送400字节的数据。
利用可变窗口大小进行流量控制双方确定的窗口值就是400
二、慢启动与拥塞避免
发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。
因此,每一个TCP连接需要有以下两个状态变量:
接收端窗口rwnd(receiverwindow)又称为通知窗口(advertisedwindow)。
拥塞窗口cwnd(congestionwindow)。
接收端窗口rwnd与拥塞窗口cwnd
接收窗口rwnd 这就是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,就是来自接收端的流量控制。
接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。
拥塞窗口cwnd(congestionwindow) 就是发送端根据自己估计的网络拥塞程度而设置的窗口值,就是来自发送端的流量控制。
发送窗口的上限值
发送端的发送窗口的上限值应当取为接收端窗口rwnd与拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定:
发送窗口的上限值=Min[rwnd,cwnd]
当rwnd 当cwnd 慢启动算法的原理 在刚开始发送时,可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。 在每收到一个对新的报文段的确认后,将拥塞窗口增加至2倍MSS的数值。 用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。 慢启动与拥塞避免算法的实现举例 当TCP连接进行初始化时,将拥塞窗口置为1。 图中的窗口单位不使用字节而使用报文段。 慢启动门限的初始值设置为16个报文段,即ssthresh=16。 发送端的发送窗口不能超过拥塞窗口cwnd与接收端窗口rwnd中的最小值。 我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。 在执行慢启动算法时,拥塞窗口cwnd的初始值为1,发送第一个报文段M0。 发送端收到ACK1(确认M0,期望收到M1)后,将cwnd从1增大到2,于就是发送端可以接着发送M1与M2两个报文段。 接收端发回ACK2与ACK3。 发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍。 现在发送端的cwnd从2增大到4,并可发送M4—M6共4个报文段。 发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍,因此拥塞窗口cwnd随着传输次数按指数规律增长。 当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd=16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。 假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。 更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢启动算法。 当cwnd=12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。 乘法减小(multiplicativedecrease) “乘法减小“就是指不论在慢启动阶段还就是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢启动门限值ssthresh设置为当前的拥塞窗口值乘以0、5。 当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。 加法增大(additiveincrease) “加法增大”就是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。 进入拥塞避免算法后,拥塞窗口的增大速度由指数增长变为线性增长。 TCP中默认报文段丢失就是由于网络拥塞造成超时而引起的。 “拥塞避免”并非指完全能够避免了拥塞。 利用以上的措施要完全避免网络拥塞还就是不可能的。 “拥塞避免”就是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。 三、TCP的重传机制 重传机制就是TCP中最重要与最复杂的问题之一。 TCP每发送一个报文段,就对这个报文段设置一次计时器。 只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。 由于TCP的下层就是一个互连网环境,IP数据报所选择的路由变化很大。 因而传输层的往返时延的方差也很大。 往返时延的自适应算法 记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。 这两个时间之差就就是报文段的往返时延。 将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT。 每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT: 平均往返时延RTT=a*(旧的RTT)+(1-a)*(新的往返时延样本)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCP 数据包 格式