# 圖解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)用層
? ? ? ? * 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ù)。此限度就稱為**窗口大小**。