- 1、本文档共107页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络原理及协议分析-第3单元-TCP:可靠的数据流传输服务
TCP的有限状态机 CLOSED ESTABLISHED LISTEN CLOSE_WAIT FIN_WAIT_1 SYN_RCVD FIN_WAIT_2 CLOSING TIME_WAIT SYN_SENT LAST_ACK 主动打开 被动打开 被动关闭 主动关闭 起点 应用进程:被动打开 主动打开 发送 SYN 同时打开 收到 SYN,发送 SYN, ACK 收到 ACK 数据传送 阶段 关闭 发送 FIN 关闭 发送 FIN 关闭 发送 FIN 收到 RST 收到 SYN 发送 SYN, ACK 关闭 或超时 收到 ACK 收到 SYN, ACK 发送 ACK 收到 ACK 收到 ACK 收到 FIN 发送 ACK 收到 FIN, ACK 发送 ACK 收到 FIN 发送 ACK 同时关闭 收到 FIN 发送 ACK 发送 SYN 定时经过两倍报文段寿命后 关闭 * 粗的红色实线表示正常的客户端状态变迁; 粗的蓝色虚线表示正常的服务器状态变迁。 * 建立连接 :三次握手 接收ACK A B 发送SYN seq=x REQUEST 接收SYN 接收SYN+ACK 客户端 服务器 主动打开 SYN_SENT LISTEN 被动打开 ACCEPTED 发送SYN seq=y,ACK x+1 CONFIRM 发送ACK y+1 SYN_RCVD ESTABLISHED ESTABLISHED * 断开连接 :四次握手 接收ACK A B 发送ACK y+1 接收FIN 接收ACK 客户端 服务器 主动关闭 FIN_WAIT_1 CLOSE_WAIT 被动关闭 发送ACK x+1 LAST_ACK FIN_WAIT_2 CLOSED 发送FIN seq=y, ACK x+1 接收FIN+ACK TIME_WAIT 发送FIN seq=x * 2、TCP的定时器:有多种定时器,如 重传定时器 坚持定时器:在接收方发出0窗口通告后,发送方为防止0窗口通告后窗口恢复通告丢失而造成死锁,用一个坚持定时器周期性地向接收方发送窗口探测报文 保活定时器:在服务器端检测半开放连接(只连接不传送数据 ) 如果一个给定的连接在规定时间内没有任何动作,则服务器会向客户端发送探测报文段,根据响应情况进行处理 * 1、IP欺骗:伪造他人IP地址而达到蒙混过关的目的 §3.9 TCP攻击举例 A:目标机 B:被伪装机 H:攻击机 H冒充B连接A H冒充B向A发送SYN报文 A向B回应SYN+ACK报文 B发现错误,向A发RST A发现错误 所以B必须死!! 信任主机 ①DoS ②冒充B发送SYN ③SYN+ACK丢弃 ④冒充B发ACK? 假设B死,攻击步骤: 1. H冒充B向A发送SYN报文,ISNn 2. A向B回应SYN+ACK(ACK ISNn+1,SYN ISNa),白发 3. H假冒B回应ACK到A(ACK ISNa+1) 关键:ISNa=?(难点) 解决:掌握ISN增长的规律,或者? * ● RFC793:ISN是32比特的计数器,每4ms加1 ● 4.4 BSD和多数Berkeley实现版中ISN初始化为‘1’, 每0.5秒增加64000,每隔9.5小时归‘0’ (对应每8ms加1) 每建立一个连接增加64000 ● Windows如何实现? * 2、SYN Flood (DoS、DDoS) 客户机 A 服务器 B 1、SYN 2、SYN/ACK 3、ACK SYN_RCVD状态 ESTABLISHED状态 ? 攻击过程:主机A冒充一些并不存在的IP地址,向服务器B发大量的连接请求,直到消耗完B的半连接资源。这样,即使有正常的连接请求,B因为资源缺乏而无法响应 三次握手过程 * 3、TCP端口扫描 TCP实现的基本规则:若SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包 ① 全连接扫描 扫描主机用三次握手与目的机指定端口建立正规连接 实现方式:connect( )函数调用,若端口打开则连接成功,否则失败 优点:实现简单 缺点:很容易被发现,目前通常被禁止 * ② 半开扫描(SYN扫描) (1) 发SYN报文到目的主机的目标端口 (2) 若目标返回SYN+ACK,则端口开放,否则回RST (3) 若端口开放,则发送RST给目标,从而终止连接 半开的含义:全连接尚未建立 缺点:不能用so
文档评论(0)