行测 vue组件 mysqli emacs swiftui Avalon Notify.js vue安装教程 jmeter性能测试视频 jquery事件绑定方法 git登陆命令 math保留两位小数 python中pop函数 javaobject java获取月份 java语言 键盘宏软件 苹果滚动截屏 网络工程师教程 页面刷新 微信骰子表情包 爱奇艺无法投屏 视频md5修改器 xapk安装器 一键隐藏 vue引入第三方js 脚本编程 cmd命令数字雨 小程序游戏源码 求字符串长度 视频字幕制作软件 renderpartial globalscape qq农场图标 驱动程序更新 上单艾克出装 nastran 斐讯k3刷机 华为手环怎么连接手机 冬青黑体简体中文
当前位置: 首页 > 学习教程  > 编程语言

关于TCP劫持攻击

2020/12/5 10:35:16 文章标签:

在开始攻击前,复习一下TCP的三次握手和4次挥手。 第1次握手:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,客户端向服务器发送一个SYN数据包,此时的SYN数据包置一,seq是一个随机初始化的序列号&#xff…

在开始攻击前,复习一下TCP的三次握手和4次挥手。

第1次握手:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,客户端向服务器发送一个SYN数据包,此时的SYN数据包置一,seq是一个随机初始化的序列号,此时确认号为0,进入SYN_SENT状态。

第2次握手,服务器收到SYN数据包,必须确认客户端的SYN,会回复一个ACK表示确认, 并同步自己也发送一个SYN包,此时SYN=1,ACK=1,确认号是第1次握手的序列号加上1,序列号是随机产生的一个值,此时进入SYN_RECV状态。

第3次握手,客户端收到服务器的SYN+ACK,并向服务器发送一个确认包ACK,在该数据包中,序列号是第2次握手中的确认号的值,也就是seq=x+1,确认号是第2次握手的序列号的值再加上1,也就是ack=y+1,客户端和服务器进入ESTABLISHED状态,完成三次握手。

第1次挥手:客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。

第2次挥手: 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

第3次挥手: 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

第4次挥手: 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。


本文链接: http://www.dtmao.cc/news_show_450274.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?