Python教程

学习python自动化——网络基础

本文主要是介绍学习python自动化——网络基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、OSI模型
  七层架构
    7、应用层:HTTP
    6、表示层
    5、会话层
    4、传输层:TCP
    3、网络层
    2、数据链路层
    1、物理层

 

 

 

二、http协议
  2.1、HTTP概念
    1、超文本传输协议(Hyper Text Transfer Protocol)
    2、用于从万维网服务器传输超文本到本地浏览器的传送协议
    3、HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80
    4、http是基于请求与响应模式的、无状态的、应用层的协议
  2.2、HTTP请求类
    1、get:获取资源
    2、post:提交资源
    3、put:修改资源
    4、delete:删除资源
    5、head:查看响应头
    6、options:查看支持的请求方式
    7、trace:返回服务器收到的请求数据,用于开发自测
    8、connect:服务器作为跳板,让服务器代理用户去其他网站访问资源,然后再把拿到的资源返回给用户(重定向)
  2.3、互联网架构类型
    1、BS架构(浏览器)
    2、CS架构(应用程序/app)
    3、流程:客户端 <--------HTTP请求--------> 服务器(前端服务器nginx) <--------> 后端服务器(网关,课程服务,鉴权服务))
  2.4、HTTP组成
    2.4.1、请求报文

      2.4.1.1、请求行
        1)请求方法
        2)请求地址
        3)HTTP版本
        4)回车符(看不见)
        5)换行符(看不见)
      2.4.1.2、请求头
        1、key:value
          1.1、请求头关注字段
            1)Accept:*/*:用来告知客户端可以处理的内容类型
            2)token:null:鉴权,后端返回的token信息
            3)Set-cookies:前端缓存信息,session_id:用来鉴权
            4)Content-Type:application/json;charset=utf-8:前端告诉后端请求参数编码的格式
          1.2、常见Content-Type类型
            1)表单:application/x-www-form-urlencoded
            2)json格式编码:application/json
            3)上传文件或图片:multipart/from-data
            4)提交html格式文件:text/xml
        2、回车符(看不见)
        3、换行符(看不见)
      2.4.1.3、空行
        1、回车符(看不见)
        2、换行符(看不见)
      2.4.1.4、请求正文

    2.4.2、响应报文

      2.4.2.1、状态行
        1)协议版本
        2)状态码
        3)状态码描述
        4)回车符(看不见)
        5)换行符(看不见)
      2.4.2.2、响应头
        1、key:value
          1.1、响应头关注字段
            1)Content-Type:application/json; charset=utf-8:告诉前端后端支持的编码格式
            2)Set-cookie:告诉前端如何设置缓存信息
        2、回车符(看不见)
        3、换行符(看不见)
      2.4.2.3、空行
        1、回车符(看不见)
        2、换行符(看不见)
      2.4.2.4、响应正文
    2.4.3、请求体
      1、get请求:参数拼接在接口地址后面
      2、post请求:参数放在请求体body里面
      3、get与post区别

        1)参数传递:get参数在url地址后面,post参数放在body里面
        2)安全性:get相对不那么安全,post相对安全
        3)请求参数长度限制(后端可修改):理论上get参数长度有限制,post长度无限制,实际协议本身并没有做长度限制,是后端服务器做了限制,考虑内存问题
        4)post是提交数据,get是获取数据
        5)幂等性(同一个请求无论做多少次,结果都不变):get请求都是幂等,post请求不幂等(后端要做幂等处理,如金融方面)

    2.4.4、响应体
      get与post无区别,该怎么返回就怎么返回
    2.4.5、响应状态码
      1、1xx:服务器已经收到了请求,需要客户端继续操作
        1)100:客户端应该继续请求
        2)101:切换到更高级的协议
      2、2xx:HTTP成功状态码
        1)200:请求成功,一般用于get,和post
        2)201:请求已经成功,并创建了新的资源
        3)202:请求已经接受,但未处理完成
        4)204:服务器处理成功,但是并未返回内容
        5)206:服务器成功处理了部分请求,get请求,常用与资源下载
      3、3xx:资源重定向
        1)301:请求资源被永久移动到新的url,返回替代该资源的url,浏览器会自动重定向到新的url,后续资源的访问将使用新的替代
        2)302:临时移除,301是永久移除,资源只是临时移动到新的url,客户端继续使用原有的url
        3)303:查看该资源的其他地址
        4)304:请求的资源未修改,当服务器返回304,此时服务器不会返回任何资源,客户端将使用本地缓存资源。
        5)305:请求的资源必须通过代理访问
        6)307:临时重定向,与302类似
      4、4xx:客户端错误
        1)401:请求需要用户的身份认证
        2)402:保留状态码,并未使用
        3)403:服务器已经收到了客户端的请求,但是拒绝执行这个请求
        4)404:服务器无法找到客户端需要访问的资源
        5)407:请求需要代理进行身份认证,与401类似
        6)408:服务器等待客户端发送的请求时间过长,超时
      5、5xx:服务端错误
        1)500:服务器内部错误,无法完成请求
        2)501:服务器不支持请求的功能,无法完成请求
        3)502:网关或者是代理服务器执行请求的时候,收到了一个无效的响应
        4)503:服务器故障,暂时无法处理客户端的请求
        5)504:网关或者是服务器代理,无法从远处服务器获取请求
        6)505:服务器不支持请求的HTTP协议的版本,无法处理请求
三、TCP协议
  3.1、报文格式

    3.1.1、TCP头部
      1)Header Length:头部长度
      2)Reserved:保留位
      3)Window Size:还能接收容量
      4)ACK:确认号字段是否有效,若ACK=1,则有效
      5)SYN:在建立连接时,同步序号
      6)FIN:标记数据是否发送完毕,若FIN=1,表示已经发送完成
    3.1.2、TCP数据
      详见:http://testingpai.com/article/1621601730160
  3.2、三次握手/四次挥手
    详见:http://testingpai.com/article/1621669379653
四、https协议
  4.1、CA证书:证书签发机构颁布的数字证书
  4.2、请求过程
    4.2.1、三次握手

      1、客户端发送https请求,服务端将公钥以证书的形式发送给客户端
      2、客户端收到后加密发送给服务端,服务端解密并确认身份,发送加密串给客户端
      3、客户端解密并确认身份,问服务端要协议密钥,通知服务端握手结束,服务端响应密钥给客户端,通知客户端握手结束
    4.2.2、四次挥手

      1、客户端告知服务端发送完毕
      2、服务端发送确认信息
      3、客户端告知服务端确实要关闭连接
      4、服务端确认关闭释放TCP连接
五、http与https区别
  1、安全性:http明文传输,https加密传输(CA证书),https相对安全
  2、端口:http端口:80,https端口:443

这篇关于学习python自动化——网络基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!