A. 數據鏈路層如何工作
數據鏈路層最重要的作用就是:通過一些數據鏈路層協議(即鏈路控制規程),在不太可靠的物理鏈路上實現可靠的數據傳輸。再具體些,可將數據鏈路層的主要功能歸納如下:
1.鏈路管理:當網路中的兩個結點要進行通信時,數據的發方必須確知收方是否已經處在准備接收的狀態。為此,通信的雙方必須先要交換一些必要的信息。或者用我們的術語,必須先建立一條數據鏈路。同樣地,在傳輸數據時要維持數據鏈路,而在通信完畢時要釋放數據鏈路。數據鏈路的建立、維持和釋放就叫做鏈路管理。
2.幀同步:在數據鏈路層,數據的傳送單位是幀。數據一幀一幀地傳送,就可以在出現差錯時,將有差錯的幀再重傳一次,而避免了將全部數據都進行重傳。幀同步指的是收方如何從收到的比特流中准確地區分出一幀的開始和結束。
3.流量控制:發方發送數據的速率必須使收方來得及接收。當收方來不及接收時,就必須及時控制發方發送數據的速率。
4.差錯控制:在計算機通信中,一般都要求有極低的比特差錯率。為此,廣泛地採用了編碼技術。編碼技術有兩大類。一類是前向糾錯,即收方收到有差錯的數據幀時,能夠自動將差錯改正過來。這種方法的開銷較大,不適合於計算機通信。另一類是檢錯重發,即收方可以檢測出收到的幀中有差錯(但並不知道是哪幾個比特錯了)。於是就讓發方重復發送這一幀,直到收方正確收到這一幀為止。這種方法在計算機通信中是最常用的。本章所要討論的協議,都是採用檢錯重發這種差錯控制方法。為了防止發送方等待收方應答時出現等待死鎖,還將提供超時控制機制。重發幀後,為了防止收方收到重復幀,通常為幀給定一個幀序號。
5.區分數據和控制信息:由於數據和控制信息都是在同一信道中傳送,而在許多情況下,數據和控制信息處於同一幀中。因此一定要有相應的措施使收方能夠將它們區分開來。
6.透明傳輸:簡單的說,透明傳輸就是發送方發送什麼的數據,不管數據傳輸過程是如何實現的接收方將收到什麼樣的數據。更確切地說,所謂透明傳輸就是不管所傳數據是什麼樣的比特組合,都應當能夠在鏈路上傳送。當所傳數據中的比特組合恰巧出現了與某一個控制信息完全一樣時,必須採取適當的措施,使收方不會將這樣的數據誤認為是某種控制信息。這樣才能保證數據鏈路層的傳輸的透明的。
7.定址:在多點連接的情況下,必須保證每一幀都能送到正確的目的站。收方也應當知道發方是哪一個站。
應當指出的是:雖然本章以是廣域網為背景來討論數據鏈路層協議的,但是,這里所涉及的許多概念對學習整個課程都是很重要的。至於比廣域網更為復雜的區域網的數據鏈路層協議,將在第5章進行討論。
B. 如何學習區塊鏈技術
1、技術語言
Python和Go這兩門語言是眾多公司招聘都提到的技術語言。需要優先學習。而且這兩種語言在區塊鏈之外的技術方向也有很大的應用。比如Go用在大並發系統的後台構築,Python用於人工智慧系統構築。所以學習這兩門語言是優先考慮的問題。
2、技術框架
掌握Bitcoin、ETH和Hyperledger的一種或多種。BTC就不用說了,底層是C++寫的,大量的貨幣類項目,如萊特幣,dash,門羅,zcash等都使用比特幣的技術進行二次開發。
ETH則是區塊鏈2.0的代表,可以在ETH網路上構建各種各樣的應用類Dapp。現在大量的應用類區塊鏈項目都是使用ETH平台開發的。
Hyperledger fabric則是IBM力推的區塊鏈開發平台,主要用於聯盟鏈的開發,是目前普及度最高的聯盟鏈開發平台。
3、演算法
POW(工作量證明演算法),POS(權益證明演算法),PBFT(拜占庭容錯演算法)等都是區塊鏈中密碼學部分的重要組成,對於這些演算法有充分的了解,有利於你參加區塊鏈項目底層開發時能夠對密碼學的部分有更好的理解。
(2)數據鏈如何學習擴展閱讀:
區塊鏈技術就是一種分布式記賬技術,它的特點就是去中心化、公開透明,讓每個人都可以參與資料庫建立,而且每個建立的數據又是不可篡改的,大家都參與了,陌生人之間的信任問題也就解決了。
區塊鏈技術出現了,它是個全民參與的記賬技術,AB之間的交易信息和數據公布於眾,而且是不可篡改的,大家都知道有這個事情的發生,那麼這里就不需要什麼權威的第三方C了,或者說系統里的每一個都是充當了C的角色,這也叫做去中心化。
C. 如何學習區塊鏈技術
1.
第一階段:區塊鏈技術理論入門基礎適合對於區塊鏈技術有多方面需求的同學學習使用,是目前整理的最全面,最新...
2.
第二階段:區塊鏈技術研發入門到精通簡介:毫無疑問,區塊鏈技術在當下是一個非常火的新技術,受到全球各大型IT...
3.
第三階段:最新高值精選電子書全集簡介:除了視頻教程,我...
查看全部
D. 如何系統學習區塊鏈技術
在最初自己自學區塊鏈相關知識的時候,可以採用「自下而上」的方法,也就是通過看書、閱讀白皮書等方式,自己查資料,再自行匯總和連接起這些知識,整合成一個較為完整的知識體系。
一、學習白皮書
上大學之前,我讀過很多有關《論語》的書,都是關於應該如何讀論語,應該如何理解論語的解讀。直到有一天我發現,如此鍾愛《論語》的我,卻從來沒有耐下性子來,認真讀一讀《論語》的原本。
於是,我去書店買回了一本《論語》,從頭到尾認認真真地看了一遍,發現其實裡面有太多細節和感悟,是沒有辦法通過任何解讀傳遞的。而居然之前花了大量的時間,閱讀了大量的解讀,真的是捨本逐末,不得要領地在努力。
每個領域都一樣。當你不了解它的時候,你會對它產生一種莫名的畏懼,認為它高高在上,高不可攀。為了快速踏進這些領域,你會在它周圍尋找很多所謂的「解讀」,打聽很多「消息」。
二、技術角度
基礎階段:
1、《區塊鏈開發指南》-作者申屠青春:
作者多餘比特幣底層的研究可謂是非常深入,講解的也非常通俗易懂。
2、《區塊鏈技術指南》-作者鄒均:
作為國內第一本從技術角度講解區塊鏈的書籍,值得一讀,2016年出版以來一致評價不錯。
3、《區塊鏈 原理、設計與應用》-作者楊保華陳昌:
陳昌前輩作為紙貴的CTO、記得之前的墨鏈就是基於Hyperledger Fabric的,所以這本書對於Hyperledger 相關開源產品的講解很透徹。
3、《區塊鏈世界》
這本書分為上下兩篇。上篇通過翔實的資料,全面地回顧了區塊鏈從2008年誕生、成長和逐步發展的歷程,詳盡地介紹了區塊鏈技術的獨創性、機制的科學性、邏輯的藝術性,通過金融、防偽、醫療等十餘個行業場景介紹區塊鏈的應用特性。下篇結合二十國集團峰會精神、 「十三五」規劃等蕞新政策,探索研究區塊鏈與數字經濟的結合,以及作者對行業發展趨勢的觀點和建議。
E. 怎樣學好數據結構
數據結構作為大學計算機相關專業的學生來說是一門十分重要的課程,無論是以後演算法思想的滲透,還是工作中程序代碼的處理,都離不開數據結構的影子。但是因為數據結構知識較多,並且比較抽象,對於很多人來說學它就感到頭疼。其實大可不必,數據結構的學習自然有其對應的方法。
還有一點,要想學習好數據結構,好的課程是必不可少的,如果大學老師講的足夠好的話完全可以帶你領略數據結構的美麗風景,如果你想自學成才的話,推薦浙江大學陳越姥姥的課和清華大學鄧俊輝老師的課,都十分透徹易懂。
F. 學習區塊鏈我們需要了解什麼
首先需要了解網路通信方面的相關內容,其次是數據儲存、加密技術、共識機制和安全技術,最後是跨鏈技術和鏈下技術。個人認為要學習區塊鏈應該從實踐出發,如果是程序員可以去區塊鏈相關的公司接觸相關的業務,在工作中學習。我之前在煊凌科技工作,公司在區塊鏈開發方面的實力和經驗都很不錯,不管是工作還是合作都是不錯的對象。
從名字上可以看出「區塊鏈」是由「區塊」和「鏈」組成的。一個個的區塊(數據塊)通過某種方式連接在一起就形成了一個區塊鏈。
區塊數據包含哪些呢?通過什麼方式連接在一起呢?
可以看到區塊中包含區塊頭和前個區塊頭的哈希值,這樣就確定了所有的區塊可以按照一定的順序鏈接在一起。其中哈希值是按照哈希加密的函數來實現的。在C/C++語言中有指針這個概念:指針就是地址,一塊內存數據在內存中的地址。區塊鏈也是根據類似的概念把每個區塊的哈希值作為下一個區塊的地址。
什麼是哈希值?
哈希值就是一組數據的「摘要」,是通過哈希加密演算法生成的一組字元串。而且秘鑰有一組秘鑰,公鑰和撕咬,公鑰提供給外界來加密數據,用來解密數據。通過公鑰加密好的數據,只能通過私鑰來解密,即使別人有拿到數據有公鑰也無法解密數據。這樣就保證了數據安全性。私鑰也可以作為這個節點的唯一身份驗證,這樣就保證了每個節點的隱私,實現了匿名。如果其中一個節點修改了其中的某部分數據,那麼這個區塊的哈希值就會發生變化,從而導致後面的所有區塊都會發生變化,當這個區塊把修改好的數據通知其他區塊時,其他的區塊發現發過的數據與自己保存的數據不一致,就拒絕接受數據寫入自己的賬本中。從而保證了數據的一致性。
什麼是去中心化?
通常大家所有的QQ、微信等,都是有一個後台伺服器的,統一的處理各個手機傳過來的數據,通過伺服器統一來處理。區塊鏈技術就是取消統一的伺服器處理,每個節點即使客戶端又是伺服器。當某個節點通過網路發送數據後,其餘的節點接收到數據然後通過一系列的驗證,確認數據沒有問題後,寫入到自己的區塊中。這個節點就是伺服器,其他節點就是客戶端。同樣的,當這個節點接收到數據後,其他某個節點就是伺服器,這個節點就是客戶端。這樣做的好處就是去除了伺服器,每個節點可以獨立的處理數據,節約成本。
如何保持數據一致性?
所謂數據一致性就是所有節點的數據或者狀態在同一時刻保持一致。區塊鏈的本質是一個分布式的應用軟體,如果是中心化的場景,達成一致是不成問題的,因為只有個數據備份。分布式環境中,是通過網路來傳遞數據,而且在網路環境中可能是不可靠的、延時甚至出現故障、關機重啟等各種各樣影響數據一致情況。
FLP定理 :不要浪費時間去為了非同步分布式系統設計在任意場景下都能實現共識的演算法,在允許節點失效的情況下,純粹非同步系統無法確保一致性在有限的時間完成。
CAP定理:分布式計算系統不可能同時確保一致性、可用性和分區容錯性,這三者不可能兼得。
G. 【網路】TCP/IP-數據鏈路層
本文主要從數據鏈路層主要功能展開,涉及到以下相關概念
首先我們看看TCP/IP網路模型中數據鏈路層的功能定義:透明傳輸,差錯檢測,封裝成幀
數據鏈路層進程的任務是在兩個網路層進程之間提供無錯誤的,透明的通信
1 提供差錯檢測機制(處理傳輸錯誤)
2使用滑動窗口機制進行流量控制 (調節數據流,確保慢速的接收方不會被發送方淹沒)
3 向網路層提供一個定義良好的網路介面
在OSI參考模型中,上層使用下層所提供的服務必須與下層交換命令,這些命令稱為 服務原語 。
相鄰層之間的介面稱為 服務訪問點SAP ,
對等層之間傳送的數據單位稱為 協議數據單元PDU
以下圖說明網路鏈路,數據傳輸構成,和數據鏈路層分層
可分為 (面向字元的通信規程) 和 (面向比特的通信規程) 兩類
「TCP 是一個面向位元組流的協議」指的是「位元組就是位元組」
在令牌環網中,令牌環的幀格式有兩種,分別是 (令牌幀) 和 (數據幀)
在點-點鏈路中,發送信息和命令的站稱為主站,接收信息和命令而發出確認信息或響應的站稱為從站,兼有主、從功能可發送命令與響應的站稱為復合站
透明傳輸模式
0201 工作原理
乙太網有兩類
01 經典乙太網,解決多路訪問問題
02 互動式乙太網,使用交換機連接不同的計算機。
交換機中每個埠有自己獨立的沖突域。
採用較為靈活的無連接的工作方式,即不必先建立連接就可以直接發送數據。
乙太網對發送的數據幀不進行編號,也不要求對方發回確認。
乙太網提供的服務是不可靠的交付,即盡最大努力的交付。
乙太網是使用1-持續CSMA/CD 技術的匯流排型網路。
乙太網的邏輯結構是匯流排型結構,物理結構是星型或者拓撲星型結構。
乙太網屬於數據鏈路層協議應用,規定的最短幀長 最短幀長度為64位元組。
為了確保最小幀長為64位元組,同時維持網路直徑為200m,千兆乙太網採用了載波擴展和數據包分組兩種技術。
為什麼要限制最短幀長
乙太網的爭用期是指匯流排兩端的兩個站之間的往返傳播時延,又稱為碰撞窗口。
乙太網的端到端往返時延 2τ稱為爭用期,或碰撞窗口。
爭用期長度為 2τ,即端到端 傳播時延 的兩倍。
經過爭用期這段時間還沒有檢測到碰撞,才能肯定這次發送不會發生碰撞
網橋工作在數據鏈路層,作用是連接不用的物理區域網形成邏輯區域網,它們通過檢查數據鏈路層地址來轉發幀。用於連接類型相似的區域網。
在網橋中,幀從物理層往上傳給乙太網的MAC層。
路由器作用於網路層,提供網路層協議轉換。通過檢查數據包地址,並基於數據包地址路由數據包。在網路之間存儲和轉發分組
網關提供傳輸層及以上各層協議之間的轉換
網橋與路由器的區別
1 二層設備與三層設備
2 網橋連接相似的區域網,路由器連接不同的網路
3 網橋不隔離廣播,而路由器可以隔離廣播
網橋的主要任務是地址學習和幀轉發
乙太網交換機實際上是一個多埠的網橋。
節點交換機與乙太網交換機都是數據鏈路層設備,前者使用點對點信道,後者使用廣播信道。
例:乙太網交換機在收到一幀後先進行存儲,在轉發幀是,對於未知目的的幀,可以採用廣播的方式轉發。
交換機是按照存儲轉發方式工作的,在收到一幀後,一定是先將它存儲再進行處理,不管目的地址。在轉發時,查找轉發表和收到幀的源地址有無匹配的項目,有則更新,無則向除接收該幀的介面以外轉發幀,即廣播。
乙太網交換機按照自學習演算法建立轉發表,它通過 ARP協議 進行地址學習。ARP協議 不屬於鏈路層 。
A RP不是向網路層提供服務,它 本身就是網路層的一部分,幫 助向傳輸層提供服務。
在數據鏈路層不存在IP 地址的問題。數據鏈路層協議是象HDLC 和PPP 這樣的協議,它們
把比特串從線路的一端傳送到另一端。
例題
高級數據鏈路控制(High-Level Data Link Control或簡稱HDLC),是一個在同步網上傳輸數據、面向比特的【可靠傳輸】數據鏈路層協議。目前我們普遍使用HDLC作為數據鏈路控制協議。
HDLC幀格式如下
當我們傳輸數據時,要傳輸的不僅僅是數據的大小,還會給這些數據加上頭和尾,以及一些其他的標志。比如標志位有八位,就是一個位元組。所以除數據外其他的欄位加在一起要佔據6位元組的空間。
HDLC定義了三種類型的站:分別是主站,從站,復合站
HDLC包括三種類型的幀,信息幀,監控幀,和無編號幀。第1位為「0」表示是信息幀,第1、2位為「10」是監控幀,「11」是無編號幀。
信息幀用於傳送有效信息或數據,通常簡稱I幀。
監控幀用於監視和控制數據鏈路,完成信息幀的接收確認、重發請求、暫停發送
請求等功能。監控幀不具有信息欄位。
無編號幀用於數據鏈路的控制,它本身不帶編號,可以在任何需要的時刻發出
HDLC的幀類型中用於差錯控制和流量控制的幀是 A.命令幀 B.信息幀 C.無編號幀 D.監控幀
答案 D
ATM是一種 面向分組 的技術,其分組稱為信元。 ATM 信元由信元頭和凈荷(Payload)兩部分構成。信元頭中包含信元控制信息,凈荷用於承載用戶的數據。
ATM是一種面向連接的技術,傳輸基於固定長度的信息信元,每個信元在他的頭部帶有虛電路標識符,交換設備根據此標識符演著連接建立的路徑轉發信元。
ATM是非同步傳輸模式的縮寫,是兩種交換技術的結合,電路交換和分組交換。
信元和信元頭長度分別是53位元組和5位元組
在計算機網路中,數據交換的方式有:
(1)線路交換。在數據傳送之前需建立一條物理通路, 在線路被釋放之前,該通路將一直被一對用戶完全佔有。
(2)報文交換。報文從發送方傳送到接收方採用存儲轉發 的方式。在傳送報文時,只佔用一段通路;在交換節點中需要 緩沖存儲,報文需要排隊。因此,這種方式不滿足實時通信的 要求。
(3)分組交換。此方式與報文交換類似,但報文被分成組傳送,並規定了分組的最長度,到達目的地後需重新將分組組裝成報文。這是網路中最廣泛採用的一種交換技術。
常用的差錯控制方法是在數據中加入差錯控制編碼,在所要發送的信息位之前按照某種規則加上一定的冗餘位,構成一個碼字再傳送。
交換機可以用來分割LAN,連接不同的LAN,或者擴展LAN的覆蓋范圍。
4B/5B編碼是將數字數據轉換為數字信號的編碼方式。
數據鏈路層和大多數高層都存在的一個問題是如何避免一個快速發送方用數據【淹沒】一個慢速接受方。所以需要一個流量調節機制,以便讓發送方知道接收方何時可以接收更多的數據。
兩種方式:
1 基於反饋的流量控制 接收方給發送方發信息
2 基於速率的流量控制 限制發送方傳輸速率
數據鏈路層和傳輸層的TCP協議都會涉及到滑動窗口機制。側重點不一樣。
數據鏈路層主要有兩種: 停-等流量控制和滑動窗流量控制 。
發送方窗口內的序列號代表了那些已經被發送,但是還沒有被確認的幀,或者是那些可以被發送的幀。
首先整理下滑動窗口涉及到的3個協議
1 停等協議:發送方每發送一幀,都要等待接收方的應答信號,之後才能發送下一幀;接收方每接收一幀,都要反饋一個應答信號,表示可接收下一幀,如果接收方不反饋應答信號,則發送方必須一直等待。
2 後退N幀協議:在後退n協議中,接收方若發現錯誤幀就不再接收後續的幀,即使是正確到達的幀,這顯然是一種浪費。
接受方發現接收到的信息幀時序有問題時,要求發送方發送最後一次正確發送後確認接收的幀之後的所有的未被確認的幀。
3 選擇重傳協議:當接收方發現某幀出錯後,其後繼續送來的正確的幀雖然不能立即遞交給接收方的高層。但接收方仍可收下來,存放在一個緩沖區中,同時要求發送方重新傳送出錯的那一幀,一旦收到重新傳來的幀後,就可以原已存於緩沖區中的其餘幀一並按正確的順序遞交高層。
總之
海明碼:如果要檢測 d位錯誤,需要海明距為 d+1的編碼方案;如果要糾正 d位錯誤,需要海明 距 為 2d+1的 編 碼 方 案 。
1.集線器本身是一個 沖突域 ,因為它不能分隔沖突域。
2.交換機本身是一個 廣播域 ,它分隔沖突域,即它的每一個埠都是一個沖突域。
3. 路由器 分隔 廣播域 ,它的每一個介面都是一個 廣播域 。
4.交換機和 路由器 相連的鏈路即是沖突域又是廣播域。
某用戶程序採用 UDP協議進行傳輸,則差錯控制應由 協議完成。
A.數據鏈路層 B.網路層 C.物理層 D.應用層
PPP協議是透明傳輸,實際上就是通常所說的透傳。
PPP協議使用的是一種面向位元組的協議,所有的幀長度都是整數個位元組,使用一種特殊的字元填充法完成數據的填充。
例題
為實現透明傳輸,PPP協議使用的填充方法是()。B
A.位填充
B.字元填充
C.對字元數據使用字元填充,對非字元數據使用位填充
D.對字元數據使用位填充,對非字元數據使用字元填充
例題:
PPP 幀的起始和結束標志都是 0x7e,若在信息欄位中出現與此相同的字元,必須進行填
充。在同步數據鏈路中,採用___比特填充法____方法進行填充;在非同步數據鏈路中,采
用___字元填充法____方法進行填充
1 糾錯,PPP協議只進行檢錯
2流量控制
3 序號 PPP協議是不可靠的傳輸協議,因此不需要給幀編號。