首页 > 编程语言 >Python_17 OSI模型和HTTP协议

Python_17 OSI模型和HTTP协议

时间:2023-05-04 23:33:47浏览次数:41  
标签:http 请求 17 Python 服务器 HTTP com 客户端

一、查缺补漏
  1. Wireshark 抓报文
  2. 要学习的所有博客:
   http://testingpai.com/member/haili/articles
二、OSI模型
  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层:TCP(靠谱的传输协议,传输有限)
   UDP(广播协议会丢包,不是很靠谱,但是可以传输很大的内容,如视频)
  5. 会话层
  6. 表示层
  7. 应用层:HTTP(S)、FTP、DNS(域名解析),应用层跑在传输层之上
   TCP报文详解:http://testingpai.com/article/1621601730160

三、HTTP协议(F12 网络里看)
  1. 互联网
   客户端 服务端
   浏览器、app、手机浏览器 前端服务(nginx) + 后端服务器docker、uwsgi(python) + 网关服务(鉴权) + 业务服务
   点浏览器会发送一个请求(请求地址) <--> nginx(转发请求、负载均衡)会很快,前端直接返回 <--> 发送到对应的服务
  2. HTTP协议
    a. 超文本传输协议,基于TCP之上的传输协议
    b. TCP与HTTP区别:TCP理解为高速公路,HTTP理解为跑在高速公路上的汽车
    c. HTTP 数据传输格式
     json格式:Content-Type:application/json;charset=utf-8
     form表单:Content-Type:application/x-www-form-urlencoded
     multipart/form/data 传输文件,上传文件使用
  3. 请求类型
    a. get:获取资源
    b. post:添加资源
    c. put: 修改资源,不管是否部分修改,都要传
    d. patch: 修改资源,部分修改只需要传修改的部分
    e. delete: 删除资源
    f. head:查看响应头(查看接口请求规范)
    g. options:查看该接口支持的请求方式
    h. trace:查看请求数据,自测
    i. connect:HTTP/1.1协议预留的,将服务器作为跳板,去访问其他服务,再把请求到的数据给你,【代购】
  4. HTTP组成
    a. 请求头 给服务端看的,和服务端交互
    b. 请求体
    c. 响应头
    d. 响应体
    e. 提取信息
    i. 请求地址:Request URL: https://openapiv5.ketangpai.com/UserApi/login
    ii. 请求类型:Request Method: POST
    iii. 请求数据:{"email":"[email protected]","password":"Aa123456","remember":"0","code":"","mobile":"","type":"login","reqtimestamp":1627735085061}
    iv. 数据格式:Content-Type: application/json;charset=UTF-8
    v. 鉴权信息:鉴权令牌(token更安全) OCR可以造假,就是要钱 鉴权桩mock
     python mock 学会这几招够你用 10 年:http://testingpai.com/article/1624205968407
     怎么知道鉴权方式:
      1) 直接去问开发
      2) 自己穷举
    vi. requests
  5. 响应状态码
    a. 1xxxx:服务端已经收到了你的请求,需要客户端继续操作 101:切换更高的协议
    b. 2xxx: 成功状态码:
      i. 200:请求成功
      ii. 201:post根据你发的数据,创建好了对应的资源
      iii. 202:后端已经收到了,但是还没处理完成
      iv. 206:部分处理成功,一般是用于get请求,类似于下载电影的场景restful设计风格
    c. 3xxx:重定向
      i. 301:你请求的这个资源没有了,返回给你另外一个资源的地址,浏览器拿着这个地址继续请求
      ii. 302:临时移除
    d. 4xxx:客户端错误,找前端
      i. 401:需要用户认证授权
      ii. 404:客户端找的资源不存在,你客户端请求错误了,地址错误
      iii. 408:服务器等待客户端请求超时 客户端超时是timeout
      iv. 403:客户端发的请求服务端收到了,但是拒绝执行,有可能是权限问题、或者未实现的功能、黑名单
      v. 402:保留资源,等待以后使用
    e. 5xxx:服务端错误,找后端
      i. 500:服务器错误,无法完成请求,服务器挂了
      ii. 501:服务器不支持这个请求功能,无法完成请求
      iii. 502:网关返回的,网关服务器通过另外的链接去其他服务器去拿数据,然后再给你,他在拿数据的过程中访问到的了一个无效响应,没拿到数据
      iv. 503:服务器维护、或者超负荷运作,暂时无法处理客户端的请求
      v. 504:网关没有及时从远端服务拿到请求数据
      vi. 跨域是跨域名访问:浏览器同源策略导致的,要前端解决或者后端在setting里改
  6. HTTPS请求过程【面试】 http://testingpai.com/article/1621922748535

  7. http 与 https的区别
    a. http明文传输、https密文传输,相对安全
    b. http端口:80,https:443
    c. https有CA证书,要钱的
    d. http无状态的,https 是 ssl+http协议可以进行加密传输、身份认证
  8. HTTPS+非对称加密(RSA) 一般用https的都会有两层加密
   为什么要加密:
    a. 黑客攻击,撞库、DDOS、sql注入
    b. 身份伪造
    c. 获取用户敏感信息
  9. restful API设计风格
    a. 传统的接口设计:获取几个需要几个接口
     GET、POST /getUserInfo获取所有用户
     GET /getUserInfoByid?id=1获取某一个用户
  b. restful设计风格:相同的数据只需要一个接口
     GET、POST /getUserInfo
     /getUserInfo/12121?id=1
  同种类型数据相当于后面加了where筛选select name,age,sex from table where id =1
四、TCP协议(参考链接中的内容,几次握手)
  http://testingpai.com/article/1621601730160
  http://testingpai.com/article/1621669379653
五、一些知识点
  1. requests库使用
   安装:pip install requests

  

  2. Post and Get
   http://testingpai.com/article/1615615517987

标签:http,请求,17,Python,服务器,HTTP,com,客户端
From: https://www.cnblogs.com/Alisa-sweet/p/17369872.html

相关文章

  • [Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-05-处理分类数据
    《Python机器学习手册——从数据预处理到深度学习》这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习中python常用的这些库有更深入的理解,在应用中也能更为熟练。以下是根据书上的代码进行实操,注释......
  • Python 模块
    原文:Python模块|菜鸟教程(runoob.com)Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包......
  • #yyds干货盘点#python,Lambda
    lambda 关键字用于创建小巧的匿名函数。lambda a, b: a+b 函数返回两个参数的和。Lambda函数可用于任何需要函数对象的地方。在语法上,匿名函数只能是单个表达式。在语义上,它只是常规函数定义的语法糖。与嵌套函数定义一样,lambda函数可以引用包含作用域中的变量:>>>defmake_......
  • python列表怎么克隆
    克隆(或复制)Python列表有几种方法:使用切片操作符[:]list1=[1,2,3,4,5]list2=list1[:]这会创建list1的一个完整副本并将其分配给list2。使用list()函数list1=[1,2,3,4,5]list2=list(list1)这将使用list()函数将list1转换为列表并将其分配......
  • 基于深度学习的水果检测与识别系统(Python界面版,YOLOv5实现)
    摘要:本博文介绍了一种基于深度学习的水果检测与识别系统,使用YOLOv5算法对常见水果进行检测和识别,实现对图片、视频和实时视频中的水果进行准确识别。博文详细阐述了算法原理,同时提供Python实现代码、训练数据集,以及基于PyQt的UI界面。通过YOLOv5实现对图像中存在的多个水果目标......
  • Stata与Python的交互使用
    官方参考文档https://www.stata.com/python/api17/index.html不论是从Stata里调用python,还是从python里调用stata,都无法实现stata和python的数据互通。为了实现stata和Python的数据互通,stata官方提供了名为sfi(StataFunctionInterface)的包,可以在python中获得stata的数据。先......
  • [oeasy]python0048_注释_comment_设置默认编码格式
    注释Comment回忆上次内容使用了版本控制git制作备份进行回滚 尝试了嵌套的控制结构层层控制 不过除非到不得以尽量不要太多层次的嵌套 这样从顶到底含义明确而且还扁平 扁平也能含义明确......
  • python字典合并
    两个Python字典可以通过多种方式进行合并:使用update()方法:使用update()方法将一个字典中的键值对添加到另一个字典中,如果存在相同的键,则更新对应的值。dict1={'a':1,'b':2}dict2={'b':3,'c':4}dict1.update(dict2)print(dict1)#输出{'a':1,'b'......
  • python12:函数参数引用传值
    概念:在python中参数的赋值是一种引用关系。例如:a=1 a=2这里a中存储的是1存储的实际地址。其后将2赋予a实际上是修改了a中引用的地址,二将2赋予了新地址的空间里。这里并不是同一片空间的覆盖关系。而是属于不同空间不同的地址,只是通过a这样同一个标签来进行引用。注意:1.在pyt......
  • python编程
    python编程1、优势(1)简单,易学,免费,开源,代码规范(采用强制缩进方式,使其有很强的可读性)(2)解释性:python是边解释边执行的,python解释器会将源码转为中间字节码的形式,然后将其解释为机器语言执行。(3)可移植:python程序无须经过任何修改就可以在多个平台上运行。(4)面向对象:python以强大......