序号 | 数据发送内容 | 发送方向 | 客户端状态 | 服务器状态 |
---|---|---|---|---|
0 | CLOSED | LISTEN | ||
1 | SYN=1 seq=x | 客户端 -> 服务器 | 发送后转为 SYN_SENT | 接收后转为 SYN_RCVD |
2 | SYN=1 ACK=1 ack=x+1 seq=y | 服务器 -> 客户端 | 接收后转为 ESTABLISHED | SYN_RCVD |
3 | ACK=1 ack=y+1 | 客户端 -> 服务器 | ESTABLISHED | 接收后转为 ESTABLISHED |
为什么需要最后一次握手
如果最后一次的 ACK 包服务器没有接收到,即客户端已经进入了 ESTABLISHED 而服务器仍然没有进入到 ESTABLISHED,此时会发生什么
序号 | 数据发送内容 | 发送方向 | 客户端状态 | 服务器状态 |
---|---|---|---|---|
0 | ESTABLISHED | ESTABLISHED | ||
1 | FIN=1 seq=x | 客户端 -> 服务器 | 发送后转为 FIN_WAIT_1 | 接收后转为 CLOSE_WAIT |
2 | ACK=1 ack=x+1 | 服务器 -> 客户端 | 接收后转为 FIN_WAIT_2 | CLOSE_WAIT |
3 | FIN=1 seq=y | 服务器 -> 客户端 | 接收后转为 TIME_WAIT | 发送后转为 LAST_ACK |
4 | ACK=1 ack=y+1 | 客户端 -> 服务器 | 发送后等待 2MSL 后转为 CLOSED | 接收后转为 CLOSED |
GET
和 POST
状态码 | 含义 |
---|---|
1XX | 信息状态码 |
2XX | 成功状态码 |
3XX | 重定向状态码 |
4XX | 客户端错误码 |
5XX | 服务器错误码 |
状态码 | 含义 |
---|---|
200 | 成功 |
302 | 重定向 |
404 | 客户端的 URL 不存在 |
500 | 服务器错误 |
?
分割 URL 和参数,用 &
分割多个参数,特殊字符进行 base64 转码,以明文的方式显示