計算機網絡入門基礎篇:
https://zhuanlan.zhihu.com/p/22516664
互聯網協議入門(1、二)阮一峯
http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.htmlhtml
五(七)層互聯網協議(計算機網絡)深刻淺出,看完必懂【圖文一】2、三
https://www.jianshu.com/p/6ee3ee9c3cfdnode
https://pan.baidu.com/s/1i5vOMkX
裏面有套華爲工程師的講解,感受不錯算法
https://www.cnblogs.com/alva-rabbit-hole/p/10081169.html緩存
計算機網絡學習筆記
該學習筆記以問題爲導向,經過問題引導閱讀,進而豐富本身的知識體系。服務器
1.計算機網絡的體系結構?
官方指定了OSI體系結構,包括了七層:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。網絡
可是因爲種種緣由,OSI並無成爲實際的網路體系結構。目前使用的是TCP/IP結構,該結構將其分爲四層,將物理層、數據鏈路層做爲一層,上面的依次是網路層、傳輸層、應用層。socket
2. 網絡層各層的做用
1.傳輸層性能
爲應用進程提供端到端的邏輯通訊,即實現應用進程的複用和分用。爲了使傳輸層識別不一樣的應用進程,規定了應用進程的端口號,系統端口號的範圍是0~1024,也就是爲何node不能直接監聽該範圍的端口號。同時,也進行了差錯控制,傳輸層的差錯控制不只包括首部信息,並且包含數據部分。學習
2.網絡層網站
提供主機之間的邏輯通訊。 與傳輸層的區別:網絡層提供主機之間的邏輯通訊,而傳輸層提供進程之間的邏輯通訊
3. 傳輸層介紹
3.1 TCP、UDP的區別
a) UDP
- 無鏈接的傳輸層協議
- 傳輸速度快,盡最大努力交付,沒有擁塞控制
- 首部信息開銷小,僅須要8個字節,而TCP則須要20個。分別爲源端口號、目的端口號、長度、校驗和
b) TCP
- 面向鏈接的傳輸層協議
- 每一個TCP鏈接只有兩個端點:端點={IP:端口號}
- 可靠傳輸
- 流量控制、擁塞控制
3.2 傳輸層的可靠傳輸
理想的傳輸條件有兩個:傳輸過程不出啊先差錯;無論發送速度多快,接收方都可即便接收。可是現實狀況並不知足這兩個條件。
辦法:中止等待協議:每次發送完一個分組後,接收方發出確認信息,可是這樣作會使得信道使用率不高。
連續ARQ協議:發送方存在一個發送窗口,每收到一個確認信息,窗口就向前移動一個,可是每每採用累積確認的方式。
4物理層
做用:在計算機之間進行比特流傳入。屏蔽到傳輸媒介和通訊手段的差別,使數據鏈路層無需考慮這些問題。同時計算機多采用並行傳輸,而通訊線路多采用串行傳輸,所以物理層還要完成傳輸方式的轉換。主要任務就是確認與傳輸媒介的接口的特徵。
5.數據鏈路層
- 封裝成幀: IP數據包+首部和尾部,用於幀的定界
- 做用:封裝成幀、透明傳輸、差錯控制
- 協議: PPP、廣播
- 局域網的數據鏈路層拆分紅兩個子層: 邏輯鏈路控制(LLC)、媒體接入控制(MAC),可是不少廠商生產的適配器僅裝有MAC協議,而沒有LLC協議
- 在局域網中,硬件地址又稱爲物理地址,或MAC地址
- 網橋工做在數據鏈路層,具備過濾幀的效果,根據MAC幀的目的地址對收到的幀進行轉發,用於在數據鏈路層拓展局域網
- 適配器就是如今說的網卡
###6. 網絡層
- 網絡層只提供簡單靈活的、無鏈接的、盡最大努力交付的數據報服務
- IP協議是網絡層協議,還有三個配套的協議: 地址解析協議(ARP)、網際控制報文協議(ICMP)、網際組管理協議(IGMP)
- 網絡鏈接起來須要一些中間設備: 物理層(轉發器)、數據鏈路層(網橋或橋接器)、網絡層(路由器)、網路層以上的中繼系統(網關)
- 因爲歷史緣由,將網絡層使用的路由器成爲網關
- 路由器僅根據目的主機所鏈接的網絡號來轉發分組(而不考慮目的主機號),每一個路由器都有一個兩個或兩個以上的IP地址,路由器的每個接口都有一個不一樣網絡號的IP地址。
- 路由器的做用是鏈接不一樣的網絡,另一個是路由尋址。
- 路由器只根據目的站的IP地址的網絡號進行路由選擇
- IP層屏蔽了下層複雜的細節,使用統一的、抽象的IP地址研究主機與主機、主機與路由器之間的通訊
- ARP:每一個主機都設有一個ARP高速緩存(ARP cache),若是不存在,則進行廣播,找到後返回ARP響應,獲得目的主機的物理地址
- 一個IP數據包由首部和數據兩部分組成
- 由於最大傳輸單元的限制,數據須要進行分片,片偏移以八個字節爲偏移單元
- 根據網絡地址進行網路尋址
- 在單位內部進行子網劃分,對外仍表現爲沒有劃分子網的網絡
- ICMP(Internet Control Message Protocol),用於提升IP數據報交付成功的機會,容許主機或路由器報告差錯狀況和提供有關異常狀況的報告,不是高層協議,而是IP層的協議。ICMP報文做爲IP層數據報的數據
- ICMP報文分爲兩種: ICMP差錯報告報文和ICMP詢問報文
- ICMP的應用:PING是應用層直接使用網絡層,使用了ICMP回送請求與回送回答報文
- 路由尋址時,採用分層次的路由選擇協議
- 虛擬專用網可使用本地地址,只能用於一個機構的內部通訊,而不能用於和因特網上的主機通訊。在因特網中的全部路由器對目的地址是專用地址的數據包一概不進行轉發。
###7.傳輸層
- 做用:a.爲應用進程提供端到端的邏輯通訊;b.對收到的報文進行差錯檢測
- UDP傳輸前不須要創建鏈接,是不可靠傳輸;TCP提供面向鏈接的服務,提供可靠的、面向鏈接的運輸服務
- 進程在計算機中是經過進程標示符(PID)來標識的,不一樣操做系統是不一樣的,進程的建立和撤銷都是動態的,所以爲了表示應用進程,採用了端口號
- 端口號是一個16位,只具備本地意義,只是爲了標識本計算機應用層中得各個進程。
- 端口號分爲三類:熟知端口號(0-1024)、登記端口號(1024-49151)、客戶端口號(49152-65535)
- UDP:與IP數據包相比,僅增長了端口功能、差錯校驗。
- UDP特色:無鏈接、最大努力交付、不可靠交付、沒有擁塞控制、首部開銷小8.
- UDP數據報:UDP首部(8個字節) + 數據
- TCP:面向鏈接、可靠交付、全雙工通訊、面向字節流
- TCP:每條TCP鏈接有兩個端點,端點叫作套接字(socket)或插口,端口號 + IP地址 = 套接字
- 可靠傳輸–中止等待協議:確認和重傳機制,能夠在不可靠的傳輸網絡中實現可靠通訊
- 連續ARQ協議:累計確認,對按需到達的最後一個分組發送確認
- TCP:每端須有兩個窗口,一個發送窗口,一個接收窗口,確認是依據序號
- TCP:TCP首部至少須要20個字節,還包含可變部分
- TCP可靠傳輸的實現:以字節爲單位的滑動窗口
- 發送緩存:準備發送的數據、已發出但還沒有收到確認的數據;接收緩存:按序到達,還沒有被讀取的數據、不按序到達的數據
- 流量控制:數據發送過快,接收方就可能來不及接收,熬成數據的丟書,利用滑動窗口機制能夠方便地在TCP鏈接上實現流量控制。也就是發送方的發送速度不要太快,要讓接收方來得及接收
- 擁塞控制:對資源的需求量 > 可用資源
- 擁塞控制 vs 流量控制:擁塞控制是一個全局性的過程,涉及到全部的主機、全部路由器,以及與下降網絡傳輸性能有關的全部因素;流量控制每每指發送端和接收端之間的點對點通訊量的控制
- 擁塞控制的方法:a.慢開始 逐步增大發送端的擁塞窗口,使分組注入到網絡的速度更加合理,是加倍增長 b. 擁塞避免算法:擁塞窗口緩慢增大,按照現行規律緩慢增加。總的來講就是,開始擁塞窗口較小,而後先按指數速度增加,而後再按照現行速度增加,當出現擁塞時,當即減少擁塞窗口的大小。
- 擁塞控制方法2:快重傳和快恢復。a.快重傳—接收方每收到一個失序的報文段,就當即發出重複確認,快重傳bong非取消重傳計時器,而是在某些狀況下可儘早地重傳丟失的報文段
- TCP的運輸鏈接分爲三個階段:鏈接創建、數據傳輸、鏈接釋放
- TCP鏈接的創建:SYN:鏈接請求和鏈接接受報文,ACK:確認號。經過三次握手,創建TCP鏈接
- TCP鏈接釋放:FIN=1:鏈接釋放報文首部。須要通過兩次的報文傳輸,才能作到鏈接的釋放。
###應用層
- 應用層:規定應用在通訊時所遵循的協議
- 域名:採用層次樹狀結構的命名方法,根域名服務器是樹狀的,根域名服務器、頂級域名服務器、權限域名服務器、本地域名服務器
- FTP:21是鏈接時使用的端口號;20是數據發送使用的端口號
- HTTP協議自己是無狀態的,也是無鏈接的,雖然TCP是面向鏈接的。HTTP/1.1使用持續鏈接,服務器在發送響應後鏈接會保持一段時間
- HTTP報文格式:開始行、首部行、實體部分
- 搜索引發:全文搜索會採集頁面信息,而分類目錄搜索利用各網站向搜索引發提供信息
- 郵件協議:發送郵件SMTP,讀取郵件(POP三、IMAP)
- 大可能是操做系統使用系統調用在應用程序和操做系統之間傳遞控制權
- 應用進程須要獲取網絡資源,則能夠經過套接字來完成
- ICMP協議:因特網控制報文協議,是網絡層的一個子協議,用於IP地址與路由器之間傳遞控制信息,檢測網絡是否通暢
知識點
- 集線器:工做在物理層,做用:對接收到的信息進行整形放大,最後將放大的信號廣播到其餘全部端口
- 子網:子網的劃分是單位內部的事情,因此外部使用的是整個子網的路由器地址,也就是因此子網內主機對外共享一個網絡地址。這樣就存在這樣的問題:知道A的IP地址,子網掩碼,求A的網絡地址
- ARP:將IP地址和MAC進行轉換,數據鏈路、物理層是經過MAC地址進行轉發的。ARP有一個高速緩存,存儲這IP、MAC地址的映射關係,當存在就直接轉發,不存在就廣播尋找,不在同一個網絡上,就尋找路由器的mac地址,交付給該路由器,該路由器把分組交給下一個網絡。
- 電路交換 vs 分組交換: 電路交換–首先通訊雙方創建鏈接通道,在鏈接過程當中始終佔用着信道資源;分組交換:通訊前不須要先創建通訊路徑,將數據分爲較小的單元,
- 封裝成幀:在數據先後記入一個控制字符:SOH、EOT;透明傳輸:若是數據部分存在控制字符,則在其前面加上轉移字符ESC(字節填充)
- 路由表的內容:網絡地址、子網掩碼、下一條地址、花費、路由的服務質量、路由中須要過濾的出/入鏈接列表
- 路由器的分組轉發算法:a.根據IP數據報得出其網絡號,若是當前就是,則直接交付,b.根據路由表,交付給下一跳路由器;c.如路由表有一個默認路由,則數據報傳遞給默認路由。
- 使用UDP的應用層協議:DNS(域名解析服務)、SNMP(簡單網絡管理協議)、TFTP(簡單文件傳輸協議)、DHCP(動態主機設置協議)
- 應用層並非指運行在網絡上的某個特別應用程序,而是指爲用戶的應用進程提供的服務
- 網絡層不保證通訊的可靠,運輸層負責
- IGMP(網絡組管理協議):發送多播協議