Python_17 OSI模型和HTTP協議

sweet發表於2023-05-04

一、查缺補漏
  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":"1605118090@qq.com","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

相關文章