-
TCP协议的三次握手和四次握手
TCP协议的三次握手其实就是解决连接的可靠性。
解释一下相关符号:
- TCP标志位(Flags):
SYN
(synchronous建立连接)、ACK
(acknowledgement 确认)、FIN
(finish结束连接)、PSH
(push推送)、RST
(reset重置连接)、URG
(urgent紧急)、还有几个不太常用的
- seq (Sequence number 顺序号码) 一般是个随机值
- ack (Acknowledge number 确认号码)
三次握手的过程:
三次握手中的SYN=1
表示该标志位激活。
- 客户端A发送一个SYN包,其中包含一个seq,产生一个随机值这里我称为x,这个时候客户端A状态变成SYN-SENT状态
- 服务器B收到客户端A发来的SYN包,确认信息并发送一个(SVN+ACK)包返回给客户端A:seq=y(这里也是服务端产生的另外一个随机值), ack=x+1,服务端B状态变成SYN-RCVD状态
- 客户端A收到服务端发来的SYN包,确认信息并发送一个(SYN+ACK)包给服务端B: seq=x+1, ack=y+1, 此包发送完毕,客户端和服务端进入ESTABLISHED状态.完成三次握手,这样就保证了连接的可靠性。
- 这里不难发现,ack一般都是将收到的seq值 + 1
说白了:
第一步,A为了确认是否能将数据发送到B
第二步,B确认了A可以向自己发送数据,然后发送数据给A是为了确认是否可以发送数据到A,并且告诉A它可以收到A给它发送的消息
第三步,A确认了B可以给自己发送消息,也知道自己可以给B发消息,然后发送数据给B是为了告诉B也可以发送数据到A。到此,双方都确认了可以收发消息。可靠连接就建立了!
-
http请求
-
请求报文
请求报文由三部分组成:请求行、请求头、请求实体
请求行由①②③组成,空格分割
① 请求方法:常用:GET、POST、DELETE 不常用:PUT、OPTIONS、PATCH、TRACE、HEAD、CONNECT
② 请求URL
③ HTTP协议/协议版本
④ 请求头:由头部字段名和值组成
⑤ 请求体(一般不用)
请求方法 | 描述 |
---|---|
GET | 请求一个指定资源的表示形式。使用GET请求只被用于获取数据 |
POST | POST方法用于将实体提交到指定资源,通常导致再服务器上的状态变化和副作用 |
DELETE | DELETE方法删除指定的资源。 |
PUT | PUT方法用请求有效载荷替换目标资源的所有当前表示。 |
PATCH | PATCH方法用于对资源应用部分修改。 |
TRACE | TRACE方法沿着到目标资源的路径执行一个消息环回测试 |
HEAD | HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体. |
CONNECT | CONNECT方法建立一个到由目标资源标识的服务器的隧道 |
常见的请求头
-
常见状态码
-
TLS