HTTP
Published in:2020-11-07 |

http工作原理,TCP 的三次握手客户端,四次挥手….

http工作原理

1
2
3
4
5
6
7
1.地址进行dns解析,将url解析出对应的内容
2.封装http请求数据包
3.封装成tcp包,建立tcp连接(tcp的三次握手)
4.客户端发送请求
5.服务器接收请求,发送响应
6.客户端接收响应,进行页面渲染
7.服务器关闭TCP连接(TCP的四次挥手)

TCP 的三次握手客户端

1
2
3
4
1. 第一次握手:建立连接时,客户端发送syn包到服务器,并进入syn_sent状态,等待服务器确认;
syn:同步序列编号
2. 第二次握手: 服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己发送一个syn包(seq=k),即syn+ack包每次是服务器进入syn_recv状态
3. 第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=k+1),此包发送完毕,客户端和服务端进入连接成功状态

三次握手缺点

1
2
3
syn-flood攻击是最常见的DDoS攻击,也是最经典的拒绝服务攻击.
利用TCP协议实现的一个缺陷,通过像网络服务所在端口发送大量伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队被沾满,从而阻止其他合法用户进行访问.
数据包特征: 源发送了大量的syn包,并缺少了三次握手的最后一步握手ack回复
1
2
3
4
5
6
7
8
9
10
11
12
13
14
原理:攻击者首先伪造地址对 服务器发起SYN请求,服务器回应(SYN+ACK)包,而真实的IP会认为,我没有发送请求,不作回应。服务器没有收到回应,这样的话,服务器不知道(SYN+ACK)是否发送成功,默认情况下会重试5次(tcp_syn_retries)
这样的话,对于服务器的内存,带宽都有很大的消耗。攻击者如果处于公网,可以伪造IP的话,对于服务器就很难根据IP来判断攻击者,给防护带来很大的困难。
解决办法:
1. 无效连接监视释放
这种方法不停的监视系统中半开连接和不活动连接,当达到一定阈值时拆除这些连接,释放系统资源。
2. 延缓TCB分配方法
SYN Flood关键是利用了,SYN数据报文一到,系统立即分配TCB资源,从而占用了系统资源,因此有俩种技术来解决这一问题
Syn Cache技术
这种技术在收到SYN时不急着去分配TCB,而是先回应一个ACK报文,并在一个专用的HASH表中(Cache)中保存这种半开连接,直到收到正确的ACK报文再去分配TCB
Syn Cookie技术
Syn Cookie技术则完全不使用任何存储资源,它使用一种特殊的算法生成Sequence Number,这种算法考虑到了对方的IP、端口、己方IP、端口的固定信息,以及对方无法知道而己方比较固定的一些信息,如MSS、时间等,在收到对方 的ACK报文后,重新计算一遍,看其是否与对方回应报文中的(Sequence Number-1)相同,从而决定是否分配TCB资源。
3.使用SYN Proxy防火墙
原理:对试图穿越的SYN请求进行验证之后才放行

四次挥手

1
2
3
4
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)
第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)
第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段
第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放

Http协议和Https协议的区别

1
2
3
4
5
HTTP协议是使用明文数据传输的网络协议,明文传输会让用户存在一个非常大的安全隐患。端口80

HTTPS协议可以理解为HTTP协议的安全升级版,就是在HTTP的基础上增加了数据加密。端口443

HTTPS协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议要比HTTP协议安全。

HTTP协议特点

1
2
3
4
- HTTP协议是超文本传输协议;
- HTTP协议是一个应用层协议;
- 无连接:每次请求都是独立的;
- 无状态,表示客户端每次请求都不能记录请求状态,就是两条请求直接不可通信。
Prev:
短信验证码常见漏洞
Next:
js加密破解