網(wǎng)絡分層(由下到上):物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層、應用層。
重點在: 物理層、數(shù)據(jù)鏈路層(這兩層需要了解基本的原理)、網(wǎng)絡層、傳輸層(這兩層需要了解功能作用,原理和相關的一些協(xié)議)、應用層(http協(xié)議)。
開始之前先跟大家說一下協(xié)議,很多人不知道協(xié)議是什么,尤其是剛接觸這方面東西的時候,一聽協(xié)議,感覺很吊的樣子,但是又不知其所云,其實,協(xié)議可以理解為:一個雙方通信需要共同遵守的規(guī)范。
記住,在網(wǎng)絡分層協(xié)議中,所有下層的協(xié)議的作用就是為了上層服務,謹記!
接下來,我跟大家一一道來,首先登場的是物理層。
一.物理層
作用:比特流與電子信號的轉換。例如光纖通過光的亮與滅的形式進行傳遞,進而轉換為比特流。
這一層主要就是跟硬件打交道,這一層也是所有上層的基礎。
二.數(shù)據(jù)鏈路層
作用:通過介質(zhì)相互連接設備之間數(shù)據(jù)傳輸規(guī)范。
數(shù)據(jù)鏈路層強調(diào)的是一種傳輸規(guī)范,這是指什么呢?說白了,就是指每次傳輸?shù)淖畲笕萘浚ㄗ畲髠鬏攩卧?,?shù)據(jù)組織結構(以太網(wǎng)幀的概念)、傳輸?shù)哪康牡氐取?/p>
MAC地址:燒錄在網(wǎng)卡ROM中的一串數(shù)字,長度48bit。
分組交換:較大數(shù)組分割為較小數(shù)組,依次發(fā)送。
原因是數(shù)據(jù)鏈路層有不定長度的最大傳輸單元。
以太網(wǎng)的幀的概念:前導碼(8字節(jié))+本體(首部+數(shù)據(jù)+FCS)

交換機:在數(shù)據(jù)鏈路層工作的網(wǎng)絡設備。
原理:依靠MAC地址決定向哪個端發(fā)送數(shù)據(jù),需要“轉發(fā)表”。
轉發(fā)表是交換機自動學習得到的。
三.網(wǎng)絡層(拿IP協(xié)議舉例)
作用:保證不同數(shù)據(jù)鏈路層下數(shù)據(jù)的可達性。
ARP協(xié)議(獲取MAC地址)和ICMP協(xié)議(數(shù)據(jù)發(fā)送異常通知)
作用:識別對端信息的地址。地址為32位正整數(shù)表示,分為四個部分,每個部分由8位整數(shù)組成。說白了,是識別要傳輸目的地的地址。
每位對應十進制范圍:0-255。
IP地址:網(wǎng)絡標識(區(qū)分網(wǎng)段)+主機標識(區(qū)分同一網(wǎng)段下的主機)
[注]:網(wǎng)絡標識和主機標識是為了尋址而發(fā)明。
IP分類:A類、B類、C類、D類。
A類:
第一位為“0”的地址,前8位為網(wǎng)絡標識,0.0.0.0-127.0.0.0是A類IP地址的理論范圍。
B類:
前兩位為“10”的地址,前16位是網(wǎng)絡標識,128.0.0.0-191.255.0.0,主機標識16位。
C類:
前三位為“110”的地址。前24位網(wǎng)絡標識,192.0.0.0-223.255.255.0,主機標識為8位。
D類:
前4位為“1110”的地址。網(wǎng)絡標識為32位,沒有主機標識。
子網(wǎng)掩碼:
IP地址長度僅可表達43億左右的主機數(shù)目,(區(qū)分網(wǎng)絡標識和主機標識)共32位(一段連續(xù)的0和一段連續(xù)的1)組成,1的長度就表示網(wǎng)絡標識的長度。
子網(wǎng)掩碼的作用是區(qū)分IP地址是否在同一子網(wǎng)內(nèi)。
路由控制:
分組數(shù)據(jù)發(fā)送到目標地址的功能,持有路由控制表,它在路由控制表中查找目標IP地址對應的下一個路由器地址。
源主機--->網(wǎng)卡--->路由器1(路由器控制表)--->路由器2--->網(wǎng)卡--->目標主機
IP報文分割重組(分片、重組)
IP協(xié)議最大包為2的16次冪,等于65536.
接下來介紹幾個IP協(xié)議相關的協(xié)議或技術:
DNS解析:
將域名轉化為IP地址(域名也是分層處理請求的,每一層都有對應的DNS服務器)。
ARP技術(類似一種廣播):
通過目標IP地址,定位下一個接收數(shù)據(jù)包的網(wǎng)絡設備(主機或路由器)的MAC地址。
在數(shù)據(jù)鏈路層發(fā)送廣播,如果沒有ARP技術,就沒有辦法穿透中間的服務器(ARP請求+ARP應答)。
NAT和NAPT技術
NAT:用于將局域網(wǎng)中的私有地址轉換為全局IP地址的技術。
每個路由器只有一個對外的全局IP地址,如果一個內(nèi)網(wǎng)主機都向外通訊,怎么辦?
就要使用到NATP技術,可轉為TCP和UDP端口號。
不同的內(nèi)網(wǎng)IP被轉換成同一個公共的IP,但是NAPT技術可以使用不同的端口加以區(qū)分。
NAT和NAPT都需要路由器內(nèi)部維護一張轉換表。
舉例:TCP首次SYN時,會生成這個表,關閉連接時會發(fā)出FIN包,收到這個包應答時轉換表會被刪除。
四.傳輸層
TCP和UDP
定義:實現(xiàn)應用程序之間的通信。
TCP:面向有連接的協(xié)議,建立連接需要3步,關閉連接需要4步。
具備數(shù)據(jù)重傳、流量控制等功能,能正確處理丟包功能并有效利用寬帶。
UDP:比較適合做實時視頻和音頻,效率比TCP高。
TCP有5個要素:源IP地址、目標IP地址、源端口號、目標端口號、協(xié)議號,同一臺機器的端口號可以區(qū)分為不同的應用程序。
UDP首部:

校驗和=源IP地址(IP協(xié)議首部)+目標IP地址(IP協(xié)議首部)+源端口+目標端口
包長度=首部長度+數(shù)據(jù)長度
TCP首部:
應該可以從下圖看出來,TCP的首部比UDP的首部要復雜的多,所以也一定會影響的傳輸?shù)乃俣群托省?/p>

簡單介紹一下首部的相關參數(shù):
序列號:發(fā)送數(shù)據(jù)的位置
確認應答號:下一次應用接收到的數(shù)據(jù)的序列號
數(shù)據(jù)偏移:TCP首部的長度,單位為4字節(jié)。
控制位:長度為8位。
窗口大?。河糜诒硎緩膽鹛栭_始能夠接受多少個8位字節(jié)。
緊急指針:盡在URG控制位為1時有效,表示緊急數(shù)據(jù)的末尾在TCP數(shù)據(jù)部分中的位置。
接下來最重要的一個技術點來了:
TCP握手

以下是通俗話解釋連接和斷開過程:
建立連接的過程:
1.client:我要建立連接。
2.server:我知道你要建立連接了,我這邊沒問題。
3.client:我了解你知道我要建立連接了,開始通信吧!
結束連接的過程:
1.client:我要關閉連接了
2.server:你那邊可以關閉了
3.server:我這邊也準備關閉了
4.client:我已關閉,你可以關閉了
[注]:連接是雙方面的,所以關閉也是要自行關閉的。
TCP丟包和重發(fā)機制
數(shù)據(jù)包重發(fā):保證ACK的值和發(fā)送方下次發(fā)送數(shù)據(jù)包的序列號相等。

接收方通過TCP首部中的控制位SYN判斷這個數(shù)據(jù)是否曾經(jīng)接收過?接收過就會舍棄。
重傳超時時間(RTO)動態(tài)改變,略大于連接往返時間(RTT),RTO有自己的估算公式
TCP窗口:
定義:無需等待ACK,可以發(fā)送的最大數(shù)量。(窗口大小由接收端控制)
作用:為了解決發(fā)送數(shù)據(jù)包后,直至ACK確認返回之前,發(fā)送端都無法在進行發(fā)送的問題。
流量控制:
定義:接收端有緩存區(qū)數(shù)據(jù)溢出(如果窗口較大)
通俗一點的意思就是讓發(fā)送方慢一點,免得接收方接收不過來。
慢啟動:
TCP會慢啟動算法得出窗口的大小,對發(fā)送數(shù)據(jù)量進行控制。
發(fā)送方擁有一個擁塞窗口,對發(fā)送的數(shù)據(jù)量進行控制。
TCP協(xié)議中的窗口是指:發(fā)送方和接收方窗口中的最小值。
慢啟動過程:
1.通訊開始,發(fā)送方窗口為1。每收到一個ACK確認后,擁塞窗口翻倍。
2.由于指數(shù)級增長快,很快就會出現(xiàn)確認包超時。
3.設置慢啟動閾值,它的值為擁塞窗口的大小的一半。
4.將擁塞窗口大小設置為1,重新進入慢啟動過程。
5.慢啟動閾值存在,當擁塞窗口大小達到閾值時,不再翻倍,而是線性增長。
6.隨窗口大小的不斷增長,可以收到三次重復的ACK,進入“快速重發(fā)”階段。
7.TCp將慢啟動閾值設置為當前擁塞窗大小的一半,再將擁塞窗口大小設成閾值大小。
8.擁塞窗口又會線性增加,直至下一次出現(xiàn)3次ACK或者超時。