190 likes | 368 Views
第三讲 TCP 连接故障的诊断与修复. 本讲主要内容. TCP 协议 TCP 连接的建立与释放 TCP 建立连接的缺陷 TCP 连接故障的检测 TCP 连接故障案例. TCP 协议. TCP(Transmission Control Protocol) 即传输控制协议 , 是工作在传输层的协议; TCP 协议是面向连接的、可靠的、全双工传输协议; 面向连接是指 TCP 数据传输的过程包括三个阶段,即建立连接、传输数据和释放连接; 可靠传输是指接收方收到数据后,必须向发送方回送确认信息,如果发送方没有收到确认信息,将根据一定的规则进行重发。. 连接建立 ( 一 ).
E N D
本讲主要内容 • TCP协议 • TCP连接的建立与释放 • TCP建立连接的缺陷 • TCP连接故障的检测 • TCP连接故障案例
TCP协议 • TCP(Transmission Control Protocol)即传输控制协议,是工作在传输层的协议; • TCP协议是面向连接的、可靠的、全双工传输协议; • 面向连接是指TCP数据传输的过程包括三个阶段,即建立连接、传输数据和释放连接; • 可靠传输是指接收方收到数据后,必须向发送方回送确认信息,如果发送方没有收到确认信息,将根据一定的规则进行重发。
连接建立(一) • TCP在建立连接时使用三次握手的方式来完成,以保证可靠地建立连接。 • TCP报头有一个6bit的标志位 • ACK(ACKnowledgement):为1表示确认报文 • SYN(SYNchronous):当SYN=1且ACK=0时,表示建立连接请求报文;SYN=1且ACK=1时同意建立连接报文 • FIN(FINish):为1表示释放连接
SYN=1,ACK=0 SYN=1,ACK=1 SYN=1,ACK=0 连接建立(二) • 建立连接(三次握手) ESTABLISH ESTABLISH SYN_RCVD SYN_SEND 主机B 主机A
FIN=1,ACK=0 FIN=1,ACK=1 FIN=1,ACK=0 FIN=1,ACK=1 释放连接 • 释放连接(四次分手):由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。任何一方完成数据发送任务后,都能发送FIN来终止这个方向的连接。 被动关闭与A的连接,FIN_WAIT_1 FIN_WAIT_1 FIN_WAIT_2 LAST_ACK TIME_WAIT 主机B 主机A 此时,关闭A到B的连接 此时,关闭B到A的连接,释放连接完成
TCP建立连接的缺陷 • 主机A向主机B发送SYN请求与主机B建立连接 • 主机B收到请求后,发送SYN+ACK应答报文后主机B进入半连接状态 • 此时,如果A死机或掉线,则主机B收不到主机A发回的ACK确认报文,这种情况下,服务器会通过重试 试图建立连接,如果仍接收不到主机A的ACK报文,则会超时等待(30s~120s)后丢弃半连接 • 如果半连接不多,将不会造成大的问题,如果恶意攻击者大量模拟此种情况(伪造IP地址),服务器将维护非常大的半连接表,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试,这将导致服务器响应不了其他请求而假死即拒绝服务DOS(Denial of Service)
TCP连接故障的检测 • TCP连接故障主要表现为网络不通,其检测方法主要是通过建立TCP连接的三次握手过程来分析。 • 分析时,要沿着数据经过的物理链路进行逐段查找。特别要注意三次握手时,源、目的IP地址的变化
TCP连接故障案例1(一) • 案例描述: • 某单位通过一台路由器连接到因特网,内网计算机使用私有IP地址192.168.0.0/16,并通过路由器的NAT转换上因特网; • 由于只有一个IP地址61.186.120.5,单位的WEB服务器通过端口地址转换发布到因特网,即将61.186.120.5的80端口映射到WEB服务器地址192.168.1.10; • 因特网的用户通过网址http:// 61.186.120.5/访问WEB服务器,而内网用户通过这个网址确无法访问到WEB服务器。
Internet TCP连接故障案例1(二) • 因特网用户访问情况 S:61.128.1.5 D:61.186.120.5:80 S:61.128.1.5 D:192.168.1.10:80 路由器 61.186.120.5 S:61.186.120.5:80 D: 61.128.1.5 61.128.1.5 S: 192.168.1.10:80 D: 61.186.1.5 192.168.1.5 192.168.1.10
Internet TCP连接故障案例1(三) • 内网用户访问情况 路由器 S:192.168.1.5 D:192.168.1.10:80 61.186.120.5 61.186.1.5 S:192.168.1.5 D:61.186.120.5:80 S: 192.168.1.10:80 D: 192.168.1.5 192.168.1.5 192.168.1.10
TCP连接故障案例1(四) • 有两种故障排除方案 • 外网用户访问web服务器用公网地址即: http:// 61.186.120.5/ ,内网用户用私网地址: http:// 192.168.1.10/ • 这种方案的缺点是:由于用户很难记住IP地址,而且如果IP地址变化,通知用户也是一件很麻烦的事。能不能通过域名来访问网站? • 如果域名解析成公网地址,外网用户可正常访问,但内网用户不能访问; • 相反,如果域名解析成内网地址,外网用户不能访问,而内网可正常访问
TCP连接故障案例1(五) • 可以用以下方式来来解决这个问题: • 分别设置两台DNS服务器: • 一台对公网用户服务,域名解析成公网IP地址,这台DNS服务器是合法的真正的DNS服务器; • 一台对内网用户服务,域名解析成内网IP地址,这台DNS服务器只对内网用户服务,对外网用户不可见。 • 当配置好内网DNS服务器(假设IP地址为192.168.1.254)后,内网用户要将此地址设置为首先DNS服务器,这样内网用户就可通过域名访问WEB服务器了
TCP连接故障案例2(一) • 案例描述 • 某校园学生机房有20台电脑,通过一台三层交换机连接到一台服务器(IP地址:61.186.10.5)上,无外网出口; • 当所有机器同时开启时,网络中的计算机访问服务器出现异常,服务器反应速度异常缓慢,很多用户甚至不能访问服务器; • 除访问服务器外,其他用户间的访问正常
TCP连接故障案例2(二) • 故障检测过程: • ping服务器有掉包现象; • 断开所有机器,只留一台机器的情况下,ping服务器,网络畅通,无掉包; • 根据以上两种现象可能有以下情况: • 服务器并发性能不够,不能同时满足大量计算机的访问; • 网络有病毒,病毒计算机大量发包造成网络拥塞,因网络不畅通而掉包,由于其他用户间访问正常,此种情况排除; • 因此,将故障重点放在服务器上
TCP连接故障案例2(三) • 在服务器上使用NETSTAT命令,结果为: Proto Local Address Foreign Address State TCP 61.186.170.126:80 222.168.132.10:2176 SYN_RECEIVED TCP 61.186.170.126:80 236.15.204.111:8705 SYN_RECEIVED TCP 61.186.170.126:80 212.200.52.12:11000 SYN_RECEIVED TCP 61.186.170.126:80 236.14.55.250:51982 SYN_RECEIVED …… • 结果显示,服务器上存在很多处于SYN_RECEIVED的连接,这是服务器与客户机第二次握手后,等待客户机回应第三次握手后的状态,即半连接状态; • 结果中的半连接状态都对应不同的IP地址,由于网络与外网不通,网络中不存在具有这些IP地址的主机,因此不可能有这些地址的主机向服务器发起建立TCP连接的请求,很有可能是内网的主机通过伪造的IP地址向服务器发起SYN泛洪攻击; • 由此可判断,故障是由于内网主机向服务器发起SYN攻击,造成服务器响应不过来而拒绝服务DOS
TCP连接故障案例2(四) • 故障排除: • 升级所有主机的杀毒软件,检测病毒,果然在多台主机上发现了SYN病毒; • 对网络中的所有主机进行断网杀毒后,再连通网络,网络工作正常,服务器响应快速
本讲主要内容 • TCP协议 • TCP连接的建立与释放 • TCP建立连接的缺陷 • TCP连接故障的检测 • TCP连接故障案例