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选项被改为这两个口配置值的较小者
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。