TCP配置TCP

TCP配置TCP修改建立TCP连接的超时时间建立TCP连接需要经过三次握手:主动端先发送SYN报文,被动端回应SYN+ACK报文,然后主动端再回应ACK

l在主动端发送SYN后,如果被动端一直不回应SYN+ACK报文,主动端会不断的重传SYN报文直到超过一定的重传次数或超时时间

l在主动端发送SYN后,被动端回应SYN+ACK报文,但主动端不再回复ACK,被动端也会一直重传直到超过一定的重传次数或超时时间

(SYN报文攻击会出现这种情况)可以通过以下命令配置SYN报文的超时时间(发送SYN报文到三次握手成功的最大时间),也就是建立TCP连接的超时时间

命令作用R(config)#ip tcp syntime-out seconds修改建立TCP连接的超时时间

单位秒,取值范围5-300,缺省值20使用no ip tcp syntime-out命令恢复参数缺省值

修改缓冲区大小TCP的接收缓冲区是用来缓存从对端接收到的数据,这些数据后续会被应用程序读取

一般情况下,TCP报文的窗口值反映接收缓冲区的空闲空间的大小

对于带宽比较大、有大批量数据的连接,增大接收缓冲区的大小可以显著提供TCP传输性能

TCP的发送缓冲区是用来缓存应用程序的数据,发送缓冲区的每个字节都有序列号,被应答确认的序列号对应的数据会从发送缓冲区删除掉

增大发送缓冲区可以提高TCP跟应用程序的交互能力,也因此会提高性能

但是增大接收和发送缓冲区会导致TCP占用比较多的内存

命令作用R (config)#ip tcp window-size size修改TCP连接的接收和发送缓冲区大小

单位字节,取值范围0-65535,缺省值4096

使用no ip tcp window-size命令恢复接收和发送缓冲区大小为缺省值

禁止端口不可达时的重置报文TCP模块在分发TCP报文时,如果找不到该报文所属的TCP连接会主动回复一个reset报文以终止对端的TCP连接

攻击者可能利用大量的端口不可达的TCP报文对设备进行攻击

可以使用以下命令禁止/恢复在收到端口不可达的TCP报文时发送reset报文

命令作用R (config)#ip tcp not-send-rst禁止在接收到端口不可达的TCP报文时发送reset报文

使用no ip tcp not-send-rst命令恢复发送reset报文

限制TCP连接的MSS的最大值MSS是最大传输段大小的缩写,指一个TCP报文的数据载荷的最大长度,不包括TCP选项

在TCP建立连接的三次握手中,有一种很重要的工作那就是进行MSS协商

连接的双方都在SYN报文中增加MSS选项,其选项值表示本端最大能接收的段大小,即对端最大能发送的段大小

连接的双方取本端发送的MSS值和接收对端的MSS值的较小者作为本连接最大传输段大小

发送SYN报文时的MSS选项值的计算方法如下

l非直连网络中:mss = 默认值536

l直连网络中:mss = 对端ip地址对应的出口的MTU - 20字节ip头 - 20字节tcp头

一般来说如果出口配置的某些应用影响了接口的mtu,那么该应用会相应的设置mtu,如隧道口,vpn口等

到这里得到的rmss值就是要发送的syn报文mss选项的值

举例:一般情况下在直连网络中建立bgp邻居,那么该连接的发送的mss为1500 – 20 – 20 – 20 = 1440

ip tcp mss命令的作用是限制即将建立的TCP连接的MSS的最大值

任何新建立的连接协商的MSS值不能超过配置的值

命令作用R (config)#ip tcp mss max-segment-size限制TCP连接的MSS的最大值

单位为字节,取值范围68-10000

使用no ip tcp mss命令取消此限制

启用PMTU发现功能TCP的路径最大传输单元(PMTU)发现功能是按RFC1191实现的,这个功能可以提高网络带宽的利用率

当用户使用TCP来批量传输大块数据时,该功能可以使传输性能得到明显提升

命令作用R(config)#ip tcp path-mtu-discovery [ age-timer minutes| age-timer infinite ]启用PMTU发现功能

age-timer minutes:TCP在发现PMTU后,重新进行探测的时间间隔

单位分钟,取值范围10-30

缺省值10

age-timer infinite:TCP在发现PMTU后,不重新探测

按RFC1191的描述,TCP在发现PMTU后,隔一段时间可以使用更大的MSS来探测新的PMTU

这个时间间隔就是使用参数age-timer来指定

当设备发现的PMTU比TCP连接两端协商出来的MSS小时,设备就会按上述配置时间间隔,去尝试发现更大的PMTU

直到PMTU达到MSS的值,或者用户停止这个定时器,这个探测过程才会停止

停止这个定时器,使用age-timer infinite参数

使用no ip tcp path-mtu-discovery命令关闭PMTU发现功能

设置接口收发SYN报文的MSS选项值当客户端发起一个TCP连接时,它通过TCP SYN报文中的MSS选项字段协商TCP报文数据载荷的最大值,客户端SYN报文的MSS值表示后续服务器端发送TCP报文数据载荷的最大值,反之同理

如右图的拓扑,PC用http访问服务器可能会出现无法访问的情况

因为PC与服务器端建立的连接MSS协商的都会是1460,但1460的MSS无法通过R1和R2,R1和R2用隧道相连,MTU小于1500

这时可以通过在R2的(1)口和(2)口上配置如下命令,修改SYN报文中的MSS选项值

从而修改经过(1)口和(2)口的TCP连接协商的MSS值

命令作用R (config-if)# ip tcp adjust-mssmax-segment-size设置接口收发SYN报文的MSS选项值

单位为字节,取值范围500-1460

使用no ip tcp adjust-mss命令取消此项设置,则接口收发SYN报文时,不会修改报文的MSS选项值

在接口上配置本命令会使得该接口接收或发送SYN报文的MSS选项都被改为接口上配置的MSS值

建议出口和入口配置相同的值

如果SYN报文的入口和出口配置了不同的MSS值,经过该设备后,SYN报文的MSS选项被改为这两个口配置值的较小者

以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。

相关