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地址的對映關係。
如果百度換伺服器,值用維護修改對映關係,普通仍然訪問域名不需要變化。
DNS:domain name server域名系統
DNS伺服器:各個網站 域名轉換ip的關係需要記錄到一個伺服器上服務大眾。
流程
- 客戶端訪問當地運營商的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更加安全。
代理伺服器
我的電腦 → 中介電腦 → 目的網頁。
場景:科學上網。爬蟲。