回覆列表
  • 1 # 喲喲吼說科技

    OSI(Open System Interconnection,開放式系統互聯)是國際標準化組織指定的計算機網路通訊的基本框架,將網路通訊分為七層,分別為物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。

    如題,HTTP是應用層的協議,IP是網路層的協議,那麼HTTP請求報文頭部的client ip是怎樣獲取到的?

    在上層準備資料之前,下層確實沒有準備該層所對應的資料,但協議棧初始化已經完成,即下層引數是已經確認過的。簡單說,HTTP往下的協議棧全部都由OS負責初始化並進行確認後,才會允許呼叫socket API去建立連線併發送資料,同時可以透過相應的API獲得IP資訊等下層引數,然後再帶入HTTP資料中。

    平常使用的HTTP協議中,客戶端是不會發送client-ip頭的,準確的說是X-Client-IP和X-Forwarded-For,分以下兩種情況:

    1、未部署反向代理

    在沒有部署反向代理的情況下,可以直接拿到TCP層中對方的IP;

    2、部署反向代理

    部署反向代理後,TCP連線已經經過一次,甚至多次中轉了,伺服器在TCP層只能獲取反向代理的IP地址,無法獲取客戶端的真實IP。因此X-Client-IP和X-Forwarded-For這兩個頭由反向代理記錄並新增,然後傳送至後端伺服器。後端透過這兩個頭解析到客戶端真實IP地址;

  • 中秋節和大豐收的關聯?
  • 成語什麼什麼雨幕?