Skip to content

Commit 2436fbf

Browse files
committed
post get 区别
1 parent 8713681 commit 2436fbf

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

Network/Network-zh.md

+25-1
Original file line numberDiff line numberDiff line change
@@ -227,4 +227,28 @@ PS:一般定时器设定的时间都会大于一个 RTT 的平均时间。
227227

228228
**TCP New Reno** 中,TCP 发送方先记下三个重复 ACK 的分段的最大序号。
229229

230-
假如我有一个分段数据是 1 ~ 10 这十个序号的报文,其中丢失了序号为 3 和 7 的报文,那么该分段的最大序号就是 10。发送端只会收到 ACK 序号为 3 的应答。这时候重发序号为 3 的报文,接收方顺利接收并会发送 ACK 序号为 7 的应答。这时候 TCP 知道对端是有多个包未收到,会继续发送序号为 7 的报文,接收方顺利接收并会发送 ACK 序号为 11 的应答,这时发送端认为这个分段接收端已经顺利接收,接下来会退出快恢复阶段。
230+
假如我有一个分段数据是 1 ~ 10 这十个序号的报文,其中丢失了序号为 3 和 7 的报文,那么该分段的最大序号就是 10。发送端只会收到 ACK 序号为 3 的应答。这时候重发序号为 3 的报文,接收方顺利接收并会发送 ACK 序号为 7 的应答。这时候 TCP 知道对端是有多个包未收到,会继续发送序号为 7 的报文,接收方顺利接收并会发送 ACK 序号为 11 的应答,这时发送端认为这个分段接收端已经顺利接收,接下来会退出快恢复阶段。
231+
232+
## HTTP
233+
234+
HTTP 协议是个无状态协议,不会保存状态。
235+
236+
### Post 和 Get 的区别
237+
238+
先引入副作用和幂等的概念。
239+
240+
副作用指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的。
241+
242+
幂等指发送 M 和 N 次请求(两者不相同且都大于 1),服务器上资源的状态一致,比如注册 10 个和 11 个帐号是不幂等的,对文章进行更改 10 次和 11 次是幂等的。
243+
244+
在规范的应用场景上说,Get 多用于无副作用,幂等的场景,例如搜索关键字。Post 多用于副作用,不幂等的场景,例如注册。
245+
246+
在技术上说:
247+
* Get 请求能缓存,Post 不能
248+
* Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的。
249+
* Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术
250+
* URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
251+
* Post 支持更多的编码类型且不对数据类型限制
252+
253+
254+

0 commit comments

Comments
 (0)