計算機網路自頂向下--應用層
這兩週把機械工業的『計算機網路自頂向下方法』讀了一遍。可以說把知識點講解得鞭辟入裡,比謝希仁那本綠皮教材不知高到哪裡去了。
我看書的時候做了概括內容和重點內容的筆記,加上了我個人理解。像運輸層協議的例子、家裡配置路由器、翻牆、之前的比特幣勒索病毒之類一些生活中實際的例子,我都有提及。當把應用層、運輸層、網路層、鏈路層看完後,書中還給出了一個完整的瀏覽器請求過程的例子,從DHCP、UDP、IP和乙太網,到DNS和ARP,再到域內路由選擇DNS伺服器,Web客戶-伺服器之間的TCP和HTTP,一共24個步驟,基本上學到的四層協議中的知識都用到了,十分經典。這個例子在鏈路層最後一部分。
以下是我所做的筆記,包括應用層到鏈路層所有重要的知識點。算是一份複習大綱或者預習大綱(不能應試)。仔細看完可能要幾個小時,在這分享出來給沒有計算機網路基礎的同學們,看完後應該對計算機網路有了初步的瞭解。不過還是建議買這本書去讀,不會令人失望的。
本書結構是自頂向下的,所以請按下列順序閱讀:
1.計算機網路自頂向下--應用層
2.計算機網路自頂向下--運輸層
3.計算機網路自頂向下--網路層
4.計算機網路自頂向下--鏈路層
應用層
應用層協議原理
網路應用程式體系結構
-
客戶 - 伺服器(C/S)
- Web、FTP、Telnet、電子郵件
-
對等(P2P)
- 檔案共享(BitTorrent)、對等方協助下載加速器(迅雷)、網路電話(Skype)、IPTV(迅雷看看)
-
混合(C/S + P2P)
- 即時訊息應用,伺服器跟蹤使用者IP地址,使用者之間P2P直接傳送報文
程式通訊
- 進行通訊是實際是程式,不是程式。不同端系統的程式間交換報文相互通訊
-
客戶和伺服器程式
- 發起通訊的程式標識為客戶,等待聯絡的程式是伺服器
- 瀏覽器 - Web伺服器交換報文
- P2P 檔案從一個對等方的程式傳輸到另一個counterpart的程式
-
程式與計算機網路之間的介面
- 套接字Socket,是同一臺主機內應用層與運輸層之間的介面,應用程式和網路之間的API
-
程式定址
- 主機地址(IP地址)
- 接收程式識別符號(埠號)
-
因特網提供的運輸服務
- TCP服務
- 面向連線,全雙工
- 可靠的資料傳送服務
- 擁塞控制
- 安全套接字層SSL
- UDP服務
- 不可靠資料傳送服務
- 因特網運輸協議不提供的服務
- 能為時間敏感應用提供滿意的服務,但不提供任何定時或頻寬保證
- TCP服務
-
應用層協議
- 定義了執行在不同端系統上應用程式程式如何相互傳遞報文
- 報文型別,如請求報文,響應報文
- 報文型別的語法,欄位含義
- 何時、如何傳送報文,響應規則
- Web、檔案傳輸、電子郵件、目錄服務、P2P及其協議
- 定義了執行在不同端系統上應用程式程式如何相互傳遞報文
Web和HTTP
HTTP概況
- Web的應用層協議是超文字傳輸協議(HTTP),HTTP由一個客戶程式和一個伺服器程式實現,通過交換HTTP報文進行會話,80埠
- URL地址包括主機名和路徑名,Web伺服器用於儲存Web物件,每個物件由URL定址
- HTTP使用TCP作為其支撐運輸協議。HTTP協議不擔心資料丟失,不關注TCP從網路的資料丟失和亂序故障恢復細節,那是TCP以及協議棧低層協議的工作
- HTTP是無狀態協議,不儲存客戶資訊
- Web伺服器總是開啟的,一般有一個固定的IP地址,並服務於來自不同瀏覽器的請求
非持續連線和持續連線
-
採用非持續連線的HTTP
- 每個TCP連線只傳輸一個請求報文和一個響應報文
- 每個連線在客戶和伺服器都要分配TCP的緩衝區和保持TCP變數
- TCP連線三次握手,第三次握手向TCP連線傳送一個HTTP請求報文
- 每一個物件經受兩倍RTT的交付時延,一個用於建立連線,一個用於請求和接收一個物件
-
採用持續連線的HTTP(default)
- 伺服器傳送響應後保持該TCP連線開啟,經過一定時間間隔(超時)未被使用,HTTP伺服器關閉該連線
HTTP報文格式
-
請求報文
- 請求行
- 首部行(請求頭)
- host(Web代理快取記憶體使用)、Connection、Useragent、cookie、Authorization等等
- 實體體
- POST請求輸入值
-
響應報文
- 狀態行,狀態碼
使用者與伺服器的互動:cookie
- 伺服器希望限制使用者訪問,或希望把內容與使用者身份聯絡起來
- 使用者第一次請求伺服器—>響應報文的響應頭(首部行)帶一個cookie—>瀏覽器管理cookie—>請求報文帶cookie—>伺服器根據cookie識別使用者
Web快取(代理伺服器)
- 類似計算機主存cache,命中率越高效率越高
- 與CDN(內容分發網路)結合
條件Get方法
- 響應頭帶了個修改時間引數,是代理伺服器用來更新快取的策略
檔案傳輸協議FTP
兩個並行TCP連線
- 控制連線:使用者標識、口令、操作命令,貫穿整個使用者會話期間
- 資料連線:傳輸檔案,一個檔案一個連線,非連續
- FTP的控制資訊是帶外傳送的(如上),HTTP屬於帶內傳送
電子郵件
SMTP
- 需要將二進位制多媒體資料編碼為ASCII碼,接收方再還原
- 不使用中間郵件伺服器傳送郵件,若接收方郵件伺服器沒開機,報文會保留在傳送方郵件伺服器上等待新的嘗試
與HTTP對比
- HTTP是拉協議,SMTP是推協議
- HTTP把每個物件封裝到自己的相應報文中,SMTP把所有報文放在一個報文中
郵件訪問協議
- POP3:非常簡單
- IMAP:有各種檔案操作
- 基於Web的電子郵件
過程舉例
- 牛嚴的代理(qq郵箱客戶端)—>SMTP/HTTP—>QQ郵箱伺服器—>SMTP—>清華郵箱伺服器—>POP3/IMAP/HTTP—>殷人昆的代理(清華郵箱Web端)
DNS:因特網的目錄服務
DNS提供的服務
- 主機名—>IP地址轉換的目錄服務
- DNS(域名系統) = DNS伺服器 + DNS協議 。 DNS協議執行在UDP上,53號埠
- 通常由其他應用層協議使用,包括HTTP、SMTP、FTP
- 主機別名
- 郵件伺服器別名,允許一個公司的郵件伺服器和Web伺服器使用相同主機名
- 負載分配,一個站點若有多臺伺服器(多IP地址),DNS伺服器迴圈回答這些地址
DNS工作機理
-
分散式、層次資料庫
- 層次結構
- 根DNS伺服器:13個根伺服器(群),世界各地
- 頂級域(DNS)伺服器:com/org/edu/uk/cn,由世界各公司維護
- 權威DNS伺服器:自己維護,或儲存在某服務提供商的一個權威伺服器中
- 本地DNS伺服器:當主機發出DNS請求時,先發往本地伺服器,若無快取,轉發到DNS伺服器層次結構中的根DNS伺服器,迭代返回各層次DNS伺服器地址,最後才能直接查詢主機名對應的IP地址
- 遞迴查詢、迭代查詢,通常從請求主機到本地DNS伺服器的查詢是遞迴的,其餘的查詢是迭代的
- 層次結構
-
DNS快取
- 允許本地DNS繞過查詢鏈中的根DNS伺服器
- 有快取時間
-
DNS記錄和報文
- 資源記錄(如果你在阿里的萬網上註冊一個域名,是需要這個配置的)
- A:主機名-IP地址,如(relay1.bar.foo.com, 145.37.93.126, A)
- NS:域名-DNS伺服器主機名, 如(foo.com, dns.foo.com , NS)
- CNAME:別名-其他服務規範主機名,如( foo.com, relay1.bar.foo.com, CNAME)
- MX:別名-郵件伺服器規範主機名(foo.com, mail.bar.foo.com, MX)
- DNS報文
- 查詢報文
- 回答報文
- 在DNS資料庫中插入記錄
- 向某註冊登入機構註冊域名時(如萬網),需要提供基本和輔助權威DNS伺服器的名字和IP地址
- 資源記錄(如果你在阿里的萬網上註冊一個域名,是需要這個配置的)
安全性
- DDoS(分散式拒絕服務)頻寬泛洪攻擊:向處理如.com域的域名伺服器傳送大量DNS請求,使得大部分合法請求無法獲得響應
- DNS毒害(汙染):給你返回假的或不能用的IP地址。比如中國的『牆』。所以如果你能拿到google的當前IP地址(百度搜的到),手動在hosts裡配置,是可以做到直接訪問谷歌伺服器的。說到翻牆,一般大家都是用某種方法配置一臺海外伺服器當做中轉(國家一般不牆這種個人伺服器),來訪問牆外伺服器的,比如shadowsocks,shadowrocket之類的軟體可以用來配置中轉伺服器。
- DNS反射攻擊:請求中冒充目標主機源地址,大量請求DNS伺服器,DNS就大量向源地址主機傳送回答,淹沒目標主機
P2P應用
P2P檔案分發
- 在P2P檔案分發中,每個對等方能重新分發它所有的該檔案的任何部分,可以協助伺服器分發
-
P2P體系結構的擴充套件性
- 最小分發時間,對等方N越大,P2P的最小分發時間越小
- 對等方除了是位元的消費者外還是他們的重新分發者
-
BitTorrent(沒錯就是你們老用的種子)
- P2P檔案共享協議,參與一個特定檔案分發的所有對等方結合被稱為一個洪流(torrent),在一個洪流的對等方彼此下載等長度的檔案塊,可以隨時離開洪流,也可繼續向其他對等方上載
- Alice加入某洪流時,會在追蹤器裡進行註冊,週期性通知追蹤器它仍在洪流中。
- 洪流隨機從參與對等方的結合中選擇一個子集,將他們的IP地址發給Alice,Alice維護這張對等方列表,檢視與所有對等方建立並行的TCP連線。
- Alice週期詢問每個鄰近對等方(連上的)他們有的檔案塊列表,她隨時知道鄰居有哪些檔案塊
- Alice使用最稀缺優先技術,首先請求那些鄰居們副本數量最少的塊,使該檔案塊迅速分發,以均衡每個塊在洪流中的副本數量
- BitTorrent使用一種演算法,Alice優先從像她傳時速度最快的鄰居(4個,每10s修改一次)那裡獲取檔案塊。
- 每過30s,Alice也要隨機選擇另外一個對等方Bob,向他傳送塊。若Alice是Bob最快的前四快,Bob也是Alice的前4快,則Bob和Alice互相傳送資料。
- 每過30s換一個新的物件,互相交換資料(一報還一報),為了使對等方能夠找到彼此協調的速率上傳
-
BitTorrent其他機制和變種
- 片、流水線、隨機優先選擇、殘局模型、反怠慢等機制
- 變種:P2P直播流式應用,如PPLive和PPstream
分散式雜湊表(DHT)
- 分散式、P2P版本的key-value資料庫,在大量對等方上儲存key-value值(鍵值對)
- 分散式資料庫用來定位擁有某key-value的對等方,然後向查詢方返回該鍵值對
- 環形DHT、對等方擾動(瞭解即可)
相關文章
- 計算機網路自頂向下方法:第二章 應用層 課後複習題計算機網路
- 《計算機網路:自頂向下方法》合集前言計算機網路
- 計算機網路自頂向下方法:第三章 運輸層計算機網路
- 計算機網路自頂向下《第六版》(一)計算機網路
- 計算機網路 自頂向下 第6章 鏈路層和區域網(上)讀書筆記計算機網路筆記
- 計算機網路:自頂向下方法(原書第6版)計算機網路
- 計算機網路 -- 應用層計算機網路
- 計算機網路--應用層計算機網路
- 計算機網路 - 應用層計算機網路
- 計算機網路自頂向下方法:第五章 網路層:控制平面 課後複習題計算機網路
- 《計算機網路-自頂向下的方法》第三章-運輸層-閱讀筆記計算機網路筆記
- 計算機網路自頂向下方法:第四章 網路層:資料平面 課後複習題計算機網路
- 計算機網路-應用層筆記計算機網路筆記
- 計算機網路自頂向下方法:第六章: 鏈路層和區域網 課後複習題計算機網路
- 計算機網路自頂向下方法:第一章 計算機網路和因特網 課後複習題計算機網路
- 從業務到技術——自頂向下網路設計
- 計算機網路之網路層計算機網路
- 計算機網路知識持續構建(二)——應用層計算機網路
- 《計算機網路》第七章:應用層(The Application Layer)計算機網路APP
- 計算機網路之網路介面層計算機網路
- 計算機網路總結(網路層)計算機網路
- 計算機網路(二)物理層計算機網路
- 計算機網路之物理層計算機網路
- 計算機網路的物理層計算機網路
- 計算機網路 | 資料鏈路層計算機網路
- 計算機網路——資料鏈路層計算機網路
- 計算機網路之傳輸層計算機網路
- 計算機網路之運輸層計算機網路
- 計算機網路七層協議計算機網路協議
- 《計算機網路》傳輸層 (1)計算機網路
- 計算機網路(四)傳輸層計算機網路
- 計算機網路(一):網路層次劃分計算機網路
- 計算機網路之資料鏈路層計算機網路
- 計算機網路層次與對應協議的理解計算機網路協議
- 程式設計中的自頂向下設計思想程式設計
- 自頂向下 | TCP擁塞控制TCP
- 計算機網路實驗4:鏈路層分析與組網計算機網路
- 漫談計算機網路:應用層 ----- 從DNS域名解析到WWW全球資訊網再到P2P應用計算機網路DNS