ios恢复预备份 和   tcp的数据格式

 

    ios恢复预备份  和     tcp的数据格式

1   server 12.12.12.1
     router 12.12.12.2
 

2   show flash     del flash:c1841-advipservicesk9-mz.124-15.T1.bin

3   copy tftp flash
    12.12.12.1
    c1841-advipservicesk9-mz.124-15.T1.bin

1    show flash

2    copy flash tftp
     c1841-advipservicesk9-mz.124-15.T1.bin
     1.1.1.2
                                                  tcp的数据格式

 

ATCP数据报格式(转)--看明白了受益匪浅

2010-10-15 17:53:41| 分类:网络技术 | 标签:报文 tcp|字号大中小订阅

一、TCP报文格式

传输控制协议(TCP)向上与用户应用程序进程接口,向下与网络层协议IP接口。用户应用程序采用首先调用TCP(或UDP),然后将应用程序数据递交给TCP这一方式,在IP网络上传送数据。TCP将这些数据打包分段并调用IP模块向目的主机传送每个数据段。接收方的TCP将段中的数据放入接收缓冲器,然后将段重装为应用程序数据,再将这些数据发送到目的的应用程序进程。
尽管TCPUDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。
TCP
提供一种面向连接的、可靠的字节流服务。

 

 

 

 

源端口号(16位),标识主机上发起传送的应用程序;目的端口(16位)标识主机上传送要到达的应用程序。源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址和目的端I P地址唯一确定一个T C P连接。一个I P地址和一个端口号有时也称为一个插口(socket),插口对(socket pair(包含客户I P地址、客户端口号、服务器 I P地址和服务器端口号的四元组 )可唯一确定互联网络中每个T C P连接的双方。IP+TCP端口唯一确定一个TCP连接。

TCP协议通过使用"端口"来标识源端和目标端的应用进程。端口号可以使用065535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在"众所周知的端口"Well-Know Port)为用户提供服务。

序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
  确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。
  头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。

预留:由跟在数据偏移字段后的6位构成,预留位通常为0.

标志位字段(UAPRSF):占6比特。各比特的含义如下:

  紧急比特URG——URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)

  确认比特ACK——只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。

  PUSH比特PSH——PSH1时,表示数据包中的数据必须迅速传播到应用层处理。

复位比特RST(Reset) —— RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

  同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。

  终止比特FIN(FINal)——用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。
  ●TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
  紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
  选项、填充字段:占32比特。可能包括"窗口扩大因子""时间戳"等选项。

TCP首部的主要选项:

最大报文段长度MSS(Maximum Segment Size)TCP报文段中的数据字段的最大长度。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”
窗口扩大因子,用于长肥管道。
时间戳,可用于测量往返时延RTT

TCP的数据编号与确认

TCP协议是面向字节的。TCP将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
在连接建立时,双方要商定初始序号。TCP每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。
TCP
的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。
为提高效率,TCP可以累积确认,即在接收多个报文段后,一次确认。

一、TCP的流量控制

TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。
TCP
报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。
发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)

发送端要发送900字节长的数据,划分为9100字节长的报文段,而发送窗口确定为500字节。
发送端只要收到了对方的确认,发送窗口就可前移。
发送TCP要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。

发送端已发送400字节的数据,但只收到对前200字节数据的确认,同时窗口大小不变。
现在发送端还可发送300字节。

发送端收到对方对前400字节数据的确认,但对方通知发送端必须把窗口减小到400字节。
现在发送端最多还可发送400字节的数据。

利用可变窗口大小进行流量控制双方确定的窗口值是400

二、慢启动和拥塞避免

发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。
因此,每一个TCP连接需要有以下两个状态变量:
接收端窗口rwnd(receiver window) 又称为通知窗口(advertised window)
拥塞窗口cwnd(congestion window)

接收端窗口rwnd和拥塞窗口cwnd

接收窗口rwnd 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在TCP报文的首部中的窗口字段,传送给发送端。
拥塞窗口cwnd(congestion window)  是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

发送窗口的上限值

发送端的发送窗口的上限值应当取为接收端窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定:
发送窗口的上限值=Min[rwnd,cwnd]
rwnd < cwnd 时,是接收端的接收能力限制发送窗口的最大值。
cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

慢启动算法的原理

在刚开始发送时,可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。
在每收到一个对新的报文段的确认后,将拥塞窗口增加至2MSS的数值。
用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。

慢启动和拥塞避免算法的实现举例

TCP连接进行初始化时,将拥塞窗口置为1。图中的窗口单位不使用字节而使用报文段
慢启动门限的初始值设置为 16 个报文段,即ssthresh = 16

发送端的发送窗口不能超过拥塞窗口cwnd和接收端窗口rwnd中的最小值。我们假定接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。
在执行慢启动算法时,拥塞窗口cwnd 的初始值为1,发送第一个报文段M0

发送端收到ACK1(确认M0,期望收到M1)后,将cwnd1增大到2,于是发送端可以接着发送M1M2两个报文段。

接收端发回ACK2ACK3。发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍。现在发送端的cwnd2增大到4,并可发送M4&mdash;M6 4个报文段。

发送端每收到一个对新报文段的确认ACK,就把发送端的拥塞窗口加倍,因此拥塞窗口cwnd随着传输次数按指数规律增长。

当拥塞窗口cwnd增长到慢开始门限值ssthresh时(即当cwnd = 16时),就改为执行拥塞避免算法,拥塞窗口按线性规律增长。

假定拥塞窗口的数值增长到24时,网络出现超时(表明网络拥塞了)。

更新后的ssthresh值变为12(即发送窗口数值24的一半),拥塞窗口再重新设置为1,并执行慢启动算法。

cwnd = 12时改为执行拥塞避免算法,拥塞窗口按按线性规律增长,每经过一个往返时延就增加一个MSS的大小。

乘法减小(multiplicative decrease)

&ldquo;乘法减小&ldquo;是指不论在慢启动阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢启动门限值 ssthresh 设置为当前的拥塞窗口值乘以0.5
当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。

加法增大(additive increase)

&ldquo;加法增大&rdquo;是指执行拥塞避免算法后,当收到对所有报文段的确认就将拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
进入拥塞避免算法后,拥塞窗口的增大速度由指数增长变为线性增长。
TCP
中默认报文段丢失是由于网络拥塞造成超时而引起的。
&ldquo;
拥塞避免&rdquo;并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。
&ldquo;
拥塞避免&rdquo;是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

三、TCP的重传机制

重传机制是TCP中最重要和最复杂的问题之一。
TCP
每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。
由于TCP的下层是一个互连网环境,IP数据报所选择的路由变化很大。因而传输层的往返时延的方差也很大。

往返时延的自适应算法

记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。
将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延RTT
每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延RTT
平均往返时延RTT =a*(旧的RTT)+(1-a)*(新的往返时延样本)
在上式中,0=<a<1

参数a的选择

a很接近于1,表示新算出的平均往返时延RTT和原来的值相比变化不大,而新的往返时延样本的影响不大(RTT值更新较慢)
若选择a接近于零,则表示加权计算的平均往返时延RTT受新的往返时延样本的影响较大(RTT值更新较快)
典型的a值为7/8

超时重传时间RTO(Retransmission Time-Out)

计时器的RTO应略大于上面得出的RTT
即:RTO b * RTT
这里b是个大于1的系数。
若取b很接近于1,发送端可及时地重传丢失的报文段,因此效率得到提高。
但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。
因此TCP原先的标准推荐将b值取为2

往返时间测量的复杂性

TCP报文段1没有收到确认。重传(即报文段2)后,收到了确认报文段ACK
如何判定此确认报文段是对原来的报文段1的确认,还是对重传的报文段2的确认?

Karn算法

在计算平均往返时延RTT时,TCP不采用重传报文段的往返时延样本。
由于避免了二义性的存在,这样得出的平均往返时延RTT和重传时间就较准确。
当网络时延增大时,TCP忽略了重传对往返时延的影响,会造成反复重传。

修正的Karn算法

报文段每重传一次,就将重传时间增大一些:
新的重传时间=r*(旧的重传时间)
系数r的典型值是2
当不再发生报文段的重传时,才根据报文段的往返时延更新平均往返时延RTT和重传时间的数值。
实践证明,这种策略较为合理。

四、TCP的传输连接管理

TCP是面向连接的协议,提供透明、可靠的数据流传输。
传输连接有三个阶段,即:连接建立数据传送连接释放。传输连接的管理就是使传输连接的建立和释放都能正常地进行。

TCP的连接建立过程中要解决以下三个问题:
要使每一方能够确知对方的存在。
要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
能够对传输实体资源(如缓存大小,连接表中的项目等)进行分配。

客户服务器方式

TCP 的连接和建立都是采用客户服务器方式。
主动发起连接建立的应用进程叫做客户(client)
被动等待连接建立的应用进程叫做服务器(server)

用三次握手建立TCP连接

TCP连接建立

ATCPB发出连接请求报文段,其首部中置同步比特SYN =1,并选择序号x,表明传送数据时的第一个数据字节的序号是x
B
TCP收到连接请求报文段后,如同意,则发回确认。B在确认报文段中应置SYN=1,其确认号应为x1,同时也为自己选择序号y
A
收到此报文段后,向B给出确认,其确认号应为 y1
A
TCP通知上层应用进程,连接已经建立。
当运行服务器进程的主机BTCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。

TCP连接的释放

在数据传输结束后,通信的双方都可以发出释放连接的请求。TCP连接释放采用文雅释放过程。
TCP
连接的释放是两个方向分别释放连接,每个方向上连接的释放,只终止本方向的数据传输。
当一个方向的连接释放后,TCP的连接就称为&ldquo;半连接&rdquo;&ldquo;半关闭&rdquo;。当两个方向的连接都已释放,TCP连接才完全释放。

TCP连接释放的过程

TCP的正常的连接建立和关闭

TCP 有限状态机。

粗实线表示客户的正常路径;
粗虚线表示服务器的正常路径;细线表示不常见的事件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章