1. 程式人生 > >http協議理論,(科學)上網方法

http協議理論,(科學)上網方法

網路和http協議理論

協議: 兩臺計算機相互通訊,需要定義規則,如何發現對方,誰先發起通訊,通訊語言規則,結束通訊表示。

TCP/IP協議族

協議族:不止一個協議,一堆協議的總稱

  • TCP UDP 傳輸控制協議
  • IP 網路地址
  • HTTP hyper text transfer protocol 超文字傳輸協議。html
  • DNS 域名解析
  • PPPoe 撥號上網、連線網路服務商。例如聯通寬頻撥號上網。
  • FTP file transfer 檔案傳輸- ICMP SNMP mail 右鍵
  • IEEE 802.3 乙太網,區域網 。 802.11無線網絡卡WiFi。
  • ARP 地址協議解析

網路通訊概括

客戶端 → 協議轉發 到各個節點路由 → 伺服器
客戶端:個人電腦
伺服器端:別人的電腦,提供網站服務內容的平臺。

http協議

形如 http:// www.baidu.com
瀏覽器會自動預設省略http字首。
網頁是HTML書寫的。

三次握手

http協議為了準確送達和請求資料,不考慮規則細節,巨集觀上主要三個步驟:
1.傳送syn synchronize同步標識。目的看網路通不通,伺服器是否能提供服務。
2.伺服器端 傳送 syn/ack acknowledgement 標識。告訴客戶端我準備好了,你可以請求我。
3. 客戶端收到 syn/ack標識, 開始請求。

TCP協議

transfer control protocol 傳輸控制協議
報文:按照一定結構封裝的資料資訊。例如http報文包含資訊目的地ip、請求方法等。
http協議底層基於TCP協議,巨集觀上看,http報文通過三次握手傳送到服務端。底層上 http請求會先拆分為一段段的TCP報文。TCP報文包含請求地址、請求資訊等。當伺服器收到tcp報文後會再組合成http報文。
場景:http協議、網頁資訊。

UDP協議

user datagram protocol 使用者資料報協議。
客戶端直接與服務端傳輸資料,不需要握手和校驗。
所以UDP協議可能資料會丟失或傳輸錯誤。優點:傳輸速度快。
場景: 視訊、遊戲資料。所以少量資料包丟失不影響大致體驗。

dns協議

域名domain:形如www.baidu.com www.xxx.cn
IP地址:形如192.168.222.13
比較:域名好像人的名字 ,ip地址好像人的身份證號。
本來計算機網路就是靠ip地址來區分和訪問。當米訪問網站多時,數字ip地址很難記,公司升級或更新電腦,遷移網路,IP地址也會變化,不容易通知老客戶,導致老客戶訪問不了網站。所以發明了域名,域名有英文和數字組合,建立域名到ip地址的對映關係。

如www.taobao.com →47.222.15.55。
如果百度換伺服器,值用維護修改對映關係,普通仍然訪問域名不需要變化。

DNS:domain name server域名系統
DNS伺服器:各個網站 域名轉換ip的關係需要記錄到一個伺服器上服務大眾。

流程

  1. 客戶端訪問當地運營商的DNS伺服器,請求查詢taobao.com的ip地址。
    2.DNS伺服器返回淘寶。com對應的ip地址
    3.根據ip地址請求淘寶伺服器。

hosts檔案

開啟一個網頁 有資訊有圖片 請求幾十次 如果每一次查詢dns伺服器,將消耗資源,所以瀏覽器會快取對映關係。電腦本地也有一個dns關係快取檔案。hosts。
hosts 檔案優先順序最高如果瀏覽器訪問一個網站,會先去hosts檔案查詢,如果查到ip直接訪問,如果沒查到再去查dns伺服器。

科學上網的原理

DNS汙染:運營商控制著DNS伺服器,修改了一些網站的對映資訊。例如www.goggle.com →67.22.22.22,把真實的ip地址志華為一個錯誤的ip地址程式設計 www.google.com →0.0.0.0,這時使用者無法訪問。
其他措施:FFW government file wall 長城防火牆

科學上網的方法

修改hosts檔案。因為牆的原理汙染dns伺服器,hosts檔案優先順序最高。所以可以網上找別人整理好的hosts檔案,內容是常用國外網址和對應的真實ip地址。優點免費。易於修改。缺點:突破封鎖能力一般。
還有一款藍燈軟體下載後在連線藍燈軟體,就能科學上網,每月500m免費流量。

尋找hosts檔案: github 碼雲上搜索hosts 百度老D

區域網和ARP

ARP協議:地址解析,發現區域網中的其他電腦地址並探測。
ip地址:網路分配的一個地址,就好像大街上的門牌號。
mac地址:實體地址,形如 00-0e-01-AA-12-12,每一塊網絡卡有一個全球唯一的編號。電腦網路硬體唯一標識。

特殊地址

127.0.0.1 localhost 本地ip地址,代表你自己正在操作的電腦。
0.0.0.0 空地址,
169.254.. 保留地址,DHCP服務無法分配
192.168.. 區域網地址

DHCP協議

因為配置靜態ip比較麻煩和專業。所以出現了dhcp動態dns分配協議。路由器如果開啟dncp服務,那麼會為接入區域網的狄電腦裝置自動分配區域網ip、閘道器、子網掩碼。優勢是比較方便。相關設定的ip池 100-150最多支援50臺,設定ip過期時間。ip過期後會重新分配ip。

ping tracer命令

ping www.baidu.com
伺服器返回幾次少量資料、傳輸用時ms,看網速通不通。(個別伺服器出於安全原因,禁止ping)
tracer www.baidu.com 會跟蹤物流節點跳轉的詳細資訊。

整體流程

1.客戶端瀏覽器想請求一個頁面
2.請求DNS伺服器獲得網頁對應ip地址
3.構造http請求
4.htt拆分多個tcp報文
5.tcp報文通過包含的ip資訊 跳轉路由
6.伺服器收到tcp報文
7.伺服器tcp報文組裝還原成http報文資訊
8.伺服器根據http請求返回相應資源,返回響應內容。傳輸過程同上。

再深入http協議

請求request
屬性:

  • 請求方法:GET、POST
  • host:目標地址
  • connection:keep alive或指定的過期時間
  • cookie 比方,瀏覽器自帶的小資料庫
  • user- agent:使用者的瀏覽器資訊

響應response
屬性:

  • Content-Type:內容型別,字元編碼
  • Date:時間
  • Set-Cookie:伺服器讓瀏覽器儲存的資訊。
  • status-code:響應碼。判斷成功或失敗原因
  • 返回的具體資訊 HTML、js、css、png等等。

URI URL

URI(Uniform Resource Identifier)統一資源識別符號,網際網路某一資源的位置的表示。
URL(Uniform Resource Locator) 統一資源定位符。
區別:URI概念寬泛, D://xxx.jpg https://www.baidu.com/logo.jpg,
URL是URI的子集 https://www.baidu.com/logo.jpg

URL構成

  • 協議:http https
  • 認證(瞭解): http代理 使用者名稱、密碼。
  • 檔案層級: dir/L11/8.html 請求訪問資源的路徑
  • 引數:隨請求傳送的引數。鍵值對形式?word=python&tn=news

GET POST

get:取伺服器資源,絕大部分http請求都是get請求。
post:瀏覽器資訊傳遞到伺服器,期望伺服器進行儲存或計算。表單提交,有安全性要求的請求。
表現形式區別:瀏覽器請求頭method中看出。

區別:(面試題)

  • 瀏覽器請求頭request method中看出
  • get請求url中可以看到引數,post請求的引數在http請求體中,url中看不到,因此post請求更加安全。
  • get請求url有限制,不適合引數特別多和傳輸資訊大
  • get可以回退瀏覽器讀快取;post每次重新提交

(不常用)

  • option 客戶端請求操作伺服器 已經被封裝了。
  • put 請求伺服器儲存資源,delete 請求刪除。這兩種都可以用post代替。

狀態碼

伺服器響應的status code狀態,請求成功還是失敗。

  • 200 成功
  • 304 重定向
  • 403 沒有許可權訪問
  • 404 找不到資源
  • 500 內部錯誤 程式碼寫錯
  • 502 閘道器錯誤,路由問題,伺服器壓力大未及時響應

session會話 和cookie

http是無狀態的。比如傳送了一個含有使用者名稱密碼的post登入請求,伺服器驗證通過返回需要全新啊才能瀏覽的頁面。但是出於穩定和節省資源考慮,http發明定義伺服器不需要儲存額外資料(訪問者ip、使用者名稱、密碼)。當第二次訪問時,伺服器不知道你已登入。那麼每次訪問都需要輸入使用者名稱密碼,顯然不可能。
(一般面試題)session cookie區別
session會話:瀏覽器跟伺服器通訊的過程,持續溝通的過程。
cookie:瀏覽器自帶的一個小資料庫,用來儲存資訊,(儲存 使用者名稱 密碼 會話id)。伺服器response讓客戶端設定cookie。可會斷請求伺服器會把請求域名下的cookie給帶上。

許可權驗證流程:
1.瀏覽器請求登入,攜帶使用者名稱和密碼資訊。
2.cookie中資料值課件,密碼存到cookie有安全問題。
3.解決辦法,伺服器驗證驗證使用者名稱密碼,許可權通過,根據使用者資訊生成一個雜湊加密的字串。
4.伺服器返回具體網頁內容和session_id,告訴瀏覽器吧session_id這個字串存到cookie當中。
5.瀏覽器每次訪問都會帶上cookie。伺服器驗證cookie中的session_id比對,如果存在說明使用者已經登入。這樣就可以保持會話持續。

https

https:Hyper Text Transfer Protocol over Secure Socket Layer 基於安全套接字層的http協議。加密方式ssl tsl。防止http請求過程中被中間人抓取、攻擊。比http更加安全。

代理伺服器

我的電腦 → 中介電腦 → 目的網頁。
場景:科學上網。爬蟲。