一、基本概念
數(shù)據(jù)包結(jié)構(gòu)

相關(guān)設(shè)備
-
中繼器
- 功能
- 物理層
- 連接同一網(wǎng)絡(luò)的多個(gè)網(wǎng)段
- 功能
-
集線器
- 是一個(gè)多端口的中繼器
- 特點(diǎn)
- 物理層,共享型設(shè)備
- 安全性低
- 容易引發(fā)廣播風(fēng)暴
-
網(wǎng)橋
- 定義
- 二層路由器,根據(jù)MAC地址轉(zhuǎn)發(fā)幀
- 將兩(多)個(gè)局域網(wǎng)連起來
- 網(wǎng)橋通常用于聯(lián)接數(shù)量不多、同一類型的網(wǎng)段
- 定義
-
交換機(jī)
- 特點(diǎn)
- 數(shù)據(jù)鏈路層
- 根據(jù)mac地址進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)
- 有效抑制廣播風(fēng)暴
- 轉(zhuǎn)發(fā)延遲小,效率高
- 與集線器對(duì)比
- 交換機(jī)每個(gè)端口屬一個(gè)沖突域
- 集線器所有端口都屬一個(gè)沖突域
- 交換機(jī)的前身是網(wǎng)橋
- 交換機(jī)用硬件完成
- 網(wǎng)橋用軟件完成
- 過濾/學(xué)習(xí)/轉(zhuǎn)發(fā)幀的任務(wù)
- 特點(diǎn)
-
網(wǎng)關(guān)
- 定義
- 協(xié)議轉(zhuǎn)換器
- 實(shí)現(xiàn)不同協(xié)議網(wǎng)絡(luò)之間的互連
- 一個(gè)網(wǎng)絡(luò)連接到另一個(gè)網(wǎng)絡(luò)的關(guān)口
- 實(shí)質(zhì)上是一個(gè)網(wǎng)絡(luò)通往其他網(wǎng)絡(luò)的關(guān)口(IP地址)
- 路由器有多個(gè)網(wǎng)關(guān)(地址)
- 定義
-
路由器
- 功能
- 連接多個(gè)網(wǎng)絡(luò)的設(shè)備
- 將不同網(wǎng)絡(luò)的數(shù)據(jù)信息進(jìn)行轉(zhuǎn)換
- 為IP包傳輸分配最合適的路徑
- 數(shù)據(jù)通道功能
- 轉(zhuǎn)發(fā)決定
- 背板轉(zhuǎn)發(fā)
- 輸出鏈路調(diào)度
- 數(shù)據(jù)控制功能
- 與相鄰路由器之間的信息交換
- 系統(tǒng)配置
- 系統(tǒng)管理
- 特點(diǎn)
- 網(wǎng)絡(luò)層
- 根據(jù)IP進(jìn)行尋址轉(zhuǎn)發(fā)數(shù)據(jù)包
- 功能
二、物理層
功能
- 通過物理手段將計(jì)算機(jī)連接起來
- 光纜
- 電纜
- 雙絞線
- 無線電波
- 規(guī)定網(wǎng)絡(luò)的電氣屬性,負(fù)責(zé)傳送0和1的電信號(hào)
- 電腦網(wǎng)卡接口
- 收發(fā)點(diǎn)信號(hào)
- 解讀成0/1序列
三、數(shù)據(jù)鏈路層
功能 & 定義
- 位于物理層上方,確定了0和1的分組方式
- 單獨(dú)的0和1沒有意義
- 須規(guī)定解讀方式
- 多少電信號(hào)算一組
- 每個(gè)信號(hào)位有何意義
- 負(fù)責(zé)解讀電信號(hào)0和1組成的分組數(shù)據(jù)包(即幀)
以太網(wǎng)協(xié)議
規(guī)范電信號(hào)分組方式 / 解讀方式的協(xié)議
-
協(xié)議規(guī)定
- 一組電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)包(幀)
- 幀組成
- 標(biāo)頭
- 數(shù)據(jù)
- 尾部
- 整個(gè)幀長度
- min: 64字節(jié)
- max: 1518字節(jié)
- 數(shù)據(jù)過長,須分割成多個(gè)幀發(fā)送
-
標(biāo)頭
- 組成:包含數(shù)據(jù)包的一些說明項(xiàng)
- 發(fā)送者
- 接受者
- 數(shù)據(jù)類型
- 長度:固定18字節(jié)
- 最初7個(gè)字節(jié)稱序言
- 每個(gè)字節(jié)內(nèi)容都是0xAA
- 作用
- 讓接收設(shè)備調(diào)整接收頻率
- 以便與發(fā)送設(shè)備頻率一致
- 時(shí)鐘復(fù)原
- 組成:包含數(shù)據(jù)包的一些說明項(xiàng)
-
數(shù)據(jù)
- 內(nèi)容:數(shù)據(jù)包的具體內(nèi)容
- 長度
- min: 46字節(jié)
- max: 1500字節(jié)
-
尾部
- 檢驗(yàn)序列
- 檢驗(yàn)數(shù)據(jù)傳輸是否發(fā)生錯(cuò)誤
- 類型
- CRC:循環(huán)冗余校驗(yàn)碼
- 奇偶校驗(yàn)
MAC地址
- 定義
- 又稱硬件地址(物理地址)
- 即是網(wǎng)卡的地址
- 網(wǎng)卡出產(chǎn)都有一個(gè)唯一的mac地址
- 長度48位,通常用12十六進(jìn)制數(shù)表示
- 有了mac地址,就可以定位網(wǎng)卡和數(shù)據(jù)包的路徑
- 如何將數(shù)據(jù)包從發(fā)送方送到接收方
- 原始方式: 廣播
- 向局域網(wǎng)內(nèi)所有計(jì)算機(jī)發(fā)送
- 讓每臺(tái)機(jī)判斷,是否為接收方
- 轉(zhuǎn)發(fā)表
- 原始方式: 廣播
PPP協(xié)議
- 定義
- 用戶PC和ISP進(jìn)行通信時(shí)所使用的數(shù)據(jù)鏈路層系惡意
問題
- 是只有交換機(jī)維護(hù)一張mac轉(zhuǎn)發(fā)表,還是局域網(wǎng)中每臺(tái)機(jī)都有轉(zhuǎn)發(fā)表
- mac地址與ip地址
四、網(wǎng)絡(luò)層
網(wǎng)絡(luò)層由來
- 單純靠mac地址,廣州的網(wǎng)卡即可找到北京的網(wǎng)卡
- mac地址的設(shè)計(jì)無層次性
- 即無類似ip地址的網(wǎng)絡(luò)號(hào)設(shè)計(jì)
- 多個(gè)局域網(wǎng)無法順暢連接
- 交換機(jī)mac地址與局域網(wǎng)內(nèi)的計(jì)算機(jī)mac地址毫無關(guān)聯(lián)
- 判斷數(shù)據(jù)包是否在該局域網(wǎng),需遍歷轉(zhuǎn)發(fā)表或廣播
- 一旦網(wǎng)絡(luò)中的計(jì)算機(jī)太多
- 要么維護(hù)一張很大的轉(zhuǎn)發(fā)表
- 要么造成廣播風(fēng)暴
- 即無類似ip地址的網(wǎng)絡(luò)號(hào)設(shè)計(jì)
- 尋找問題的方案:必須區(qū)分哪些mac地址屬于同一個(gè)網(wǎng)絡(luò)
- mac地址做不到的原因
- mac地址本身只與產(chǎn)商有關(guān)
- mac地址與所處網(wǎng)絡(luò)無關(guān)
- 網(wǎng)絡(luò)層解決了該問題
- mac地址做不到的原因
- mac地址與ip地址邏輯上無聯(lián)系
- MAC地址綁定在網(wǎng)卡上
- ip是管理員/運(yùn)營山分配
網(wǎng)絡(luò)層的作用
- 引進(jìn)一套新的地址
- 區(qū)分不同的計(jì)算機(jī)(mac地址)是否屬于同一個(gè)子網(wǎng)絡(luò)
- 尋找確定計(jì)算機(jī)所在的子網(wǎng)絡(luò)
- mac則將數(shù)據(jù)包送到該子網(wǎng)絡(luò)中的目標(biāo)網(wǎng)卡
- 先ip選擇網(wǎng)絡(luò),再mac選擇目標(biāo)網(wǎng)卡
IP協(xié)議
-
定義
- 規(guī)定網(wǎng)絡(luò)地址的協(xié)議
-
作用
- 為每臺(tái)計(jì)算機(jī)分配ip地址
- 確定哪些地址在同一個(gè)網(wǎng)絡(luò)
-
協(xié)議類別
- IPV4
- IPV6
-
地址分類概要
- ( A B C D E )
- 主機(jī)號(hào)全為0
- 表示本網(wǎng)絡(luò)本身
- 主機(jī)號(hào)全為1
- 表示本網(wǎng)絡(luò)的廣播地址
- 32位全為0
- 表示本網(wǎng)絡(luò)上的本主機(jī)
- 32位全為1
-
表示整個(gè)tcp/ip網(wǎng)絡(luò)的廣播地址
-
-
特點(diǎn)(主要討論IPv4)
- 32位組成
- 0.0.0.0 -- 255.255.255.255
- 地址分網(wǎng)絡(luò)號(hào)、主機(jī)號(hào)
- 32位組成
-
相關(guān)概念
-
子網(wǎng)掩碼
- 作用
- 判斷兩臺(tái)計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò)
- 將ip地址的網(wǎng)絡(luò)部分全部置1,主機(jī)部分置0
- 每個(gè)ip有一個(gè)子網(wǎng)掩碼
- 如何判斷兩個(gè)ip地址屬同一網(wǎng)絡(luò)
- ip地址與各自的子網(wǎng)掩碼進(jìn)行AND運(yùn)算
- 將兩個(gè)and運(yùn)算結(jié)果進(jìn)行比較
- 結(jié)果相同則在同一網(wǎng)絡(luò)
- 反之,不在同一網(wǎng)絡(luò)
- 作用
-
劃分子網(wǎng)
image.png CIDR
-
NAT
- 定義
- 網(wǎng)絡(luò)地址轉(zhuǎn)換
- 專用網(wǎng)絡(luò)地址 轉(zhuǎn) 公用地址
- 在局域網(wǎng)中使用私有地址,聯(lián)網(wǎng)時(shí)轉(zhuǎn)而使用全局ip地址的技術(shù)
- 特點(diǎn)
- 大大節(jié)省ip地址的消耗
- 隱藏內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu),降低內(nèi)部網(wǎng)絡(luò)受攻擊的風(fēng)險(xiǎn)
- 私有ip地址網(wǎng)段
- A類: 1個(gè) =》 10.0.0.0 - 10.255.255.255
- B類:16個(gè) =》 172.16.0.0 - 172.31.255.255
- C類:256個(gè)=》 192.168.0.0 - 192.168.255.255
- 定義
-
VPN
-
IP數(shù)據(jù)包
-
組成
- 標(biāo)頭(首部)
- 首部前半部分
- 首部后半部分
- 可選字段,長度可變
- 提供錯(cuò)誤檢測(cè)及安全等機(jī)制
- 長度為20 - 60字節(jié)
- 數(shù)據(jù)
- 最長65515字節(jié)
- 標(biāo)頭(首部)
IP數(shù)據(jù)包總長度最長為65535字節(jié)
IP數(shù)據(jù)包直接放在以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”部分
-
IP數(shù)據(jù)包傳輸
- 需通過路由器的接力
- 每個(gè)主機(jī)和路由都存在有一個(gè)路由表
為IP包指明路線 - 路由選擇算法:生成路由表
RIP
BGP
-
由于以太網(wǎng)數(shù)據(jù)包中的數(shù)據(jù)部分,最長1500字節(jié)
- IP數(shù)據(jù)包大于1500字節(jié),則需拆包,分開發(fā)送
- 首部前半部分
- 固定長度,20字節(jié)
- 首部格式重要字段
- 版本
- ip協(xié)議的版本
- 占4位
- 首部長度
- 占四位,最大進(jìn)制數(shù)值是15
- 該字段所表示數(shù)的單位:32位字
- 一個(gè)32位字長是4字節(jié)
- 例
1111 : 15 * 4 = 60字節(jié)
0101 : 5 * 4 = 20字節(jié)
- 總長度
- 定義: 首部長度 + 數(shù)據(jù)長度
- 占16位,最大長度 2^16 - 1 = 65535字節(jié)
- 標(biāo)識(shí)
- 占16位
- 一個(gè)計(jì)數(shù)器
- 每產(chǎn)生一個(gè)數(shù)據(jù)報(bào)就加1
- 并不是序號(hào)
- 標(biāo)志
- 占三位,目前只有兩位有意義
- 最低位記為MF
- 1:表示后面還有分片
- 0
- 表示后面沒有分片
- 該片為最后一片
- 中間位為DF
- 1
- 不允許分片
- 0
- 允許分片
- 1
- 片偏移
- 占13位
- 以8個(gè)字節(jié)為偏移單位
- 指出該片在原分組中的相對(duì)位置
- 每個(gè)分片長度是8字節(jié)的整數(shù)倍
- 首部檢驗(yàn)和
- 占16位
- 只校驗(yàn)分組的首部
- 不校驗(yàn)數(shù)據(jù)部分
- 生存時(shí)間TTL
- 占8位
- 數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中可通過的路由器數(shù)的最大值
- TTL被減為0,則該分組必須被丟棄
- 協(xié)議
- 占8位
- 指出分組是使用何種協(xié)議
- 6:TCP
- 17:UDP
- 源地址字段
- 4字節(jié)
- 目的地址字段
- 4字節(jié)
- 版本
- 三個(gè)長度標(biāo)記
- 首部長度:4B
- 總長度:1B
- 片偏移:8B
相關(guān)協(xié)議
- ARP協(xié)議
- 在局域網(wǎng)中,通過目標(biāo)ip地址得到目標(biāo)mac地址的協(xié)議
- ICMP協(xié)議
- 特點(diǎn)
- ip協(xié)議的補(bǔ)充
- 介于網(wǎng)絡(luò)層和傳輸層
- 基于ip協(xié)議
- icmp包封裝在IP包中
- 功能
- 傳輸網(wǎng)絡(luò)診斷信息
- ICMP包類型
- 錯(cuò)誤信息
- 源頭冷卻
- 源主機(jī)向目的主機(jī)傳送數(shù)據(jù)過快
- 目的主機(jī)無法快速處理
- 此時(shí)發(fā)送該類型ICMP包,請(qǐng)求源主機(jī)溫柔點(diǎn)~
- 目的地?zé)o法到達(dá)
- 路由器接收到一個(gè)沒法進(jìn)一步接力的ip包時(shí)發(fā)出該類型ICMP包
- 超時(shí)
- TTL(IPv4)隨經(jīng)過的路由器而遞減
- 當(dāng)TTL值減為0時(shí),IP包超時(shí)
- 重新定向
- 路由器收到不應(yīng)該收的ip包
- 此時(shí)路由器向源主機(jī)發(fā)送該類型ICMP包
- 提醒源主機(jī)修改路由表
- 源頭冷卻
- 咨詢信息
- 回音
- ping
- 使用流程
1、使用ping命令
2、向目標(biāo)主機(jī)發(fā)送ICMP包(Echo詢問類型)
3、目標(biāo)主機(jī)接收到ICMP包
4、目標(biāo)主機(jī)回復(fù)ICMP(Echo詢問類型)
- 回音
- 錯(cuò)誤信息
- 特點(diǎn)
- 路由選擇協(xié)議
-
內(nèi)部網(wǎng)關(guān)協(xié)議IGP
- 目標(biāo)
- 路由器之間不斷交換路由信息
- RIP
- 定義
- 基于距離向量的路由選擇協(xié)議
- 優(yōu)劣
- 簡(jiǎn)單
- 只適用于小型互聯(lián)網(wǎng)
- 特點(diǎn)
僅和相鄰路由器交換信息
交換的信息:自己的路由表
按固定時(shí)間間隔交換路由信息:30秒
-
工作原理
- 剛工作時(shí),只知道直接連接的網(wǎng)絡(luò)的距離
若干次更新后,所有路由都知道各個(gè)網(wǎng)絡(luò)的路徑地址
通過路由收斂,得到正確的路由選擇信息
- 定義
- OSPF
- 定義
- 開放最短路徑優(yōu)先
- 克服RIP缺點(diǎn)
- 原理簡(jiǎn)單,實(shí)現(xiàn)復(fù)雜
- 與RIP的不同
- 向域內(nèi)系統(tǒng)所有路由器發(fā)送信息
- 發(fā)送的信息
- 與本路由器相鄰所有路由器的鏈路狀態(tài)
- 鏈路狀態(tài)發(fā)生變化時(shí),用洪泛法發(fā)送信息
- 全局
- RIP知道
- 所有網(wǎng)絡(luò)的距離
- 下一條路由器
- RIP不知道
- 全網(wǎng)的拓?fù)浣Y(jié)構(gòu)
- RIP知道
- OSPF更新過程收斂得快
-
流程
- 定義
- 目標(biāo)
-
外部網(wǎng)關(guān)協(xié)議EGP
- BGP
-
五、傳輸層
-
傳輸層的由來
- mac和ip解決了在互聯(lián)網(wǎng)任意兩臺(tái)機(jī)上建立通信的問題
- 但沒有解決在兩臺(tái)機(jī)上的進(jìn)程間建立通信的問題
-
傳輸層的功能
- 建立端口到端口的通信
- 順序控制
- 重發(fā)控制
- 流量控制
- 擁塞控制
- 提高網(wǎng)絡(luò)利用率
- 對(duì)比:網(wǎng)絡(luò)層
- 建立主機(jī)到主機(jī)的通信
- 識(shí)別TCP/IP或UDP/IP通信
- 五個(gè)信息
- 源ip
- 目標(biāo)ip
- 協(xié)議號(hào)
- 源端口號(hào)
- 目標(biāo)端口號(hào)
- 五個(gè)有一個(gè)不同,視為其他通信
- 五個(gè)信息
- 建立端口到端口的通信
-
傳輸層協(xié)議
-
UDP協(xié)議
- 組成
- 標(biāo)頭: 定義了發(fā)出端口/接收端口
- 數(shù)據(jù)
- udp數(shù)據(jù)包全放在IP數(shù)據(jù)包的數(shù)據(jù)部分
- 長度
- 標(biāo)頭
- 8個(gè)字節(jié)
- udp數(shù)據(jù)包總長度不超過65535字節(jié)
- 標(biāo)頭
- 優(yōu)點(diǎn)
- 簡(jiǎn)單
- 易實(shí)現(xiàn)
- 缺點(diǎn)
- 可靠性差
- 數(shù)據(jù)包發(fā)送后,無法知道對(duì)方是否收到
- 可靠性差
- 組成
-
TCP協(xié)議
- 組成
- 標(biāo)頭
- 數(shù)據(jù)
- 長度
- TCP數(shù)據(jù)包沒有長度限制
- 通常tcp數(shù)據(jù)包不會(huì)超過IP數(shù)據(jù)包
- 可近似認(rèn)為,是有確認(rèn)機(jī)制的UDP協(xié)議
- 每發(fā)一個(gè)數(shù)據(jù)包,都要求確認(rèn)
- 收不到確認(rèn),則重發(fā)
- 優(yōu)點(diǎn)
- 可靠性高: 能確保數(shù)據(jù)不會(huì)遺失
- 缺點(diǎn)
- 過程復(fù)雜
- 實(shí)現(xiàn)困難
- 耗較多資源
- 組成
-
TCP VS. UDP
- 可靠 —— 不可靠
- 面向連接 —— 面向無連接
- udp:用于對(duì)高速傳輸和實(shí)時(shí)性有較高要求的通信
- IP電話
- 多播與廣播通信
- 基于廣播的協(xié)議
- RIP
- DHCP
- tcp
- 傳輸控制協(xié)議
- udp
- 用戶數(shù)據(jù)包協(xié)議
-
常用端口號(hào)
- 20:FTP-DATA
- 21:FTP-CONTROL
- 22:SSH
- 23:TELNET
- 25:SMTP
- 53:DNS
- 80:HTTP
-
-
TCP流通信
- 背景
- 計(jì)算機(jī)數(shù)據(jù)本質(zhì)是有序的0/1序列
- 0/1序列如以byte為單位,就叫做文本流
- 目標(biāo)
- 實(shí)現(xiàn)端到端的可靠通信
- 確保數(shù)據(jù)到達(dá)的順序與文本流順序相符
- 實(shí)現(xiàn)形式
- 虛擬了文本流的通信
- 在不同計(jì)算機(jī)間進(jìn)行文本流的交互
- 流的要點(diǎn):次序
- 保持TCP包的次序
- 防止片段碎片化
- 如何確??煽?& 順序
- ACK回復(fù) & 重傳
- 接收方每收到一個(gè)片段后,發(fā)送一個(gè)ACK回復(fù)片段給發(fā)送方
- 收到片段序號(hào)為L
- 則ACK回復(fù)片段的回復(fù)號(hào)為L + 1
- 發(fā)送方一定時(shí)間內(nèi)未收到ACK回復(fù),則重新發(fā)送該片段
- 接收方每收到一個(gè)片段后,發(fā)送一個(gè)ACK回復(fù)片段給發(fā)送方
- 滑動(dòng)窗口
- 特點(diǎn)
- 同時(shí)應(yīng)用于接收方和發(fā)送方,收發(fā)雙方各有一個(gè)滑動(dòng)窗口
- 片段位于滑窗中時(shí),表示tcp正在處理該片段
- 滑窗越大,同時(shí)處理的片段數(shù)目越多
- 對(duì)于“不那么亂”的片段
- 利用緩存保存下來
- 期望在一定時(shí)間內(nèi)補(bǔ)充上之前的片段
- 對(duì)于“亂得厲害”的片段
- 拒絕,不發(fā)送對(duì)應(yīng)的ack
- 實(shí)現(xiàn):滑窗
- 特點(diǎn)
- ACK回復(fù) & 重傳
- 滑動(dòng)窗口
- 累計(jì)ACK回復(fù)
- tcp協(xié)議并不是每個(gè)片段都發(fā)送ACK回復(fù)
- 一般利用一個(gè)ack回復(fù)通知連續(xù)多個(gè)片段的成功接收
- 收到片段且應(yīng)該回復(fù)ack時(shí),會(huì)故意延遲一段時(shí)間
- 滑窗結(jié)構(gòu)
- 流量控制
- 窗口
- 累計(jì)ACK回復(fù)
- 重新發(fā)送
- 目的
- 實(shí)現(xiàn)tcp片段傳輸?shù)目煽啃?/li>
- 重新發(fā)送機(jī)制
- 超時(shí)重新發(fā)送
- 快速重新發(fā)送
- 目的
- tcp擁塞控制
- tcp片段頭部格式
- 組成
- 出發(fā)端口、目的地端口
- 序號(hào):使數(shù)據(jù)片段整理成文本流
- ack位:設(shè)定后,回復(fù)號(hào)才有效
- ack回復(fù)號(hào)
- 說明接收方期待接收的下一個(gè)片段
- 最后接收到的片段序號(hào) + 1
- SYN,占一位
-
FIN,占一位
- 組成
- 背景
-
TCP控制
-
組成
-
重傳控制
-
連接管理
-
滑窗
-
流量控制
-
擁塞控制
-
-
Nagle算法
- 目的
- 提高網(wǎng)絡(luò)利用率
- 解決糊涂窗口綜合癥
- 定義
- 發(fā)送端有該發(fā)送的數(shù)據(jù)
- 該發(fā)送的數(shù)據(jù)很少
- 進(jìn)行延遲發(fā)送的一種處理機(jī)制
- 滿足條件則發(fā)送
- 已發(fā)送的數(shù)據(jù)都已經(jīng)收到確認(rèn)應(yīng)答時(shí)
- 可以發(fā)送最大段長度(MSS)的數(shù)據(jù)時(shí)
- 目的
-
流量控制 vs. 擁塞控制
- 流
- 收發(fā)雙方點(diǎn)對(duì)點(diǎn)通信量的控制
- 抑制發(fā)送端數(shù)據(jù)的速率,以便接收端來得及接收
- 點(diǎn)對(duì)點(diǎn)的局部性問題
- 擁
- 確保通信子網(wǎng)有傳送待傳數(shù)據(jù)的能力
- 防止過多數(shù)據(jù)注入到網(wǎng)絡(luò)中
- 絡(luò)不至于過載
- 全局性問題
- 前提:網(wǎng)絡(luò)能承受現(xiàn)有網(wǎng)絡(luò)負(fù)荷
- 控制網(wǎng)絡(luò)傳輸?shù)男?/li>
- 確保通信子網(wǎng)有傳送待傳數(shù)據(jù)的能力
- 流
-
擁塞控制方法
-
慢開始 & 擁塞避免
- 快重傳 & 快恢復(fù)
-
-
-
tcp連接的建立與斷開
- 建立連接
- 目的
- 連接雙方交換初始序號(hào)ISN
- 第一個(gè)片段序號(hào)隨機(jī)生成
- 交換實(shí)現(xiàn)形式
- 通過SYN片段實(shí)現(xiàn)
- 連接雙方交換初始序號(hào)ISN
- 過程:三次握手
-
本質(zhì):雙方互發(fā)含有自己的ISN的syn片段
-
- 總結(jié)
- SYN = 1, seq = x
- SYN = 1, ACK = 1, seq = y, ack = y + 1
- ACK = 1, seq = x + 1, ack = y + 1
- 目的
- 連結(jié)通信
- 功能
- 兩段進(jìn)程利用該連接進(jìn)行通信
- 功能
- 斷開連接
連接終結(jié)通過特殊片段FIN
-
為什么要四次,而不合并
- tcp連接允許單向關(guān)閉
- 某端已經(jīng)可以關(guān)閉,但另一端不一定可以
-
為什么要等2MSL
- 保證A發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)B
- 防止已失效的連接請(qǐng)求報(bào)文段 出現(xiàn)在本連接中
-
過程:四次握手
- 連接雙方交換了四個(gè)片段
- 兩個(gè)FIN
-
個(gè)ACK
- 連接雙方交換了四個(gè)片段
-
總結(jié)
- FIN = 1, seq = u
- ACK = 1, seq = v, ack = u + 1
- FIN = 1, ACK =1, seq = w, ack = u + 1
- ACK = 1, seq = u + 1, ack = w + 1
ACK, SYN, FIN都一定等于1
-
tcp連接狀態(tài)管理
image.png
- 建立連接
六、應(yīng)用層
-
應(yīng)用層協(xié)議
- www
- ftp
- DHCP
- DNS
- 功能:將網(wǎng)址轉(zhuǎn)為ip地址
- DNS服務(wù)器
- 網(wǎng)絡(luò)中進(jìn)行域名解析的一些服務(wù)器
- 特點(diǎn)
- 基于udp,應(yīng)用層
- HTTP
-
dhcp
- 基本概念
- 工作在應(yīng)用層,基于udp協(xié)議
- 功能 & 作用
- 動(dòng)態(tài)分配IP地址
- 協(xié)議規(guī)定
- 每個(gè)子網(wǎng)絡(luò),會(huì)有一臺(tái)機(jī)負(fù)責(zé)管理本網(wǎng)絡(luò)的所有IP地址
- 新的計(jì)算機(jī)加入網(wǎng)絡(luò)
- 向dhcp服務(wù)器發(fā)送一個(gè)dhcp請(qǐng)求
- 申請(qǐng)IP地址和相關(guān)網(wǎng)絡(luò)參數(shù)
- 申請(qǐng)步驟
- 基本概念
-
dhcp申請(qǐng)步驟:
- 發(fā)dhcp包
- 幀頭部
- 發(fā)出方MAC地址
- 接收方MAC地址
- 未知,填入FF-FF-FF-FF-FF-FF
- ip頭部
- 發(fā)出方ip
- 未知,填入0.0.0.0
- 接收方ip
- 未知,填入255.255.255.255
- 發(fā)出方ip
- udp頭部
- 發(fā)出方端口: 68
- 接收方端口: 67
- 以廣播形式發(fā)送
- 幀頭部
- dhcp服務(wù)器接收包
- 檢測(cè)到ip
- 發(fā)出方:0.0.0.0
- 接收方:255.255.255.255
- 明白該包是發(fā)給自己的
- 檢測(cè)到ip
- 讀取dhcp包
- 分配ip地址
- 回送一個(gè)DHCP響應(yīng)包
- 幀頭部
- 發(fā)出方mac地址
- 接收方mac地址
- 已知
- ip頭部
- 發(fā)出方ip
- 已知
- 接收方ip
- 已知,但尚未配置
- 仍填入255.255.255.255
- 發(fā)出方ip
- udp頭部
- 發(fā)出方端口:67
- 接收方:68
- 幀頭部
- 發(fā)dhcp包
-
http
目的: 解決文件傳輸?shù)膯栴}
定義: web文檔傳輸協(xié)議
特點(diǎn): 明確區(qū)分哪端是客戶端,哪端是服務(wù)器端
-
實(shí)現(xiàn)
- 請(qǐng)求: 生成針對(duì)目標(biāo)web服務(wù)器的http請(qǐng)求報(bào)文
- 回復(fù): 對(duì)請(qǐng)求的內(nèi)容的處理,并回傳
- 過程
-
URI vs. URL
- URI
- Uniform Resource Identifier
- 統(tǒng)一資源標(biāo)識(shí)符
- 符串表示某一互聯(lián)網(wǎng)資源
- URL
- Uniform Resource Locator
- 統(tǒng)一資源定位符
- 表示資源的地點(diǎn)
- URL 是 URI的子集
- URI
-
格式
- 起始行
- 只有一行
- 是請(qǐng)求/回復(fù)最重要的信息
- 請(qǐng)求起始行:想要什么
- 回復(fù)起始行:發(fā)生什么
- 頭信息
- 多行
- 每行含一對(duì)鍵值對(duì)
- 主體
- 具體的資源
- http協(xié)議請(qǐng)求
- 起始行
-
請(qǐng)求方法類別
- GET
- 將特定資源傳送給客戶端
- 傳輸一些不重要的數(shù)據(jù)
- url?變量名 = 變量值
- POST
- 向服務(wù)器端提交數(shù)據(jù)
- 使用post,url不再被改寫,且數(shù)據(jù)位于http請(qǐng)求主體
- PUT
- 傳輸文件
- 類似FTP文件上傳
- 要求在請(qǐng)求報(bào)文的主體包含文件內(nèi)容
- 并保存到請(qǐng)求URI指定的位置
- 不帶驗(yàn)證機(jī)制
- DELETE
- 刪除文件
- 與put相反
- 不帶驗(yàn)證機(jī)制
- HEAD
- 和GET方法一樣
- 獲得報(bào)文首部
- 不返回報(bào)文主體部分
- 用于確認(rèn)URI的有效性及資源更新的日期時(shí)間
- OPTIONS
- 用來查詢針對(duì)請(qǐng)求URI指定的資源支持的方法
- 查詢支持的請(qǐng)求方法
- TRACE
- 追蹤路徑
- GET
-
報(bào)文類別
- 請(qǐng)求報(bào)文
- 組成
- 請(qǐng)求方法
- 請(qǐng)求URI
- 協(xié)議版本
- 可選的請(qǐng)求首部字段
- 內(nèi)容實(shí)體
- 組成
- 響應(yīng)報(bào)文
- 組成
- 協(xié)議版本
- 狀態(tài)碼
- 原因短語
- 用以解釋狀態(tài)碼
- 可選的響應(yīng)首部字段
- 實(shí)體主體
- 組成
- 請(qǐng)求報(bào)文
-
狀態(tài)碼類別
- 1XX
- 信息性狀態(tài)碼
- 接收的請(qǐng)求正在處理
- 2XX
- 成功狀態(tài)碼
- 請(qǐng)求正常處理完畢
- 相關(guān)狀態(tài)碼
- 200:ok
- 請(qǐng)求被正常處理
- 204:No Content
- 請(qǐng)求處理成功
- 但沒有資源需要返回
- 206:Partial Content
- 范圍請(qǐng)求
- 對(duì)資源某一部分的請(qǐng)求
- 200:ok
- 3XX
- 重定向狀態(tài)碼
- 需要進(jìn)行附加操作以完成請(qǐng)求
- 相關(guān)狀態(tài)碼
- 301:Moved Permanently
- 永久性重定向
- 資源的URI已更新
- 客戶端請(qǐng)更新書簽引用
- 302:Found
- 臨時(shí)性重定向
- 表示資源的URI已臨時(shí)定位到其他位置
- 希望用戶本次能使用新URI訪問
- 301:Moved Permanently
- 4XX
- 客戶端錯(cuò)誤狀態(tài)碼
- 服務(wù)器無法處理請(qǐng)求
- 相關(guān)狀態(tài)碼
- 400:Bad Request
服務(wù)器無法理解請(qǐng)求
表示報(bào)文中存在語法錯(cuò)誤 - 401:Unauthorized
- 表示請(qǐng)求需通過http認(rèn)證
- 第一次返回401,本頁面需認(rèn)證
- 第二次返回401,認(rèn)證失敗
- 403:Forbidden
- 對(duì)請(qǐng)求資源的訪問被拒絕訪問
- 404:Not Found
- 服務(wù)器上沒有請(qǐng)求的資源
- 400:Bad Request
- 5XX
- 服務(wù)器錯(cuò)誤狀態(tài)碼
- 服務(wù)器處理請(qǐng)求出錯(cuò)
- 相關(guān)狀態(tài)碼
- 500:Internal Server Error
- 內(nèi)部資源出現(xiàn)故障
- 503:Service Unavailable
- 服務(wù)器暫處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù)
- 500:Internal Server Error
- 302:重新定向
- 資源這里沒有,但知道另一個(gè)地方有
- 404:無法找到
- 找不到想要的資源
- 1XX
-
無狀態(tài)
- 定義
- 每次請(qǐng)求-回復(fù),都重新建立tcp
- 盡管已做優(yōu)化,但依然保持無狀態(tài)特性
- 致使服務(wù)器無法知道上次請(qǐng)求和本次請(qǐng)求來自同一個(gè)客戶端
- 每次請(qǐng)求都是一個(gè)全新的請(qǐng)求
- 協(xié)議自身不對(duì)請(qǐng)求和響應(yīng)之間的通信狀態(tài)進(jìn)行保存
- 每次請(qǐng)求-回復(fù),都重新建立tcp
- 定義
-
使http保持狀態(tài)
- Cookie
-
使http持久連接
- 目的
- 節(jié)省流量
- 防止造成無謂的tcp連接的建立和斷開
- 持久連接宗旨
- 一次tcp連接后可進(jìn)行多次請(qǐng)求和響應(yīng)
- 管線化
- 一次發(fā)送多個(gè)請(qǐng)求,不等待響應(yīng)
- 目的
-
Socket抽象層
- 定義
- 傳輸層之上,應(yīng)用層之下
-
連接過程
- 定義
七、串聯(lián)總結(jié)
- 網(wǎng)絡(luò)通信就是交換數(shù)據(jù)包
- 發(fā)送包需要兩個(gè)地址
- 對(duì)方的mac地址
- 對(duì)方的ip地址
- 發(fā)送包需判斷對(duì)方是否在同一個(gè)子網(wǎng)絡(luò)
- 同一子網(wǎng)
- 對(duì)方的mac地址
- 對(duì)方的ip地址
- 不同子網(wǎng)
- 網(wǎng)關(guān)的ip地址
-
對(duì)方的ip地址
- 同一子網(wǎng)
- 發(fā)送包需要兩個(gè)地址


























