如果 TCP 协议中三次握手不携带序列号,会造成什么样的后果
来源:互联网 发布:adobe reader for mac 编辑:程序博客网 时间:2024/06/02 12:46
之所以需要三次握手,其实就是要双方相互确认彼此能够通信。
一般要与对方确认可以通信,就要确认自己能够跟对方通信(1),且能够收到对方的通信(2),反过来对方也能够和自己通信(3),且能收到自己的通信(4)。基于这一点,流程就简化为3次握手通信。
首先,client发送一个SYN=1,seq=X(X随机)到server,server收到这个消息,则确认了client能够与server通信这件事(1),这时,server将SYN=1,ACK=1,ack=X+1,seq=Y(Y随机)发送给client;client收到这个消息,则确认了client能够收到对方的通信(2)和server能够与client通信这件事(3),最后client发送ack=Y+1,ACK=1返回给server,server收到后,确认了server能够收到client的通信这件事(4)。至此,双方的通信确认过程完成且建立了连接。(总结上面的发送信息,简单的说就是:SYN:表示一个想要连接对方的请求;ACK、ack表示一个答复对方连接请求的响应;中间随机数seq:请求连接的信物)
这里的三次握手重点每一次都有关联,seq随机一个数发送给对方,对方收到后用ack=seq+1的方式表示针对上一个通信的准确回复。如果不用序列号的话,client在最后一步的发送中可以发送任意数据给server,确认最后的连接过程且最终建立连接。由于client可以随意伪造任意多的ip,那么最终server建立了很多不存在且无用的TCP连接。
但是这个机制同样存在一个问题,就是SYN攻击。client伪造大量随机ip,向server发送SYN=1,seq=X的第一步的连接请求,server给不存在的ip发送SYN=1,ACK=1,ack=X+1,seq=Y响应,由于client的ip不是实际存在的,所以server发出的消息不能到达,server不断的重试直到超时,那么server的连接队列会被占满,正常的TCP握手请求就无法到达server,影响了正常的连接请求,导致网络阻塞或者server系统瘫痪。
这种SYN攻击通过命令netstat -nap | grep SYN_RECV可以查出来.
阅读全文
3 0
- 如果 TCP 协议中三次握手不携带序列号,会造成什么样的后果
- cython笔记:调用C++类时,如果不实现析构函数,会有什么样的后果
- TCP三次握手过程,如果两次握手会怎么样?
- TCP协议的三次握手
- Tcp协议的三次握手
- TCP协议的三次握手
- TCP协议的三次握手
- TCP的三次握手协议
- TCP三次握手协议
- TCP 三次握手协议
- TCP三次握手协议
- TCP三次握手协议
- TCP三次握手协议
- tcp三次握手协议
- TCP三次握手协议
- TCP协议三次握手
- TCP三次握手协议
- TCP协议三次握手
- java 方式配置spring mvc 继承WebMvcConfigurerAdapter和继承WebMvcConfigurationSupport
- 工厂方法模式
- 两个链表的第一个公共结点
- Docker制作数据库中间件Mycat源码镜像
- OPENCV学习一(滤波)
- 如果 TCP 协议中三次握手不携带序列号,会造成什么样的后果
- 一个界面出现多个seekbar的时候导致seekbar滑动不灵敏的问题
- 1041. 考试座位号(15)
- 21.缺陷管理工具(1)
- git branch用法总结
- Eclipse和MyEclipse中导入java注解模板
- 机器学习与神经网络(三):自适应线性神经元的介绍和Python代码实现
- 【study】linux 进程通信之管道
- 王永杰应聘前端开发岗位个人简历-Tel:17633559293