應用層


HTTP介紹


HTTP協議即超文本傳送協議(Hypertext Transfer Protocol ),是Web聯網的基礎,也是手機聯網常用的協議之一,HTTP協議是建立在TCP協議之上的一種應用。
HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送響應,在請求結束後,會主動釋放連接。從建立連接到關閉連接的過程稱爲「一次連接」。
1)在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨的連接,在處理完本次請求後,就自動釋放連接。
2)在HTTP 1.1中則可以在一次連接中處理多個請求,並且多個請求可以重疊進行,不需要等待一個請求結束後再發送下一個請求。
由於HTTP在每次請求結束後都會主動釋放連接,因此HTTP連接是一種「短連接」,要保持客戶端程序的在線狀態,需要不斷地向服務器發起連接請求。通常的 做法是即時不需要獲得任何數據,客戶端也保持每隔一段固定的時間向服務器發送一次「保持連接」的請求,服務器在收到該請求後對客戶端進行回覆,表明知道客 戶端「在線」。若服務器長時間無法收到客戶端的請求,則認爲客戶端「下線」,若客戶端長時間無法收到服務器的回覆,則認爲網絡已經斷開。


URL(網址)

這裏寫圖片描述
登錄信息已經看不到啦
HTTP協議下服務器端口號不寫默認爲80
?號後邊爲查詢字符串:每個鍵值對用&隔開,鍵和值用=隔開
域名<例:baidu>與IP地址< 16位點分十進制 >採用DNS轉換 DNS是⼀整套從域名映射到IP的系統
URL編碼查詢


HTTP的方法


這裏寫圖片描述


考題:
這裏寫圖片描述


HTTP協議格式


GET
這裏寫圖片描述

POST
這裏寫圖片描述


認識HTTP格式


⾸⾏: [⽅法] + [url] + [版本]
Header: 請求的屬性, 冒號分割的鍵值對;每組屬性之間使⽤\n分隔;遇到空⾏表示Header部分結束
Body: 空⾏後⾯的內容都是Body. Body允許爲空字符串. 如果Body存在, 則在Header中會有⼀個GET和POST的區別
Content-Length屬性來標識Body的⻓度,如果服務器返回了⼀個html⻚⾯, 那麼html⻚⾯內容就是在body中

Host:客戶端告知服務器, 所請求的資源是在哪個主機的哪個端⼝上
User-Agent: 用戶操作系統版本 + 瀏覽器名字版本
Content-Type:Boy格式(數據類型)
Referer:當前頁面的前一個頁面
Cookie: ⽤於在客戶端存儲少量信息. 通常⽤於實現會話的功能(一般爲4K),
location: 搭配3xx狀態碼使⽤, 告訴客戶端接下來要去哪⾥訪問;


CONNECT


這裏寫圖片描述


HTTP狀態碼
HTTP狀態碼詳解


這裏寫圖片描述
常見HTTP狀態碼 :
200 OK
302 重定向
403 禁止的
404 Not Found
503 服務器維護


DNS
DNS是⼀整套從域名映射到IP的系統


DNS系統

  • ⼀個組織的系統管理機構, 維護系統內的每個主機的IP和主機名的對應關係.
  • 如果新計算機接⼊⺴絡, 將這個信息註冊到數據庫中;
  • ⽤戶輸⼊域名的時候, 會⾃動查詢DNS服務器, 由DNS服務器檢索數據庫, 得到對應的IP地址
  • 我們的計算機上仍然保留了hosts⽂件. 在域名解析的過程中仍然會優先查找hosts⽂件的內容

查看命令 cat /etc/hosts

域名簡介、使用、連接
例:www.baidu.com

  • com: ⼀級域名. 表⽰這是⼀個企業域名. 同級的還有 「net」(網絡提供商), 「org」(⾮盈利組織) 等.
  • baidu: ⼆級域名, 公司名.
  • www: 只是⼀種習慣⽤法. 之前⼈們在使⽤域名時, 往往命名成類似於ftp.xxx.xxx/www.xxx.xxx這樣的格式, 來表⽰主機⽀持的協議.

域名服務器
域名是分層結構,域名服務器也是對應的層級結構。

域名解析過程

  • 輸⼊域名後, 先查找⾃⼰主機對應的域名服務器
  • 域名服務器先查找⾃⼰的數據庫中的數據. 如果沒有, 就向上級域名服務器進⾏查找, 依次類推;
  • 最多回溯到根域名服務器, 肯定能找到這個域名的IP地址.
  • 域名服務器⾃⾝也會進⾏⼀些緩存. 把曾經訪問過的域名和對應的IP地址緩存起來, 可以加速查找過程

淺談瀏覽器輸入URL(例:www.baidu.com)後,後面發生的事?


一、域名解析
1. 查本地hosts文件
2. 查看瀏覽器緩存中是否有該域名(到根過程)
3. 通過DNS系統進行域名解析
二、構造請求
1. 創建TCP客戶端(socket api)三次握手等
2. 按照HTTP協議格式構造HTTP請求(構造一個符合HTTP協議的請求字符串)(再談HTTP的GET請求格式,牽引出與POST區別)
三、數據轉發過程1(IP數據報路由過程)(還可拓展每層協議的報文格式,注意事項,可以將整個網絡的知識都串聯引進)
1. 在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的端口,(如服務器使用80端口監聽客戶端的請求, 客戶端由系統隨機選擇一個端口, 與服務器進行交換,服務器把相應的請求返回給客戶端的這個端口),然後使用IP層的IP地址查找目的端。
2. 客戶端的網絡層不用關心應用層或者傳輸層的東西,主要做的是通過查找路由表確定如何到達服務器,期間可能經過多個路由器,這些都是由路由器來完成的工作,就是通過查找路由表決定通過那個路徑到達服務器。
3. 客戶端的鏈路層,數據包通過鏈路層發送到路由器, 通過鄰居協議查找給定IP地址的MAC地址,然後發送ARP請求查找目的地址,如果得到迴應後就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然後發送IP數據包到達服務器的地址
4. 服務器拿到數據解調
四、數據轉發過程2
1. HTTP請求首先會訪問本地運營商部署的服務器
2. 訪問百度機房的入口服務器
3. 訪問百度機房的應用服務器
4. 訪問百度機房文件存儲服務器


OSI七層模型:
https://blog.csdn.net/Romantic_C/article/details/81665591
網絡套接字:
http://www.noobyard.com/article/p-afkejdbv-pg.html
UDP服務器:
https://blog.csdn.net/Romantic_C/article/details/81705468
TCP服務器:
https://blog.csdn.net/Romantic_C/article/details/81707907
應用層:
http://www.noobyard.com/article/p-yqikerbl-rr.html
傳輸層:
https://blog.csdn.net/Romantic_C/article/details/81747317
網絡層:
http://www.noobyard.com/article/p-flnqpmhh-qe.html
數據鏈路層:
http://www.noobyard.com/article/p-vsbedtvz-sw.html