原本想等到寫完才發(fā)出來的,但是太多了,只好每天寫一點(diǎn)點(diǎn)咯
目錄
1.1
1.2 計算機(jī)的性能指標(biāo)
1.3
待解決的問題厦章。
1.網(wǎng)絡(luò)為啥要分層钟鸵?
2.分層的原則是什么?
3.每一層含義和作用洋魂?
4.列舉一次網(wǎng)絡(luò)傳輸經(jīng)過的層級?
5.同一層的協(xié)議如何識別?
1.為什么要分組傳輸?
2.什么叫IMP?
3.IMP的點(diǎn)點(diǎn)信道的拓?fù)浣Y(jié)構(gòu)有幾種珊佣?為什么要這么設(shè)計?
4.IMP共享廣播信道?
1.2計算機(jī)的性能指標(biāo)
1.2.1 速率
又稱 數(shù)據(jù)率,代表數(shù)據(jù)的傳輸速率披粟,也就是每秒傳輸?shù)腷it量咒锻。
注意:數(shù)據(jù)率不代表傳播速率
1.2.2 帶寬
上限速率
1.2.3 吞吐量
單位時間內(nèi)通過某接口的實際數(shù)據(jù)量, 速率可以解釋為是一秒的吞吐量守屉。
1.2.4 時延
1.2.4.1 不同的時延
發(fā)送時延
主機(jī)或路由發(fā)送數(shù)據(jù)幀所需要的時間惑艇。
發(fā)送時延 = 數(shù)據(jù)幀長度(bit) / 發(fā)送速率(bit/s)
傳播時延
數(shù)據(jù)在信道上經(jīng)過的時間。
傳播時延 = 信道長度(m) / 信道傳播速率(m/s)
(注意兩個單位速率單位不同)處理時延
主機(jī)或路由收到消息處理的時延拇泛。(解析首部滨巴、校驗、查找路由)俺叭。排隊時延
分組轉(zhuǎn)發(fā)需要排隊等待的時延恭取。總時延計算
總時延 = 發(fā)送時延 + 傳播時延 + 處理時延 + 排隊時延
1.2.4.2 例題
題1:
試在下列條件下比較電路交換和分組交換。要傳送的報文共x(bit)绪颖。從源站到目的站共經(jīng)過后段鏈路秽荤,每段鏈路的傳播時延為d(s)甜奄,數(shù)據(jù)率為b(b/s)。在電路交換時電路的建立時間為s(s)窃款。在分組交換時分組長度為p(bit)课兄,且各結(jié)點(diǎn)的排隊等待時間可忽略不計。問在怎樣的條件下晨继,分組交換的時延比電路交換的要小?
解答:
- 電路交換:
kd + x/b + s
烟阐,電路交換的特點(diǎn)是不需要路由器去轉(zhuǎn)發(fā)分組,所以節(jié)點(diǎn)發(fā)送時延可以忽略紊扬。 - 分組交換:
kd + x/b + (k-1)p/b
蜒茄,這里我們可以理解成一個運(yùn)行的火車,當(dāng)最后一節(jié)通過時餐屎,整個火車通過檀葛。 而這個+ (k-1)p/b
,可以解析為腹缩,當(dāng)數(shù)據(jù)全部發(fā)送完屿聋,最后一分組在線路中運(yùn)行時間。 - 所以我們可以得出結(jié)論藏鹊,當(dāng) s > (k-1)p/b時润讥,分組交換的時延比電路交換的要小。 所以我們提高數(shù)據(jù)率和降低節(jié)點(diǎn)能夠降低分組交換的時延(注意盘寡,如果分包越多楚殿,處理時延就越大,這里忽略處理時延竿痰,所以看不出來脆粥。所以降低分包長度,并不一定能降低總時延)
題2:
在上題的分組交換網(wǎng)中菇曲,設(shè)報文長度和分組長度分別為x和(p+h)(bit)冠绢,其中p為分組的數(shù)據(jù)部分的長度抚吠,而h為每個分組所帶的控制信息固定長度常潮,與p的大小無關(guān)。通信的兩端共經(jīng)過k段鏈路楷力。鏈路的數(shù)據(jù)率為b(bit/s)喊式,但傳播時延和結(jié)點(diǎn)的排隊時間均可忽略不計。若打算使總的時延為最小萧朝,問分組的數(shù)據(jù)部分長度p應(yīng)取為多大岔留?
解答:
這道題的最坑的在于這個剛開始的發(fā)送時延怎么計算。
發(fā)送時延: (p+h)/b * (x/p)
全部節(jié)點(diǎn)發(fā)送時延:k * (p+h)/b
總時延:D=(p+h)/b * (x/p) + (k-1) * (p+h)/b
//TODO 這個式子怎么算的检柬,完全布吉島
1.2.5 時延帶寬積
時延帶寬積 = 總時延 * 帶寬
意義:主要是來衡量整個鏈路中的流量
1.2.6 返回時間RTT
主要來確定一個有效數(shù)據(jù)率献联,如TCP你發(fā)送一個包就必須ACK一次,比如這個包100Kb,傳送用了10s里逆,返回時間用了1s进胯,那么這個有效數(shù)據(jù)率就是:100*1024 * 8 /(10+1)
1.2.7 利用率
公式:D=D0/1-U
(其中D 表示當(dāng)前時延,D0表示網(wǎng)絡(luò)空閑時延原押,U表示利用率)
(這個可以反映出胁镐,利用率越高時延也就越大)
3 數(shù)據(jù)鏈路層
可以看出,邊緣需要解析5層協(xié)議诸衔,而核心只需要解析3層協(xié)議就夠了盯漂,因為只需要解析出ip,就知道如何傳輸了笨农。
//TODO 數(shù)據(jù)鏈路層是干嘛的就缆?
可以通過圖上,大概查出谒亦,物理鏈路層主要研究鏈路上如何保證正常通信违崇,以及信道的通信方式。
3.1 鏈路層基本概念
- 鏈路 : 結(jié)點(diǎn)和相鄰結(jié)點(diǎn)間的一段物理線路(有線或無線)诊霹。
- 數(shù)據(jù)鏈路 = 通訊協(xié)議(規(guī)程)(網(wǎng)卡實現(xiàn)) + 物理鏈路
- 幀:數(shù)據(jù)鏈路層數(shù)據(jù)羞延,每傳一次,我們稱為幀脾还,幀就是鏈路層協(xié)議單元伴箩。
3.2 基本步驟
- 將網(wǎng)絡(luò)層的ip數(shù)據(jù)包封裝成幀。
- 將幀發(fā)送到鏈路上鄙漏。
- 接受幀并取出其中的IP數(shù)據(jù)報交給網(wǎng)絡(luò)層嗤谚。
3.3 三個基本問題
3.3.1 如何將數(shù)據(jù)封裝成幀?
首部:SOH (start of header)
尾部:EOT (end of transmission)
最大傳送單元:MTU(Maximum Transfer Unit)注意:指不包括首部和尾部的ip數(shù)據(jù)報怔蚌。
首部和尾部一般作用是定界符巩步,但不僅限于此,而ETU則一般出于效率和占用鏈路的時間考慮桦踊,原則上椅野,出于傳輸效率上考慮,數(shù)據(jù)報部分應(yīng)該盡可能大于首部加尾部的長度籍胯。
定界符的幾種常見方式與選擇:
方案 | 優(yōu)點(diǎn) | 缺點(diǎn) |
---|---|---|
SOH | 需要轉(zhuǎn)義竟闪、包含字符少 | 1.SOH字符轉(zhuǎn)義,2.無法做校驗 |
SOH+length | 1. 可做校驗 2. 需要轉(zhuǎn)義字符少 | 1.SOH字符需要轉(zhuǎn)義 2. length的占用的字節(jié)不確定 |
SOH+EOT | 1. 可做校驗 2. 占用字節(jié)穩(wěn)定 | 1.SOH杖狼、EOT字符需要轉(zhuǎn)義 |
3.3.2 透明傳輸炼蛤?
1. 傳輸就傳輸,為啥要講透明傳輸蝶涩,那什么是不透明傳輸理朋?
因為首部或者尾部的數(shù)據(jù)可能會出現(xiàn)重合絮识,那么就不可以傳輸這些特殊字符,這就是不透明傳輸嗽上,比如出現(xiàn)了EOT相同的字符笋除,鏈路層就會錯誤的找到邊界。
2. 如何解決不透明傳輸
我們可以類比java處理字符串中引號問題炸裆,在java中垃它,我們加入了轉(zhuǎn)義字符 \
,來處理字符串中的特殊字符烹看,那么在解決透明傳輸上国拇,我們也可以參考這種辦法。
字符填充法:
我們裝幀的數(shù)據(jù)部分里面的 "SOT"惯殊、"EOT"前面加上"ESC"作為轉(zhuǎn)義符酱吝,我們?nèi)瑫r,去掉"ESC"字符土思。
這里可能數(shù)據(jù)部分里面也有"ESC"字符务热,我們可以在"ESC"字符前再加上"ESC"字符。
3.3.3 差錯校驗
現(xiàn)實的鏈路并不理想己儒,在比特傳輸過程中可能由1變成0崎岂,也可能有0變成1,這種差錯叫比特差錯闪湾。目前在物理鏈路層冲甘,廣泛采用循環(huán)冗余校驗(CRC)的校驗技術(shù)。
循環(huán)冗余校驗(CRC):
假定幀的數(shù)據(jù)部分長度為k途样,假定待傳數(shù)據(jù)為M 江醇。
CRC運(yùn)算就是在數(shù)據(jù)M后面添加冗余碼n,即發(fā)送長度為 (k + n)何暇。發(fā)送的雙方事先商定好(n+1)位的除數(shù)P(這個P我們有相關(guān)規(guī)范)陶夜,用M采用MOD2除法除以P,得出商為Q而余數(shù)為R(商沒用)裆站,這個余數(shù)R就拼接到M后面一起發(fā)出去条辟。我們稱這個要拼接的余數(shù)為 FCS(Frame Check Sequence)幀校驗序列, 而接受方遏插,使用除數(shù)P看是否可以采用MOD2整除(M+R)來判斷是否成功交換捂贿。
舉個栗子:
我們現(xiàn)在幀的數(shù)據(jù)M = 101001 纠修,我們約定好除數(shù)是P = 1101 (說明n=3)胳嘲,那么如何得到完整數(shù)據(jù)?
- 首先得到長度 使用模2乘法: 2^n * M,實際上就是在M后面添上n非0扣草,得到新的M (101001000)
M : 1 0 1 0 0 1
2^n : 1 0 0 0
---------------------
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 0 1 0 0 1
---------------------------------
1 0 1 0 0 1 0 0 0
- 使用模2運(yùn)算了牛,將得到的新M除以P颜屠,得到商(110101),余數(shù) (001)
1 1 0 1 0 1
____________________________________
1101 √ 1 0 1 0 0 1 0 0 0
1 1 0 1
-----------------
0 1 1 1 0
1 1 0 1
---------------------
0 0 1 1 1 0
1 1 0 1
---------------------
0 0 1 1 0 0
1 1 0 1
-------------
0 0 0 1
- 將新的M (101001000)或上 余數(shù)R(001)最終獲得發(fā)送的數(shù)為 :101001001鹰祸。
- 接收端處理
客戶端收到信息后:對每一幀都用模2運(yùn)算除以相同的除數(shù)P甫窟,看余數(shù)是否為0。(如果出現(xiàn)誤碼余數(shù)為0的概率很型苡ぁ)
如果余數(shù)為0:就幀沒有誤差粗井,如果出現(xiàn)異常。
如果余數(shù)不為0:說明幀存在誤差街图,直接丟棄浇衬。
除數(shù)P的表示:
除數(shù)P可以用P(X)來表示,其中多項式P(X)被稱為生成多項式餐济。
例如耘擂,上面除數(shù)P=1101可以表示P(X) = X^3 +X^2+1
目前常用的多項式有:
//TODO 如何來算CRC16? 以及CRC16
//TODO 等到學(xué)會散列的時候來看看
https://zhidao.baidu.com/question/185131161.html
https://bbs.csdn.net/topics/390455236/
https://blog.csdn.net/lzy20ls/article/details/75309015
https://blog.csdn.net/xing414736597/article/details/78693781
https://en.wikipedia.org/wiki/Cyclic_redundancy_check
3.4 可靠運(yùn)輸和不可靠運(yùn)輸
3.4.1 比特差錯與傳輸差錯絮姆。
傳輸常見差錯可分為:比特差錯醉冤、傳輸差錯。
比特差錯:接受的幀和原發(fā)送幀的數(shù)據(jù)不一致篙悯。
傳輸差錯:
幀丟失蚁阳、幀重復(fù)、幀失序
1)幀丟失:[#1]鸽照,[#3]
2)幀重復(fù):[#1]韵吨,[#2],[#2]移宅,[#3]
3)幀失序:[#1]归粉,[#3],[#2]
所謂的無比特差錯運(yùn)輸就是指傳輸中干掉了比特差錯漏峰,目前我們通過CRC僅能做到對幀無比特差錯接受糠悼,即凡是接受端數(shù)據(jù)鏈路層接受到的幀,我們都認(rèn)為這些幀在傳輸過程中無差錯浅乔,但是這并不代表可靠運(yùn)輸
3.4.2 什么是可靠傳輸倔喂,如何做到以及優(yōu)缺點(diǎn)和場景
介紹:
簡單的說,可靠傳輸就是干掉比特差錯和傳輸差錯靖苇。
如何做到:
即在無比特差錯傳輸?shù)幕A(chǔ)上加上"幀編號","確認(rèn)","重傳機(jī)制"席噩,來確保可靠傳輸贤壁。
優(yōu)缺:
但是我們可以看出悼枢,多加了3種機(jī)制,可以保證幀的傳輸不出差錯的同時脾拆,意味著通訊效率的降低馒索。
場景:
可以看出:
1.可靠運(yùn)輸?shù)膱鼍斑m用于通訊質(zhì)量較差線路莹妒,容易出現(xiàn)幀丟失、幀重復(fù)绰上、幀失序等問題旨怠。
2.不可靠運(yùn)輸?shù)膱鼍斑m用于通訊質(zhì)量較好的線路
3.4.3 互聯(lián)網(wǎng)的普遍的傳輸
事實上當(dāng)前互聯(lián)網(wǎng)采用一種貪心策略。
即:
- 對于通信質(zhì)量良好的鏈路蜈块,我們不做確認(rèn)和重傳鉴腻,即做無比特差錯傳輸,將可靠性傳輸?shù)娜蝿?wù)交給傳輸層來做(如TCP),
- 對于通訊質(zhì)量差的鏈路百揭,采用確認(rèn)和重傳拘哨,向上提供可靠傳輸服務(wù)。
3.5 點(diǎn)對點(diǎn)協(xié)議 PPP
- PPP是目前使用最廣泛的數(shù)據(jù)鏈路層協(xié)議信峻,不管是低速的撥號貓連接還是高速的光纖鏈路倦青,都適用PPP協(xié)議。
- 因特網(wǎng)用戶通常都要連接到某個ISP 才能接入到因特網(wǎng)盹舞。 PPP協(xié)議就是用戶計算機(jī)和ISP進(jìn)行通信時所使用的數(shù)據(jù)鏈路層協(xié)議产镐。 ISP使用PPP協(xié)議為計算機(jī)分配一些網(wǎng)絡(luò)參數(shù)(如IP地址、域名等)踢步。
3.5.1 特點(diǎn)
- 簡單:
對數(shù)據(jù)鏈路層的幀不需要確認(rèn)癣亚、重傳、序號获印,提供不可靠數(shù)據(jù)服務(wù)述雾。(由傳輸層如TCP來做可靠校驗)
為什么PPP協(xié)議簡單?
由于不管是核心部分還是邊緣部分兼丰,都會解析鏈路層協(xié)議玻孟,所以盡可能的將鏈路層協(xié)議寫簡單,這樣解析快鳍征∈螋幔可以將復(fù)雜的部分放入傳輸層協(xié)議(如TCP)來處理。
大致流程:
接收方接受到一個幀艳丛,對幀進(jìn)行CRC校驗匣掸,如果校驗通過就收下這個幀,反之丟棄氮双。
- 支持多種網(wǎng)絡(luò)協(xié)議
如IP碰酝、IPX。(向上兼容) - 支持類型鏈路
串行戴差、并行送爸、同步、異步、光信號碱璃、電信號(向下兼容) - 檢查連接狀態(tài)
隔幾分鐘就發(fā)心跳包弄痹。
主要用于那些出現(xiàn)故障饭入,隔了一段時間又恢復(fù)的鏈路嵌器。 - 網(wǎng)絡(luò)層地址協(xié)商
//TODO - 數(shù)據(jù)壓縮協(xié)商(不做強(qiáng)制規(guī)定,未進(jìn)入標(biāo)準(zhǔn)化)
如出現(xiàn)連續(xù)出現(xiàn)80個1谐丢,我們就壓縮這個80個1爽航,用過標(biāo)志符表示80個1, 反正有很多壓縮方法乾忱。
7.PPP協(xié)議僅支持點(diǎn)對點(diǎn)鏈路通信讥珍,不支持多點(diǎn)線路(一個主站輪流和多個從站通信)
8.PPP協(xié)議僅支持全雙工鏈路。
3.5.2 協(xié)議組成
3.5.3 幀組成字段
- 字段F :為標(biāo)識首部或尾部
- 字段A:地址字段窄瘟,OXFF(無用衷佃,在PPP協(xié)議中可以去掉)
- 字段C:控制字段,OxO3(無用蹄葱,在PPP協(xié)議中可以去掉)
- 字段協(xié)議:協(xié)議字段氏义,占2個字節(jié),相當(dāng)于一個Type图云,標(biāo)識PPP幀信息部分類型惯悠,其中 0x0021標(biāo)識PPP幀就是IP數(shù)據(jù)報,若為0xC021標(biāo)識PPP幀信息部分為鏈路控制協(xié)議LCP的數(shù)據(jù)竣况,而0x8021標(biāo)識標(biāo)識PPP幀信息部分為網(wǎng)絡(luò)控制協(xié)議NCP數(shù)據(jù)克婶。
- 信息部分:可以是ip數(shù)據(jù)包,也可以是LCP或NCP的控制協(xié)議丹泉,最大為MTU情萤。
- FCS:2個字節(jié),推測為CRC16的校驗碼
3.5.4 異步傳輸和同步傳輸
http://www.reibang.com/p/b0c5810a79ef
可以看出摹恨,異步傳輸是面向字符紫岩,而同步傳輸面向幀。
3.5.5 字節(jié)填充
當(dāng)采取異步傳輸時睬塌,PPP協(xié)議選取字節(jié)填充泉蝌。
- 將每一個0x7e轉(zhuǎn)換成0x7d,0x5e
- 將每一個0x7d轉(zhuǎn)換成0x7d,0x5d
- 將每一個小于0x23的字符前面加上0x7d
3.5.6 比特填充
當(dāng)采取同步傳輸時,PPP協(xié)議采取比特填充揩晴。
對幀的數(shù)據(jù)部分中勋陪,每5個連續(xù)的1,后面添加一個0硫兰,這么做主要是诅愚,防止0x7e出現(xiàn)。
然后在接受端,每5個連續(xù)的1后面減少一個0违孝。
3.5.7 PPP協(xié)議的工作方式
PPP鏈路的初始化:
- 用戶撥號刹前,建立一條從個人主機(jī)到ISP的物理鏈路。
- 個人主機(jī)向ISP發(fā)送鏈路控制協(xié)議LCP分組雌桑,建立LCP連接喇喉。(這些分組和響應(yīng)決定了將要使用的一些PPP參數(shù),如 是否使用PPP協(xié)議的地址和控制字段)
- 待成功建立LCP連接后校坑,接著進(jìn)行網(wǎng)絡(luò)層配置拣技,NCP協(xié)議給個人主機(jī)分配一個臨時IP,此時用戶個人電腦就成為互聯(lián)網(wǎng)上一個有IP地址的主機(jī)了耍目。
3.6 習(xí)題
LCP包括哪些功能膏斤?
封裝成幀、透明傳輸邪驮、差錯校驗莫辨、連接狀態(tài)檢測。