圖解TCP/IP

# 圖解TCP/IP

標(biāo)簽(空格分隔): 2018招聘

---


##第1章 網(wǎng)絡(luò)基礎(chǔ)知識

###??

### 1.1 計算機(jī)出現(xiàn)的背景

* **主機(jī)**:TCP/IP中能夠設(shè)定IP地址的計算機(jī)叫做主機(jī)。

* **局域網(wǎng)v.s.廣域網(wǎng)**

? ? * 廣域網(wǎng)(Wide Area Network, WAN)

? ? * 局域網(wǎng)(Local Area Network, LAN)

###1.2 計算機(jī)與網(wǎng)絡(luò)發(fā)展的7個階段

* **計算機(jī)與網(wǎng)絡(luò)發(fā)展的7個階段**

? ? * 1 批處理(Batch Processing)

? ? * 2 分時系統(tǒng)(Time Sharing System,TSS):僅由終端訪問服務(wù)器計算機(jī),但是服務(wù)器計算機(jī)(此時其實(shí)還不能算作服務(wù)器)之間無法溝通

? ? * 3 計算機(jī)之間的通信:計算機(jī)之間由通信線路相連接,此時服務(wù)器計算機(jī)之間可溝通

? ? * 4 計算機(jī)網(wǎng)絡(luò)的誕生

? ? ? ? * 分組交換技術(shù)

? ? ? ? * 窗口系統(tǒng)

? ? * 5 互聯(lián)網(wǎng)的普及

? ? ? ? * 不僅能夠內(nèi)部互連

? ? ? ? * 而且能夠訪問全世界

? ? * 6 IP時代:以互聯(lián)網(wǎng)技術(shù)為中心的時代

? ? ? ? * 電話網(wǎng)->IP(Internet Protocol)網(wǎng)

? ? ? ? ? ? * IP網(wǎng)通過IP協(xié)議實(shí)現(xiàn)通信、播放的統(tǒng)一

? ? * 7 TCP/IP時代:從“單純建立連接“到“安全建立連接”

###1.3 協(xié)議

* **協(xié)議**

? ? * 協(xié)議:計算機(jī)之間通過網(wǎng)絡(luò)實(shí)現(xiàn)通信時事先達(dá)成的約定。

? ? * 協(xié)議的作用:不同設(shè)備或者結(jié)構(gòu)直接可以進(jìn)行通信。

? ? ? ? * 協(xié)議如同人與人之間講話

? ? ? ? * 例子:A,B,C三人聊天。A只能說漢語,B說英語,C都會。

? ? ? ? ? ? * 協(xié)議: 漢語、英語

? ? ? ? ? ? * 通信:聊天

? ? ? ? ? ? * 數(shù)據(jù):說話內(nèi)容

> **協(xié)議1:分組交換協(xié)議**

分組交換是指將大數(shù)據(jù)分割成一個個叫做**包(Packet)**的較小的單位進(jìn)行傳輸?shù)姆椒ā?/p>

這里的包,其實(shí)就是分組,一個個包就是一個個分組。

這里的包在發(fā)送的時候,為了告訴其他設(shè)備去哪里,需要給包加上“報文首部”。(類似于郵件寄送包裹的時候的收件人和寄件人的地址)

報文首部=源主機(jī)地址+目標(biāo)主機(jī)地址+分組序號+其他。(主機(jī)地址指IP地址)

###1.4 協(xié)議由誰規(guī)定

* 計算機(jī)通信的誕生及其標(biāo)準(zhǔn)化

> 發(fā)展伊始,各個公司的計算機(jī)系統(tǒng)所用采用的網(wǎng)絡(luò)結(jié)構(gòu)不同,支持的協(xié)議不同,導(dǎo)致不同廠商之間的計算機(jī)無法進(jìn)行正常通信,使得網(wǎng)絡(luò)設(shè)備的靈活性和可擴(kuò)展性很差。

不同廠商之間的協(xié)議就像是方言,互相無法交流,但是TCP/IP則像普通話,使得網(wǎng)絡(luò)設(shè)備能夠交流無障礙。

* 協(xié)議標(biāo)準(zhǔn)化

? ? * OSI標(biāo)準(zhǔn):由ISO制定(國際標(biāo)準(zhǔn)化組織)

? ? * TCP/IP協(xié)議:由IETF制定(業(yè)界標(biāo)準(zhǔn))

###1.5 **協(xié)議分層與OSI參考模型**

* 協(xié)議的分層

? ? * OSI參考模型將通信協(xié)議中必要的功能分成7層。

? ? * 每個分層接收下一層提供的特定服務(wù),同時負(fù)責(zé)為上一層提供特定服務(wù)。

? ? * 上下層之間進(jìn)行交互遵循的約定叫做**“接口”**;同一層之間進(jìn)行交互遵循的約定叫做**“協(xié)議”**。

* **OSI參考模型**

|序號|分層|功能|

|:-:|:---:|:---|

|7|應(yīng)用層|針對特定應(yīng)用的協(xié)議|

|6|表示層|數(shù)據(jù)格式轉(zhuǎn)換/標(biāo)準(zhǔn)化:設(shè)備本身固有數(shù)據(jù)格式與網(wǎng)絡(luò)標(biāo)準(zhǔn)數(shù)據(jù)格式的轉(zhuǎn)換|

|5|會話層|通信**管理**。負(fù)責(zé)建立和斷開通信連接(數(shù)據(jù)流動的邏輯通路)|

|4|傳輸層|管理節(jié)點(diǎn)之間的數(shù)據(jù)傳輸|

|3|網(wǎng)絡(luò)層|地址管理與路由選擇|

|2|數(shù)據(jù)鏈路層|互連設(shè)備之間傳送和識別數(shù)據(jù)幀(將0 1序列劃分為具有意義的數(shù)據(jù)幀)|

|1|物理層|界定連接器與網(wǎng)線的規(guī)格|

###1.6 OSI參考模型分析

*? 傳輸層以上:**表示層**主要負(fù)責(zé)數(shù)據(jù)的表示,即數(shù)據(jù)的標(biāo)準(zhǔn)化,**會話**層主要負(fù)責(zé)管理連接,即管理何時建立連接,何時發(fā)送數(shù)據(jù)等,但不具備實(shí)際的傳輸數(shù)據(jù)的功能。

? ? > 注意:**會話層**負(fù)責(zé)決定建立和斷開連接的時機(jī),**傳輸層**負(fù)責(zé)進(jìn)行實(shí)際的建立和斷開的操作

*? 會話層以下:主要進(jìn)行數(shù)據(jù)的傳輸。

? ? >>**網(wǎng)絡(luò)層**負(fù)責(zé)端到端的數(shù)據(jù)傳輸,但是在傳輸過程中,可能出現(xiàn)數(shù)據(jù)的丟失等問題,此時,需要**傳輸層**負(fù)責(zé)提供正確傳輸數(shù)據(jù)處理。

? ? > **網(wǎng)絡(luò)層**與**數(shù)據(jù)鏈路層**都是基于目標(biāo)地址將數(shù)據(jù)發(fā)送給接收端的,但是網(wǎng)絡(luò)層負(fù)責(zé)將整個數(shù)據(jù)發(fā)送到最終地址,而數(shù)據(jù)鏈路層則負(fù)責(zé)發(fā)送其中的一個分段內(nèi)的數(shù)據(jù)。

* 注:**MAC地址**:物理地址或硬件地址(Media Acess Control)


###1.7傳輸方式的分類

* 面向有連接與面向無連接

? ? * 面向有連接:類似于打電話,必須建立通信連接;不一定分組交換

? ? * 面向無連接:類似于寄包裹,不管對方是否存在,都可以自由的寄出;多為分組交換

* 電路交換與分組交換

* 根據(jù)接收端數(shù)量分為:

? ? * 單播(Unicast):例如早期電話

? ? * 廣播(Broadcast):例如電視播放

? ? * 多播(Muticast):與廣播類似,但是要限定某一組主機(jī)作為接收端。例如電視會議。

? ? * 任播(Anycast): 例如DNS根域名解析服務(wù)器

###1.8 地址

* 地址具有唯一性

* 地址具有層次性

? ? * MAC地址不具有層次性

? ? * IP地址具有層次性

? ? ? ? * IP = 網(wǎng)絡(luò)號+主機(jī)號(網(wǎng)絡(luò)號由子網(wǎng)掩碼標(biāo)識出)

? ? ? ? > MAC尋址:參考地址轉(zhuǎn)發(fā)表(自學(xué)自動生成)

? ? ? ? ? IP地址尋址:參考路由控制表(根據(jù)路由協(xié)議自動生成)

###1.9 網(wǎng)絡(luò)的構(gòu)成要素

* 搭建網(wǎng)絡(luò)的主要設(shè)備及其作用

|設(shè)備|作用|

|:--|:--|

|網(wǎng)卡(NIC)|使計算機(jī)連網(wǎng)的設(shè)備|

|中繼器(Repeater)/集線器(多口中繼器)|物理層上延長網(wǎng)絡(luò)的設(shè)備|

|網(wǎng)橋(Brige)/2層交換機(jī)|數(shù)據(jù)鏈路層轉(zhuǎn)發(fā)數(shù)據(jù)幀的設(shè)備,依據(jù):MAC地址|

|路由器(Router)/3層交換機(jī)|網(wǎng)絡(luò)層轉(zhuǎn)發(fā)分組數(shù)據(jù)的設(shè)備,依據(jù):IP地址|

|網(wǎng)關(guān)(Gateway)|轉(zhuǎn)換協(xié)議的設(shè)備,負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),傳輸層及以上|

|4~7層交換機(jī)|負(fù)載均衡器;進(jìn)行寬帶控制;傳輸層及以上|

例:圖1.49

> **集線器vs.交換集線器**

集線器:是多口中繼器,工作在物理層

交換集線器:是多口網(wǎng)橋,工作在數(shù)據(jù)鏈路層,也稱為Hub

>

> 實(shí)現(xiàn)負(fù)載均衡:

1.**4~7層交換機(jī)**:負(fù)載均衡器;進(jìn)行寬帶控制

2.**循環(huán)復(fù)用DNS技術(shù)**:為多個IP地址配置同一個域名。

* 概念:

? ? * 傳輸速率:亦稱為帶寬

? ? ? ? * 指的是數(shù)據(jù)傳輸過程中,2個設(shè)備之間數(shù)據(jù)流動的物理速度稱為傳輸速率。

? ? ? ? * 傳輸速率指的是單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量的多少。

? ? ? ? * 單位是bps(Bits Per Second,每秒比特數(shù))

? ? * 吞吐量:

? ? ? ? * 主機(jī)之間實(shí)際的傳輸速率

? ? ? ? * 單位是bps(Bits Per Second,每秒比特數(shù))

? ? ? ? * 衡量帶寬,也衡量主機(jī)的CPU處理能力、網(wǎng)絡(luò)擁堵程度、報文中數(shù)據(jù)字段占有份額等信息。


###1.10 現(xiàn)代網(wǎng)絡(luò)實(shí)態(tài)

* 網(wǎng)絡(luò)構(gòu)成

? ? * 核心網(wǎng)(骨干網(wǎng)) ->接入層(匯聚層)

* 物理線路與邏輯信道

? ? * 邏輯信道相當(dāng)于物理線路的虛擬化

* 虛擬化與云

##第二章 TCP/IP基礎(chǔ)知識

###2.1 TCP/IP出現(xiàn)的背景及其歷史

* 分組交換技術(shù)

> 使多個用戶同時共享一條通信線路,提高了線路使用效率,降低了搭建線路的成本。

###2.2 TCP/IP的標(biāo)準(zhǔn)化

###2.3 互聯(lián)網(wǎng)基礎(chǔ)知識

* 互聯(lián)網(wǎng)定義

? ? * Internet:網(wǎng)際網(wǎng)

? ? * The Internet:互聯(lián)網(wǎng)

* 互聯(lián)網(wǎng)的結(jié)構(gòu)

? ? * ISP:Internet Service Provider

? ? * IX:Internet Exchange

? ? * NOC:Network Operation Center

###2.4 **TCP/IP協(xié)議分層模型**

|序號|分層|功能|

|:-:|:---:|:---|

|4|應(yīng)用層||

|3|傳輸層||

|2|網(wǎng)絡(luò)層||

|1|網(wǎng)際接口層||

* 網(wǎng)際接口層

* 網(wǎng)絡(luò)層

? ? * IP協(xié)議: 將數(shù)據(jù)從源IP地址發(fā)送到目標(biāo)IP地址。分組交換的一種協(xié)議,但是不具有重發(fā)機(jī)制。即使分組數(shù)據(jù)包未到達(dá)對端主機(jī)也不會重發(fā)。數(shù)據(jù)非可靠傳輸協(xié)議。

? ? * ICMP:IP數(shù)據(jù)包在發(fā)送過程中,發(fā)生異常導(dǎo)致無法到達(dá)對端目標(biāo)IP地址時,需要給發(fā)送端發(fā)送一個異常通知。ICMP就是為了這個功能設(shè)計的。他也可以用來診斷網(wǎng)絡(luò)的健康狀況(如`ping`).

? ? * ARP(Address Resolution Protocol):從分組數(shù)據(jù)包的IP地址中,解析出MAC地址。

* 傳輸層

? ? * TCP

? ? ? ? * 面向連接的可靠的傳輸協(xié)議

? ? ? ? * 正確處理傳輸過程中的丟包、傳輸順序混亂等情況

? ? ? ? * 有效利用帶寬,緩解網(wǎng)絡(luò)擁堵。

? ? ? ? * 不利于視頻會議。

? ? * UDP

? ? ? ? * 面向無連接的不可靠傳輸協(xié)議

* 應(yīng)用層

? ? * Email

? ? ? ? * SMTP:Simple Mail Tranfer Protocol.

? ? ? ? * MIME協(xié)議:將電子郵件從文本格式擴(kuò)展到多格式(表示層)

? ? * 文件傳輸

? ? ? ? * FTP: File Tranfer Protocol.

? ? ? ? ? ? * 二進(jìn)制

? ? ? ? ? ? * 文本格式

? ? ? ? * FTP需要建立2個TCP連接

? ? ? ? ? ? * 控制連接:發(fā)出傳輸請求

? ? ? ? ? ? * 數(shù)據(jù)連接:實(shí)際傳輸數(shù)據(jù)時。

? ? ? ? ? ? ? ? * 這2個連接都是會話層

? ? * 遠(yuǎn)程登陸

? ? ? ? * TELNET

? ? ? ? * SSH

? ? * 網(wǎng)絡(luò)管理

? ? ? ? * SNMP:Simple Network Management Protocol, 管理網(wǎng)絡(luò)


###2.5 TCP/IP分層模型與通信實(shí)例

|序號|分層|數(shù)據(jù)單位|地址|

|:-:|:---:|:---|---|

|1|數(shù)據(jù)鏈路層|數(shù)據(jù)幀|MAC地址:確定路由器|

|2|網(wǎng)絡(luò)層|數(shù)據(jù)報|IP地址:確定主機(jī)|

|3|傳輸層|數(shù)據(jù)段|端口號:確定應(yīng)用程序|

|4|應(yīng)用層|消息||

* 包:可以指數(shù)據(jù)幀、數(shù)據(jù)報、數(shù)據(jù)段、消息。

* 數(shù)據(jù)包的首部:包含的是協(xié)議的規(guī)范。

* 數(shù)據(jù)傳輸過程如圖2.18所示

* 數(shù)據(jù)包如圖2.19所示

##第三章 數(shù)據(jù)鏈路層

###3.1數(shù)據(jù)鏈路的作用

* 物理層vs.數(shù)據(jù)鏈路層的作用(續(xù))

? ? * 物理層:將電壓等模擬信號轉(zhuǎn)換為二進(jìn)制的0、1

? ? * 數(shù)據(jù)鏈路層:將二進(jìn)制的0、1封裝成幀,進(jìn)行傳輸。

* 數(shù)據(jù)鏈路層的相關(guān)技術(shù)

? ? * MAC尋址

? ? * 介質(zhì)共享

? ? * 非公有網(wǎng)絡(luò)

? ? * 分組交換

? ? * 環(huán)路檢測

? ? * VLAN(Virtual Local Area Network, 虛擬局域網(wǎng))

? ? * 以太網(wǎng)

? ? * WLAN(Wireless Local Area Network, 無線局域網(wǎng))

? ? * PPP(Point to Point Protocol, 點(diǎn)對點(diǎn)協(xié)議)

* 數(shù)據(jù)鏈路的段

* 網(wǎng)絡(luò)拓?fù)?/p>

? ? * 總線型

? ? * 環(huán)型

? ? * 星型

? ? * 混合型

###3.2數(shù)據(jù)鏈路的相關(guān)技術(shù)

* MAC尋址

? ? * 作用:MAC地址用于識別數(shù)據(jù)鏈路中互連的節(jié)點(diǎn)

? ? * 規(guī)范:

? ? ? ? * IEEE802.3(以太網(wǎng)(CSMA/CD)的規(guī)范)

? ? ? ? * IEEE802.11(WLAN)

? ? * MAC地址:

? ? ? ? * 48位二進(jìn)制/12位十六進(jìn)制

? ? * 根據(jù)MAC地址轉(zhuǎn)發(fā)

? ? ? ? * 交換集線器(也叫以太網(wǎng)交換機(jī))

? ? ? ? * 交換機(jī)的自學(xué)原理

? ? ? ? * 交換機(jī)的轉(zhuǎn)發(fā)方式:

? ? ? ? ? ? * 存儲轉(zhuǎn)發(fā)

? ? ? ? ? ? * 直通轉(zhuǎn)發(fā)

* 共享介質(zhì)型網(wǎng)絡(luò)

? ? *? 概念:多個設(shè)備共享一個通信介質(zhì)的網(wǎng)絡(luò)。(常用半雙工)

? ? *? 介質(zhì)訪問控制方式:

? ? ? ? * 爭用方式

? ? ? ? ? ? * 概念:爭奪獲取傳輸數(shù)據(jù)的權(quán)力,即CSMA(載波監(jiān)聽多路訪問)

? ? ? ? ? ? * 原理:以先到先得的方式占用信道發(fā)送數(shù)據(jù)。

? ? ? ? ? ? * 改進(jìn):CSMA/CD

? ? ? ? * 令牌傳遞方式

> **技術(shù)1:CSMA/CD方式**

1.若載波信道上沒有數(shù)據(jù)流動,則任何站都可以發(fā)送數(shù)據(jù)。

2.檢查是否發(fā)生沖突。一旦發(fā)生沖突,先發(fā)送一個阻塞報文,然后放棄發(fā)送數(shù)據(jù)幀,隨機(jī)延時一段時間之后,重發(fā)。

* 非共享介質(zhì)網(wǎng)絡(luò)

? ? * 概念:對介質(zhì)采取專用的一種傳輸控制方式。網(wǎng)絡(luò)中的每個站直接連通交換機(jī),由交換機(jī)負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)幀。 (常用全雙工)

* 環(huán)路檢測技術(shù)

? ? * 問題:數(shù)據(jù)幀在環(huán)路中會不斷的被轉(zhuǎn)發(fā),當(dāng)數(shù)據(jù)幀積累到一定程度的時候會造成網(wǎng)絡(luò)癱瘓,因此需要搭建合適環(huán)路,分散網(wǎng)絡(luò)流量,提高容災(zāi)能力。

? ? * 環(huán)路檢測技術(shù)(消除環(huán)路):

? ? ? ? * 生成樹方式:禁止某個端口,發(fā)生問題時,啟用該端口繞行。

? ? ? ? * 源路由法

* VLAN

? ? * 原理:網(wǎng)橋(實(shí)現(xiàn)了VLAN技術(shù)的2層交換機(jī))按照端口劃分了不同的網(wǎng)段,區(qū)分廣播數(shù)據(jù)傳播的范圍、減少了網(wǎng)絡(luò)負(fù)載提高了網(wǎng)絡(luò)的安全性。

? ? * 實(shí)質(zhì):在數(shù)據(jù)鏈路上對網(wǎng)絡(luò)實(shí)現(xiàn)了層次性。

**以下介紹幾種數(shù)據(jù)鏈路**

###3.3 以太網(wǎng)

> **協(xié)議2:以太網(wǎng)是什么?**

以太網(wǎng)是一種規(guī)范。規(guī)定了數(shù)據(jù)鏈路需要的傳輸介質(zhì)、傳輸速度等。

* 以太網(wǎng)幀格式

? ? * 組成:前導(dǎo)碼+目標(biāo)MAC+源MAC+類型+數(shù)據(jù)(46~1500字節(jié))+FCS(幀檢驗(yàn)序列)

? ? ? ? * 前導(dǎo)碼:表示幀的開始,也是對端網(wǎng)卡能夠確保與其同步的標(biāo)志

? ? ? ? * 類型:上層協(xié)議類型

? ? ? ? ? ? * 0800:IP

? ? ? ? ? ? * 0806:ARP

? ? ? ? ? ? * 8035:RARP

? ? ? ? ? ? * 86DD: IPv6

? ? ? ? * FCS:檢查幀是否損壞。

> 數(shù)據(jù)鏈路層可細(xì)分為:MAC(介質(zhì)訪問控制層)、LLC(邏輯鏈路控制層)

###3.4 無線通信

* 分類

* 標(biāo)準(zhǔn):IEEE 802.11

###3.5 PPP

> **協(xié)議3:PPP(Point-to-Point protocol, 點(diǎn)對點(diǎn)協(xié)議)**

PPP是純粹的數(shù)據(jù)鏈路層協(xié)議,與物理層沒有任何關(guān)系。(而以太網(wǎng)是物理層和數(shù)據(jù)鏈路層都涉及的協(xié)議,規(guī)定了0和1被物理層解釋為何種電子信號)PPP協(xié)議的使用,要求物理層通暢,但是不管物理層是使用的什么介質(zhì),采用的什么協(xié)議。

例如:ADSL/PPPoE(PPP OVER ETHERNET)

* 包括2個協(xié)議:

? ? * LCP(Link Control Protocol):不依賴上層;主要負(fù)責(zé)建立斷開連接、設(shè)置最大接收單元(MRU)、設(shè)置驗(yàn)證協(xié)議以及設(shè)置是否進(jìn)行通信質(zhì)量的監(jiān)控。

? ? * NCP(Network Control Protocol):依賴上層;負(fù)責(zé)IP地址設(shè)置、是否進(jìn)行TCP/IP首部壓縮等設(shè)備。

* PPP幀格式:標(biāo)志碼(字節(jié))+地址+控制+類型+數(shù)據(jù)(0~1500)+FCS+標(biāo)志

###3.6 其他數(shù)據(jù)鏈路

* ATM、FDDI等

##第四章 IP協(xié)議

> IP協(xié)議主要負(fù)責(zé)將數(shù)據(jù)包發(fā)送給最終的目標(biāo)計算機(jī)。

###4.1 IP:網(wǎng)際協(xié)議

> 主機(jī)與節(jié)點(diǎn)

-**主機(jī):**配置有IP地址,但是不進(jìn)行路由控制的設(shè)備

-**路由器:**配置有IP地址,進(jìn)行路由控制的設(shè)備

-**節(jié)點(diǎn)**:主機(jī)和路由器的統(tǒng)稱。

-**注:**我們簡單地將具有IP地址的設(shè)備稱為主機(jī)。

* 數(shù)據(jù)鏈路層 vs 網(wǎng)絡(luò)層

? ? * 網(wǎng)絡(luò)層的作用:實(shí)現(xiàn)終端節(jié)點(diǎn)之間的通信。(點(diǎn)對點(diǎn)通信)

? ? * 數(shù)據(jù)鏈路層作用:在同一種數(shù)據(jù)鏈路的節(jié)點(diǎn)之間進(jìn)行數(shù)據(jù)包的傳遞

? ? * 不同:數(shù)據(jù)鏈路層:負(fù)責(zé)一個相同區(qū)段內(nèi)的通信,而網(wǎng)絡(luò)層負(fù)責(zé)多個不同區(qū)段內(nèi)的通信。

? ? ? ? * 數(shù)據(jù)鏈路層:提供直連的2個設(shè)備之間通信功能。

? ? ? ? * 網(wǎng)絡(luò)層:負(fù)責(zé)在沒有直連的兩個網(wǎng)絡(luò)之間進(jìn)行通信傳輸。

? ? ? ? > 例:圖4.2: 行程表 vs 機(jī)票火車票

? ? ? ? 行程表(網(wǎng)路層):告訴人怎么走,該做什么車,該在哪里換乘。

? ? ? ? 機(jī)票火車票(數(shù)據(jù)鏈路層):實(shí)現(xiàn)某個段內(nèi)的走法,飛機(jī)還是火車。

###4.2 IP基礎(chǔ)知識

> IP分為三大作用模塊:IP尋址、路由(最終節(jié)點(diǎn)為止的轉(zhuǎn)發(fā))以及IP分包和組包。

* IP地址

? ? * 1 IP地址屬于網(wǎng)路層地址

? ? * 2 MAC地址vsIP地址

? ? ? ? * MAC地址:用來標(biāo)識同一個鏈路中不同計算機(jī)的一個標(biāo)識碼。

? ? ? ? * IP地址:用于在“連接到網(wǎng)絡(luò)中的所有的主機(jī)中識別出進(jìn)行通信的目標(biāo)地址”。因此TCIP/IP通信中所有節(jié)點(diǎn)(主機(jī)或者路由器)都需要設(shè)定IP地址

* 路由控制

? ? * 概念:將分組數(shù)據(jù)發(fā)送到最終目標(biāo)地址的功能。

? ? * Hop:跳,指網(wǎng)絡(luò)中的一個區(qū)間。

? ? * 多跳路由:也稱作IP路由,是指路由器或者主機(jī)在準(zhǔn)發(fā)IP數(shù)據(jù)包時,只指定下一個路由器或者主機(jī),而不是將到達(dá)最終目標(biāo)的所有通路全部指定出來。

? ? * IP數(shù)據(jù)包的傳輸:

? ? >? 例2:快遞:

? ? ? ? IP數(shù)據(jù)包:如包裹。

? ? ? ? 數(shù)據(jù)鏈路:如貨車。

? ? * 路由控制表(Routing Table):記錄IP數(shù)據(jù)包下一跳的路由器。?

* 數(shù)據(jù)鏈路的抽象化

? ? * IP是多個數(shù)據(jù)鏈路之間通信的協(xié)議。

? ? * IP的一個重要作用:對不同數(shù)據(jù)鏈路之間的不同特性進(jìn)行抽象,例如數(shù)據(jù)鏈路的地址可以被抽象成IP地址。

? ? ? ? * 不同數(shù)據(jù)鏈路層有個最大區(qū)別:最大傳輸單位(Maximum Transmission Unit, MTU)不同。就像人們在郵寄包裹時有各自的大小限制。

? ? ? ? * IP抽象化數(shù)據(jù)鏈路:IP層解決這個問題的時候,進(jìn)行分片處理。將超過某段數(shù)據(jù)鏈路MTU的數(shù)據(jù)包拆分成多個較小的包。然后到了目標(biāo)地址之后,組合回去。在IP的上層看,完全忽略了數(shù)據(jù)包在圖中的各個數(shù)據(jù)鏈路上的MTU,只需要按照源地址發(fā)送的長度接收數(shù)據(jù)包。這樣的話,IP不受限于不同數(shù)據(jù)鏈路的MTU。(因?yàn)椴煌臄?shù)據(jù)鏈路層的MTU不盡相同,IP的抽象能力將不同的MTU給屏蔽了。這種屏蔽是通過將MTU切割實(shí)現(xiàn)的。)

* IP面向無連接

? ? * IP面向無連接:在發(fā)包之前,不需要與目標(biāo)地址建立連接。

? ? * 為啥?

? ? ? ? * 簡化

? ? ? ? * 提速

? ? ? ? * 注:需要連接時,可以委托上一層實(shí)現(xiàn),如TCP

? ? ? ? ? ? - IP提供盡力服務(wù):為了把數(shù)據(jù)包發(fā)送到最終目標(biāo)地址,盡最大努力。(并不做““最終收到與否的驗(yàn)證”)。可能發(fā)生丟包、錯位以及數(shù)據(jù)量翻倍等問題。

? ? ? ? ? ? - TCP保證對端主機(jī)確實(shí)收到數(shù)據(jù)。

> 為什么分層?

-實(shí)現(xiàn)簡單,利于實(shí)現(xiàn)

-便于擴(kuò)展和性能優(yōu)化

###4.3 IP地址的基礎(chǔ)知識

> IP地址用于識別主機(jī)和路由器。

* IP地址定義

? ? * IP地址(IPv4地址)

? ? ? ? * 32位正整數(shù)表示

? ? ? ? * 計算機(jī)內(nèi)部以二進(jìn)制的形式被處理

? ? ? ? * **點(diǎn)乘十進(jìn)制:** 32位-> 8位一組,以`.`隔開->分別轉(zhuǎn)換為十進(jìn)制

? ? ? ? * IP地址總數(shù):$2 ^{32} = 4294967296$,即最多可以允許43億臺主機(jī)連接到網(wǎng)絡(luò)。

? ? ? ? * 通常,每臺主機(jī)每個網(wǎng)卡(NIC)都得設(shè)置IP地址。

? ? ? ? ? ? * 一臺主機(jī)至少可以設(shè)置一個IP地址。

? ? ? ? ? ? * 一臺路由器可以設(shè)置2個以上IP地址

? ? ? ? ? ? * 一塊網(wǎng)卡可以設(shè)置2個以上IP地址

* IP地址組成

? ? * IP地址=網(wǎng)絡(luò)標(biāo)識+主機(jī)標(biāo)識=網(wǎng)絡(luò)地址+主機(jī)地址

? ? ? ? * 相同網(wǎng)段網(wǎng)絡(luò)標(biāo)識必須一致

? ? ? ? * 不同網(wǎng)段則必須不同

? ? ? ? * **網(wǎng)絡(luò)地址表示全網(wǎng)中子網(wǎng)的位置。**

* IP地址的分類

? ? * A B C D 四類

|類型|特征|網(wǎng)絡(luò)地址|范圍|

|--|--|--|--|--|

|A類地址|0xxx xxxx|前8位|0.0.0.0~127.0.0.0|

|B類地址|10xx xxxx|前16位|128.0.0.1~191.255.0.0|

|C類地址|110x xxxx|前24位|192.168.0.0~239.255.255.0|

|D類地址|1110 xxxx|前32位|224.0.0.0~239.255.255.255|

> 注:

1.ABC類地址網(wǎng)絡(luò)地址之后的均為主機(jī)地址

2.D類地址沒有主機(jī)地址,主要用于**多播**。

3.分配主機(jī)地址的時候,主機(jī)地址不能全部為0或者1,因?yàn)椋?/p>

全部為0在表示對應(yīng)的網(wǎng)絡(luò)地址或者IP地址不可知的情況下使用。

全部為1的主機(jī)地址通常用與廣播。

4.主機(jī)地址個數(shù):$count = 2 ^ {主機(jī)地址位數(shù)}$

* 廣播

? ? * 作用:用于同一個鏈路中相互連接的主機(jī)之間發(fā)送數(shù)據(jù)。

? ? * 廣播地址:主機(jī)地址全部為1.例如 網(wǎng)絡(luò)地址為192.168.0.0/24,廣播地址為:192.168.0.255/24。

? ? * 分類

? ? ? ? * 本地廣播:不會通過路由器轉(zhuǎn)發(fā)

? ? ? ? * 直接廣播:通過路由器轉(zhuǎn)發(fā)

* IP多播

? ? * 作用:用于將包發(fā)送給特定組內(nèi)的所有主機(jī)

? ? * 協(xié)議:IP協(xié)議(不可靠傳輸)

? ? * IP多播vs.廣播

? ? ? ? * 廣播:發(fā)送給網(wǎng)段內(nèi)所有主機(jī),路由器不轉(zhuǎn)發(fā)廣播的包

? ? ? ? * 多播:發(fā)送給特定組內(nèi)主機(jī),路由器復(fù)制多播的包

? ? * 多播地址

? ? ? ? * 多播使用D類地址。 多播地址+組編號=(1110)+ 組編號

* 子網(wǎng)掩碼

? ? * 作用:細(xì)分ABCD類IP地址。靈活指定網(wǎng)絡(luò)地址的長度,不再受分類限制。

? ? * 2種表示

? ? |地址|表示1|表示2:后綴法

? ? |--|--|--|

? ? |IP地址|172.20 .100. 52|172.20 .100. 52 /26|

? ? |子網(wǎng)掩碼|255.255.255.192|

? ? |網(wǎng)絡(luò)地址|172.20 .100. 0|172.20 .100. 0 /26|

? ? |子網(wǎng)掩碼|255.255.255.192|

? ? |廣播地址|172.20 .100. 63|172.20 .100. 63 /26|

? ? |子網(wǎng)掩碼|255.255.255.192|

* 全局地址與私有地址

? ? * 全局IP(公網(wǎng)IP)

? ? * 私有IP

? ? * NAT(轉(zhuǎn)換公有和私有IP)

? ? * 解決IPv4地址耗盡的問題:

? ? ? ? * 私有IP+NAT技術(shù)

###4.4 路由控制

> 發(fā)送數(shù)據(jù)包時,所使用的地址是IP地址。但是光有IP地址,不足以實(shí)現(xiàn)將數(shù)據(jù)包發(fā)送到對端目標(biāo)地址的目的,在數(shù)據(jù)發(fā)送過程中,還需要類似于“指明路由器或者主機(jī)”的信息。保存這種信息的是**路由控制表。**

> 路由控制表的形成方式有2種:

1.手動設(shè)置(靜態(tài)路由控制)

2.路由器之間相互交換信息時,自動刷新(動態(tài)路由控制)

注:在交換信息時,路由器之間要設(shè)置好**路由協(xié)議**,保證正常獲取路由控制信息。

> 路由控制表: 記錄 IP地址 -> 下一個路由器 的匹配信息

* IP地址與路由控制

? ? * IP地址的網(wǎng)絡(luò)地址由于進(jìn)行路由控制。

? ? * 默認(rèn)路由

? ? ? ? * 標(biāo)記:default/ 0.0.0.0/0

? ? ? ? * 注:0.0.0.0的IP地址是:0.0.0.0/32,注意二者不同

? ? ? ? * 路由表中任何一個地址都能與之匹配

? ? * 主機(jī)路由

? ? ? ? * 標(biāo)記:IP地址/32

? ? ? ? * 用于不希望通過網(wǎng)絡(luò)地址路由的情況

? ? * 環(huán)回地址

? ? ? ? * 同一臺計算機(jī)上的程序之間進(jìn)行網(wǎng)絡(luò)通信時所使用的的默認(rèn)地址。

? ? ? ? * 127.0.0.1 / localhost(主機(jī)名)

? ? * 路由控制表的聚合

? ? ? ? * 減少負(fù)載,提高效率

### 4.5 IP分割處理與再構(gòu)成處理

* **IP抽象化**

? ? * IP抽象化:屏蔽了數(shù)據(jù)鏈路層MTU不同的限制。

? ? * 如何實(shí)現(xiàn):IP報文分片

* IP報文分片與重組

? ? * 執(zhí)行者:路由器

* 路徑MTU發(fā)現(xiàn)

? ? * IP報文分片機(jī)制的缺陷:

? ? ? ? * 路由器負(fù)荷太重

? ? ? ? * 分片處理中,一旦某個分片丟失,則會造成整個IP數(shù)據(jù)包作廢

? ? * 路徑MTU發(fā)現(xiàn)技術(shù)

? ? ? ? * 路徑MTU(Path MTU): 指從發(fā)送端主機(jī)到接收端主機(jī)之間不需要分片時最大MTU的大小。(即路徑中存在的所有數(shù)據(jù)鏈路層中最小的MTU)

? ? ? ? * 路徑MTU發(fā)現(xiàn):發(fā)送主機(jī)按照Path MTU的大小將數(shù)據(jù)包分片后進(jìn)行發(fā)送。

? ? * 路徑MTU發(fā)現(xiàn)實(shí)現(xiàn)原理

###4.6 IPv6

* 作用:解決IPv4地址即將耗盡的問題

* 組成:128位=8組16進(jìn)制數(shù)

* 分類:

? ? * 全局單播地址

? ? * 鏈路本地單播地址

? ? * 唯一本地地址

* 分段處理

###4.7 IPv4首部

> 通過IP通信時,需要在數(shù)據(jù)的前面加入IP首部信息。

IP首部中包含用于IP協(xié)議進(jìn)行發(fā)包控制時所有的必要信息。

* IP數(shù)據(jù)報 = IP首部+IP載荷(數(shù)據(jù))

* IP首部

? ? * 版本

? ? * 首部長度

? ? * 區(qū)分服務(wù)(TOS:Type of Service):表明服務(wù)質(zhì)量(沒有建樹)

? ? * 總長度:IP數(shù)據(jù)報的長度($max = 2^{16} = 65535$ 字節(jié))

? ? * 標(biāo)識:用于分片重組,表示不同分片

? ? * 標(biāo)志:表示包被分片的相關(guān)信息。

? ? * 片偏移:用于標(biāo)識每一個分片的順序

? ? * 生存時間(TTL:Time To Live):實(shí)際中,表示可以中轉(zhuǎn)多少個路由器。

? ? * 協(xié)議:表明上一層隸屬于哪個協(xié)議。

? ? * 首部校驗(yàn)和:確保IP數(shù)據(jù)報不被破壞。

? ? * 源地址

? ? * 目標(biāo)地址

? ? * 可選項(xiàng)

? ? * 填充

###4.8 IPv6首部

* IPv6數(shù)據(jù)報 = IP首部+載荷

* IPv6首部

? ? * 版本

? ? * 通信量類:相當(dāng)于TOS

? ? * 流標(biāo)號:服務(wù)質(zhì)量控制

? ? * 有效載荷長度:包的數(shù)據(jù)部分長度

? ? * 下一個首部:相當(dāng)于協(xié)議字段。表示上一層協(xié)議是TCP還是UDP。但是在IPv6中表示擴(kuò)展首部的協(xié)議類型

? ? * 跳數(shù)限制:相當(dāng)于TTL.

? ? * 源地址

? ? * 目標(biāo)地址

? ? * 擴(kuò)展首部

##第五章 IP協(xié)議相關(guān)技術(shù)

> IP協(xié)議旨在讓最終目標(biāo)主機(jī)收到數(shù)據(jù)包,但是僅有IP協(xié)議是無法通信的。還需要解析主機(jī)名稱和MAC地址的功能,以及數(shù)據(jù)包在發(fā)送過程中異常處理的功能。

###5.1 僅憑IP無法完成通信

###5.2 DNS

> 平常訪問網(wǎng)站時,一般不使用用IP地址,而使用域名。**DNS則將域名轉(zhuǎn)換為IP地址**。

* IP地址不便記憶

? ? * 主機(jī)識別碼:為每一臺計算機(jī)賦予唯一的主機(jī)名,網(wǎng)絡(luò)通信時,就可以直接使用主機(jī)名稱,而不需要IP地址。

? ? * 系統(tǒng)能將主機(jī)名轉(zhuǎn)換為具體的IP地址。這個功能的實(shí)現(xiàn),依賴于一個名為**hosts**的數(shù)據(jù)庫文件。

* DNS系統(tǒng)

? ? * DNS系統(tǒng):管理主機(jī)名(域名)和IP地址之間對應(yīng)關(guān)系的系統(tǒng)。

? ? * 原理:用戶輸入域名時,DNS會自動檢索注冊了域名和IP地址的數(shù)據(jù)庫,定位對應(yīng)的IP地址。

* 域名的構(gòu)成

? ? * 域名:為了識別主機(jī)名稱和組織機(jī)構(gòu)名稱的一種具有分層的稱呼。

? ? * DNS分層結(jié)構(gòu)

? ? ? ? * 樹形結(jié)構(gòu)

? ? ? ? ? ? * root

? ? ? ? ? ? ? ? * 1.頂級域名:國別頂級域名、通用頂級域名等

? ? ? ? ? ? ? ? * 2....

? ? * 域名服務(wù)器:管理域名的主機(jī)和相應(yīng)的軟件,管理所在分層(**ZONE**)的域的相關(guān)信息。

? ? ? ? * 根域名服務(wù)器: 此服務(wù)器下注冊著根以下第1層域名服務(wù)器的IP地址。

? ? ? ? * 域名和域名服務(wù)器均為分層設(shè)置。

? ? * DNS解析器:進(jìn)行DNS查詢的主機(jī)和軟件。如用戶所使用的工作站或者個人電腦。

* DNS查詢(query)

? ? * 例如:kusa.co.jp域中的主機(jī)peper訪問域名`www.ietf.org`

? ? ? ? * ① 向DNS服務(wù)器查詢IP地址

? ? ? ? * ② 由于kusa的DNS服務(wù)器不知道`www.ietf.org`的IP地址,它向根域名服務(wù)器請求進(jìn)行查詢。

? ? ? ? * ③ 根域名服務(wù)器知道`www.ietf.org`的IP地址在那個域名服務(wù)器(ietf.org服務(wù)器),返回該服務(wù)器的地址。

? ? ? ? * ④ kusa的DNS服務(wù)器去返回的地址處查詢`www.ietf.org`的IP地址。

? ? ? ? * ⑤ ietf.org域名服務(wù)器將該IP地址返回kusa的域名服務(wù)器,kusa的域名服務(wù)器將IP地址返回給pepper

? ? ? ? * ⑥ pepper與`www.ietf.org`通信。

* DNS如同互聯(lián)網(wǎng)中的分布式數(shù)據(jù)庫

> **協(xié)議4:DNS協(xié)議**

DNS協(xié)議主要是用于將域名解析為IP地址。

###5.3 ARP

> 進(jìn)行數(shù)據(jù)鏈路層傳輸時,需要知道MAC地址。ARP協(xié)議則從IP地址中解析出MAC地址。

* ARP概要

? ? * ARP:一種解決地址問題的協(xié)議

? ? * 作用:以目標(biāo)IP地址為線索,用來定位下一個應(yīng)該接受數(shù)據(jù)分包的網(wǎng)絡(luò)設(shè)備對應(yīng)的MAC地址。若目標(biāo)主機(jī)不在一個鏈路上,則可以通過ARP查找下一跳路由器的MAC地址。

? ? * 注:僅使用與IPv4。(ICMPv6/IPv6)

* ARP的工作機(jī)制

? ? * 原理:ARP借助ARP請求和ARP響應(yīng)2種類型的包確定MAC地址的。

? ? * ARP表:記錄IP地址-MAC地址的映射

* RARP協(xié)議

? ? * 作用:從MAC地址定位IP地址。

? ? * 原理:RARP借助RARP請求和RARP響應(yīng)2種類型的包確定IP地址的。

> **協(xié)議5:ARP協(xié)議**

ARP協(xié)議主要作用是根據(jù)IP地址確定下一跳到達(dá)的網(wǎng)絡(luò)設(shè)備的MAC地址。

> **協(xié)議6:RARP協(xié)議**

RARP協(xié)議根據(jù)MAC地址確定IP地址。

###5.4 ICMP

* 輔助IP的ICMP(IP層)

? ? * 主要功能

? ? ? ? * 確認(rèn)IP數(shù)據(jù)包是否成功抵達(dá)目標(biāo)地址

? ? ? ? * 通知在發(fā)送過程中IP包被廢棄的具體原因

? ? ? ? * 改善網(wǎng)絡(luò)設(shè)置

* ICMP消息

? ? * 分類

? ? ? ? * 通知出錯原因的錯誤消息

? ? ? ? * 用于診斷的查詢消息

? ? * 主要的ICMP消息

? ? ? ? * ICMP目標(biāo)不可達(dá)消息

? ? ? ? * ICMP重定向消息

? ? ? ? * ICMP超時消息:`traceroute`(/`tracert`)命令就是利用這個消息實(shí)現(xiàn)的

? ? ? ? * ICMP回送消息:`ping`

* ICMPv6

? ? * IPv4:ICMP僅輔助支持IP通信。

? ? * IPv6:沒有ICMP,無法通信

> **協(xié)議7: ICMP協(xié)議**

ICMP主要用于輔助IP協(xié)議通信,其主要功能是確認(rèn)IP數(shù)據(jù)包是否成功抵達(dá)目標(biāo)地址,通知在發(fā)送過程中IP包被廢棄的具體原因,改善網(wǎng)絡(luò)設(shè)置。

`ping`命令就是利用ICMP協(xié)議的ICMP回送消息實(shí)現(xiàn)的。

###5.5 DHCP

* DHCP實(shí)現(xiàn)即插即用

? ? * 作用:

? ? ? ? * 實(shí)現(xiàn)自動設(shè)置IP地址

? ? ? ? * 統(tǒng)一管理IP地址分配

* DHCP的工作機(jī)制

? ? * 條件:DHCP服務(wù)器(一般該網(wǎng)段的路由器充當(dāng))

? ? * DHCP分配IP地址有2種方法

? ? ? ? * DHCP服務(wù)器在特定IP地址中自動選擇一個分配

? ? ? ? * 針對MAC地址分配一個固定IP地址。

? ? * 需要檢查要分配和已分配的IP地址是否可用

? ? ? ? * DHCP服務(wù)器

? ? ? ? * DHCP客戶端

* DHCP中繼代理(多為路由器)

? ? * 作用:管理DHCP,統(tǒng)一分配和管理IP地址

> **協(xié)議8:DHCP協(xié)議**

用于自動統(tǒng)一分配和管理IP地址

###5.6 NAT

* NAT定義

? ? * NAT(Network Address Translator):用于在本地網(wǎng)絡(luò)中使用私有地址,在連接互聯(lián)網(wǎng)時,轉(zhuǎn)而使用全局IP地址(公有地址)的技術(shù)。

? ? * NAPT:轉(zhuǎn)換TCP/UDP端口號技術(shù)。

? ? * 作用:? ?

? ? ? ? * 實(shí)現(xiàn)一個全局IP地址與多個主機(jī)的通信。

? ? ? ? * 本質(zhì)是為了解決IPv4地址即將耗盡的問題

* NAT工作機(jī)制

? ? * NAT路由器:負(fù)責(zé)將IP地址在公有和私有之間轉(zhuǎn)換(轉(zhuǎn)換表自動生成)

* NAT-PT/NAPT-PT

? ? * 作用:IPv6首部與IPv4的首部互相轉(zhuǎn)換。 / 翻譯IP首部與端口號

###5.7 IP隧道

* 定義:

? ? * IP隧道是指在網(wǎng)絡(luò)層的首部后面繼續(xù)追加網(wǎng)絡(luò)層首部的通信方法。

? ? 如: | 數(shù)據(jù) | TCP首部 | IP首部(6)| IP首部(4)

###5.8 其他IP相關(guān)技術(shù)

* IP多播相關(guān)技術(shù)

> **協(xié)議9:IGMP協(xié)議**

IGMP(Internet Group Management Protocol)的一個重要功能是MLD(多播監(jiān)聽發(fā)現(xiàn)),其2大作用是:

1. 向路由器表明想要接受多播消息(通知多播地址)

2. 向交換機(jī)通知想要接收的多播的地址(IGMP探聽)

* IP任播

? ? * 應(yīng)用

? ? ? ? * 110/119

? ? ? ? * DNS根域名服務(wù)器

? ? * 原理: 多個服務(wù)器設(shè)置同一個IP,客戶端發(fā)送請求時,由最近的服務(wù)器處理。

* 通信質(zhì)量控制

> **協(xié)議補(bǔ)充1:RSVP協(xié)議**

用于通信質(zhì)量控制

* 顯式擁塞通知

* Mobile IP

##第六章 TCP與UDP

> 傳輸層的2個主要協(xié)議:TCP/UDP

###6.1 傳輸層的作用

* 傳輸層定義

> 網(wǎng)絡(luò)層IP首部標(biāo)識其上層傳輸層采用的是哪一種傳輸協(xié)議。根據(jù)這個協(xié)議號,可以識別IP傳輸?shù)牡臄?shù)據(jù)是TCP還是UDP。

同樣的,TCP/UDP中,也有這樣的字段表明其所傳輸?shù)臄?shù)據(jù)發(fā)給了哪個應(yīng)用。即**端口**。

以包裹為例。郵遞員根據(jù)收件人地址向目的地投遞包裹。包裹到達(dá)目的地以后由對方根據(jù)包裹信息(例如姓氏)判斷最終的接收人。

在這里,郵遞員=IP,收件人地址=目標(biāo)IP地址,包裹=IP數(shù)據(jù)報,對方=傳輸層協(xié)議,最終接收人=接收端應(yīng)用程序,姓氏=應(yīng)用程序

在這里,識別特定應(yīng)用程序,則需要通過**端口號**來識別。之后,對應(yīng)端口的應(yīng)用層協(xié)議去處理傳輸協(xié)議傳來的數(shù)據(jù)。

* 通信處理

* 2種傳輸層協(xié)議:TCP/UDP

|協(xié)議|TCP|UDP|

|--|--|--|

|面向連接|是|否|

|可靠性|可靠|不可靠|

|特點(diǎn)|順序控制 重發(fā)控制 流量控制 擁塞控制|數(shù)據(jù)報協(xié)議|

|應(yīng)用場景|有必要實(shí)現(xiàn)可靠傳輸|高速傳輸 實(shí)時傳輸;如多播 廣播 RIP DHCP|

###6.2 端口號(或者稱為程序地址)

* 定義

|序號|層次|地址類型|作用|

|--|--|--|--|

|1|數(shù)據(jù)鏈路層|MAC地址|識別同一鏈路中不同的計算機(jī)|

|2|網(wǎng)絡(luò)層|IP地址|識別TCP/IP網(wǎng)絡(luò)中不同的主機(jī)和路由器|

|3|傳輸層|端口號|識別同一臺計算機(jī)中進(jìn)行通信的不同引用程序|

* 常見的端口

|應(yīng)用層協(xié)議|端口|

|--|--|

|HTTP|80|

|FTP|20/21(Data/Control)|

|SSH|22|

|Telnet|23|

|SMTP|25|

|DNS|53|

|HTTPS|443|

注:HTTPS: HTTP over TLS/SSL

* 通過IP地址、端口號、協(xié)議號(標(biāo)識是TCP還是UDP)進(jìn)行通信識別

? ? * 識別一個通信需要:

? ? ? ? * 源IP,目標(biāo)IP,協(xié)議號,源端口號,目標(biāo)端口號所有都相同。

* 端口號如何確定?

? ? * 標(biāo)準(zhǔn)既定的端口號(靜態(tài)方法) (0~49151)

? ? ? ? * 知名端口號(0~1023),見上表:常見端口

? ? * 時序分配法(動態(tài)方法)(49152~65535)


* 端口號與協(xié)議? ? ? ? ? ?

###6.3 UDP協(xié)議

* UDP

? ? * UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)

? ? * 特點(diǎn):UDP利用IP提供面向無連接的不可靠的通信服務(wù),不提供復(fù)雜控制機(jī)制,流量控制機(jī)制以及擁塞控制機(jī)制,僅實(shí)現(xiàn)基本的傳輸功能。

* 應(yīng)用場景

? ? * 包總量較少的通信(**DNS**, SNMP等)

? ? * 視頻、音頻等多媒體通信(即時通信)

? ? * 限定于LAN等特定網(wǎng)絡(luò)的應(yīng)用通信

? ? * 廣播通信(廣播多播)

###6.4 TCP協(xié)議

* TCP

? ? * 傳輸控制協(xié)議

? ? * 特點(diǎn):面向連接的可靠的通信服務(wù)。實(shí)現(xiàn)重發(fā)控制,順序控制等完整的控制功能。

* TCP如何保證可靠傳輸?

> TCP通過校驗(yàn)和、序列號、確認(rèn)應(yīng)答、重發(fā)控制、連接管理以及窗口控制等實(shí)現(xiàn)可靠傳輸。

* 通過**序列號**和**確認(rèn)應(yīng)答**提高可靠性

? ? * 確認(rèn)應(yīng)答:TCP中,當(dāng)發(fā)送端數(shù)據(jù)發(fā)送到接收機(jī)主機(jī)時,接收端主機(jī)會返回一個**已收到消息的通知**,這個消息叫**確認(rèn)應(yīng)答(ACK,Positive Acknowledgement)**。

? ? TCP通過肯定的**ACK**實(shí)現(xiàn)可靠數(shù)據(jù)傳輸。

? ? 若在一定的時間(**特定時間間隔**)內(nèi),發(fā)送端未收到ACK,則認(rèn)為數(shù)據(jù)丟失(**也可能是ACK丟了**),重發(fā)。

? ? * 序列號:發(fā)送數(shù)據(jù)的每一個字節(jié)的順序編號。也指字節(jié)之間的分隔。

? ? * 確認(rèn)應(yīng)答號:下次要發(fā)送的數(shù)據(jù)的起始序列號。


注:MSS:報文最大長度。

* 重發(fā)超時如何確定?

? ? * 重發(fā)超時:指在重發(fā)數(shù)據(jù)前,等待ACK到達(dá)之前的那個**特定時間間隔**。

? ? * RTT: Round Trip Time, 報文段往返時間

? ? * $重發(fā)超時= RTT + 抖動 + \delta$

* **連接管理**

? ? * TCP面向連接,因此通信開始之前,需要建立連接。

? ? * 建立連接:三次握手

? ? * 斷開連接:四次揮手

> **建立連接:三次握手**

> **斷開連接:四次揮手**

* TCP以段為單位發(fā)送數(shù)據(jù)

? ? * MSS: 在建立TCP連接的同時,也可以確定發(fā)送數(shù)據(jù)包的單位,稱為“最大消息長度”(MSS, Maxmium Segment Size)。最理想的MSS等于IP中不會被分片處理的最大數(shù)據(jù)長度。

? ? * TCP在傳輸數(shù)據(jù)時,以MSS為單位傳輸。重發(fā)是也以MSS為單位傳輸。

? ? * 三次揮手時,通過SYN包確認(rèn)MSS大小。

* 利用**窗口控制**提高傳輸速度

? ? * 問題:TCP若每發(fā)一個段進(jìn)行一次ACK,則通信性能太低。

? ? * 解決:因此引入了**窗口**的概念,改成以更大的單位為間隔進(jìn)行ACK。因此轉(zhuǎn)發(fā)時間也大幅縮短。此時,發(fā)送端可以不必等到收到ACK之后,再發(fā)送數(shù)據(jù),而是一直發(fā)送。

? ? * 滑動窗口的大小由接收端控制。見**流控制**。

? ? * 緩存區(qū)

* 窗口控制與**重發(fā)控制**

? ? * 某些確認(rèn)應(yīng)答丟失:不用重發(fā),只需要通過下一個ACK確認(rèn)就可以了。

? ? * 某個報文段丟失:接收端會發(fā)送ACK給發(fā)送端,要求其發(fā)送丟失的報文段,當(dāng)同一個ACK發(fā)送次數(shù)超過3次,發(fā)送端則進(jìn)行重發(fā)。這種方式比之前的超時管理更高效,故稱為**高速重發(fā)控制**。

* **流控制**

? ? * 問題:如果接收端無力接收,而發(fā)送端還在發(fā)送,則會造成網(wǎng)絡(luò)流量的浪費(fèi)。

? ? * 解決:TCP提供一種可以讓發(fā)送端根據(jù)接收端實(shí)際接受能力控制發(fā)送的數(shù)據(jù)量的機(jī)制。這就是所謂的**流控制**。

? ? * 原理:接收端主機(jī)向發(fā)送端通知自己可以接收數(shù)據(jù)的大小,發(fā)送端就發(fā)送不超過這個限度的數(shù)據(jù)。此限度就稱為**窗口大小**。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。