网站首页 > 博客文章 正文
HTTP是一个属于应用层的超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
我们常说的http的三次握手,其实是TCP的三次握手,具体过程如下:
第一次:主机A发送位码为SYN = 1,同时随机生成一个seq的数据包到服务器,主机B由SYN=1知道,A要求联机;
第二次:主机B收到请求后要确认联机信息,向主机A发送 ACK number = (主机A的seq+1),SYN = 1,ACK = 1,随机产生seq的包;
第三次:主机A收到后检查ACK number是否正确,即第一次发送的seq number+1以及ACK是否为1,若正确,主机A会再发送ACK number= (主机B的seq+1),ACK=1,主机B收到后确认seq值与ACK=1则建立连接。
至此三次握手完成,连接建立成功
SYN攻击
在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect)。此时服务器处于Syn_RECV状态。当收到ACK后,服务器转入ESTABLISHED状态。
SYN攻击就是客户端,在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户端确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。
SYN攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被SYN攻击
netstat -n -p TCP | grep SYN_RECV
一般较新的TCP/IP协议栈都对这一过程进行修正来防范SYN攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.
但是不能完全防范SYN攻击。
四次挥手
第一次:主机A发送一个FIN(结束),用来关闭主机A到主机B的连接。
第二次:主机B收到这个FIN,他发回一个ACK(确认),确认收到序号为收到序号+1。
第三次:主机B发送一个FIN(结束)到主机A端,主机B关闭主机A的连接。
第四次:主机A发送ACK(确认)报文确认,并将确认的序号+1,关闭完成。
为什么要三次握手?
为了保证主机B能够接受到主机A的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证主机A能够接收到主机B的信息并能做出正确的应答而进行后两次(第二次和第三次)握手
为什么不是两次或四次呢?
两次握手无法建立可靠连接,因为第二次握手之后只代表主机B收发正常,主机A可能无法正常接收主机B的消息,拿不到正常的SYN进行后续通讯。
当主机B收到主机A的SYN连接请求报文后,可以同时发送SYN+ACK报文。所以三次握手足够了,四次效率会变低
为什么是四次挥手?
可能有人会有疑问,tcp我握手的时候为何ACK(确认)和SYN(建立连接)是一起发送。挥手的时候为什么是分开的时候发送呢?
因为当服务端收到FIN报文时,可能还有信息没有发送完成,并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,"你发的FIN报文我收到了"。只有等到我服务端所有的信息都发送完了,我才能发送FIN报文,因此不能一起发送。故而需要四次挥手。
猜你喜欢
- 2024-09-23 TCP/IP协议-TCP三次握手和四次挥手
- 2024-09-23 TCP协议三次握手的理解(tcp三次握手的通俗理解)
- 2024-09-23 前端面试—TCP协议的三次握手(tcp协议三次握手的工作原理)
- 2024-09-23 TCP/IP协议基础:深入理解三次握手过程及其重要性
- 2024-09-23 网络协议、三次握手四次挥手介绍(网络协议 三次握手)
- 2024-09-23 TCP协议的三次握手(tcp协议的三次握手建立连接的工作原理)
- 2024-09-23 TCP的三次握手到底是什么流程(tcp三次握手的通俗理解)
- 2024-09-23 协议设计系列-TCP的三次握手和挥手
- 2024-09-23 TCP协议的三次握手(建立连接)和四次挥手(关闭连接)
- 2024-09-23 TCP/IP协议握手原理(tcp udp 握手)
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)