文章目录
1、三次握手
-
三次握手过程
建立TCP连接时,需要客户端和服务器共发送3个包。
- 第一次:客户端发送初始序号x和syn=1请求标志
- 第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1
- 第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1
三次握手过程分析
- 第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
- 第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
- 第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1
2、四次挥手
-
四次挥手过程
- 第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
- 第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
- 第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
- 第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。
四次挥手过程分析
- 第一次:客户端请求断开FIN,seq=u
- 第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
- 第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
- 第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1
为什么三次握手、四次挥手?
- 三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
- 四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。
3、http常见的请求方式以及它们都是做什么用的?
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体 |
2 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 |
3 | PUT | 从客户端向服务器传送的数据取代指定的文档内容 |
4 | delete | 请求服务器删除指定的页面 |
5 | OPTIONS | 允许客户端查看服务器的性能 |
4、http请求状态码
状态 | 描述 |
---|---|
200 | OK 当您的操作将在响应正文中返回数据时,出现此结果。 |
204 | No Content 当您的操作成功,但不在响应正文中返回数据时,出现此结果。 |
304 | Not Modified(重定向) 当测试实体自上次检索以来是否被修改时,出现此结果。 |
403 | Forbidden 客户端错误 |
401 | Unauthorized 客户端错误 |
413 | Payload Too Large(客户端错误) 当请求长度过长时,出现此结果。 |
400 | BadRequest(客户端错误) 当参数无效时,出现此结果。 |
404 | Not Found(客户端错误) 当资源不存在时,出现此结果。 |
405 | Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。 |
412 | Precondition Failed 客户端错误 |
501 | Not Implemented(服务器错误) 当未实施某个请求的操作时,出现此结果。 |
503 | Service Unavailable(服务器错误) 当 Web API 服务不可用时,出现此结果。 |
5、什么时候选择django来作为自己的开发框架?
大型项目、业务逻辑复杂。Django 框架可以为复杂的 Web 应用程序提供快速的开发速度。由于它提供了完整的功能,因此它提供了所有必要的实施工具。
6、pip基本命令使用
pip install #安装依赖包
pip uninstall #卸载依赖包
pip list #查看已安装的依赖包
pip freeze > requirements.txt #导出依赖包
pip install -r requirements.txt #从文件安装依赖包