⑴ 3 發送和接收數據
通過套接字進行發送和接收時,只能處理位元組和位元組數組。作為一種強類型語言,Java需要把其他數據類型(int,String等)顯式轉換成位元組數組。比如String類的getBytes()方法,是將一個Sring實例中的字元轉換成位元組的標准方式。
註:語言有無類型,弱類型和強類型三種。其中,無類型不檢查,甚至不區分指令和數據;弱類型的檢查很弱,僅能嚴格的區分指令和數據;強類型的則嚴格的在編譯期進行檢查。強類型語言在沒有強制類型轉化前,不允許兩種不同類型的變數相互操作。 如:double類型變數a,不經過強制類型轉換那麼程序int b = a是無法通過編譯。常用的強類型語言有Java、C# 、Apex和Python等。
我們可以將數字和boolean類型的數據表示成String類型,如「123478962」,「6.02e23」,「true」,「false」等。也可以通過調用getBytes()方法,將一個字元串轉換成位元組數組。
Java中與流相關的類可以組合起來從而提供強大的功能。例如,我們可以將一個Socket實例的OutputStream包裝在一個BufferedOutputStream實例中,這樣可以先將位元組暫時緩存在一起,然後再一次全部發送到底層的通信信道中,以提高程序的性能。我們還能再將這個BufferedOutputStream實例包裹在一個DataOutputStream實例中,以實現發送基本數據類型的功能。
在這個例子中,我們先將基本數據的值,一個一個寫入Data OutputStream中,DataOutputStream再將這些數據以二進制的形式寫入BufferedOutput-Stream並將三次寫入的數據緩存起來,然後再由BufferedOutputStream一次性地將這些數據寫入套接字的OutputStream,最後由OutputStream將數據發送到網路。在另一個終端,我們創建了相應的組合InputStream,以有效地接收基本數據類型。
這部分主要講的是流傳輸中對數據開始和結束邊界的處理,這也是為什麼我們使用read()方法讀取-1,進行判定讀到流結束的原因。(SOGa!)
成幀(framing)技術則解決了接收端如何定位消息的首尾位置的問題。無論信息是編碼成了文本、多位元組二進制數、或是兩者的結合,應用程序協議必須指定消息的接收者如何確定何時消息已完整接收。
由於UDP套接字保留了消息的邊界信息,因此不需要進行成幀處理(實際上,主要是DatagramPacket負載的數據有一個確定的長度,接收者能夠准確地知道消息的結束位置),而TCP協議中沒有消息邊界的概念,因此,在使用TCP套接字時,成幀就是一個非常重要的考慮因素(在TCP連接中,接收者讀取完最後一條消息的最後一個位元組後,將受到一個流結束標記,即read()返回-1,該標記指示出已經讀取到了消息的末尾,非嚴格意義上來講,這也算是基於定界符方法的一種特殊情況)。
主要有兩種技術使接收者能夠准確地找到消息的結束位置:
DelimFramer.java類實現了基於定界符的成幀方法,其定界符為「換行」符(「
」,位元組值為10)。frameMethod()方法並沒有實現填充,當成幀的位元組序列中包含有定界符時,它只是簡單地拋出異常。nextMsg()方法掃描流,直到讀取到了定界符,並返回定界符前面的所有字元,如果流為空則返回null。如果累積了一個消息的不少字元,但直到流結束也沒有找到定界符,程序將拋出一個異常來指示成幀錯誤。
DelimFramer.java
LengthFramer.java類實現了基於長度的成幀方法,適用於長度小於65 535(216-1)位元組的消息。發送者首先給出指定消息的長度,並將長度信息以big-endian順序存入兩個位元組的整數中,再將這兩個位元組放在完整的消息內容前,連同消息一起寫入輸出流。在接收端,我們使用DataInputStream以讀取整型的長度信息;readFully()方法將阻塞等待,直到給定的數組完全填滿,這正是我們需要的。值得注意的是,使用這種成幀方法,發送者不需要檢查要成幀的消息內容,而只需要檢查消息的長度是否超出了限制。
LengthFramer.java
⑵ 在mstp的通用幀規程中它的幀定界定方法與什麼所用的方法一質是基於幀頭中的幀
若問題是:在mstp的通用幀規程是什麼可以選擇用其他方式下載
MSTP的概念
MSTP(Multi-Service Transfer Platform)(基於SDH 的多業務傳送平台)是指基於SDH 平台同時實現TDM、ATM等業務的接入、處理和傳送,提供統一網管的多業務節點。多生成樹(MST)使用修正的快速生成樹(RSTP)協議,叫做多生成樹協議,英文是MSTP(Multiple Spanning Tree Protocol)
MSTP技術的功能
(1)具有TDM業務、ATM業務或乙太網業務的接入功能;
(2)具有TDM業務、ATM業務或乙太網業務的傳送功能包括點到點的透明傳送功能;
(3)具有ATM業務或乙太網業務的帶寬統計復用功能;
(4)具有ATM業務或乙太網業務映射到SDH虛容器的指配功能。
⑶ 什麼是幀的成幀,什麼是幀的拆幀
成幀的方式主要有位元組計數法,這種方法以一個特殊字元表徵;拆幀的意思是指定開始時刻和結束時刻,並拆分為圖片幀,也叫自定義拆幀
成幀技術是一種用來在一個比特流內分配或標記信道的技術,為電信傳輸提供選擇基本的時隙結構和管理方式、錯誤隔離和分段傳輸協議的手段。兩個計算機或設備之間的點到點的連接中包括一根電線,在這根電線中數據作為位流傳輸。拆幀的意思是指定開始時刻和結束時刻,並拆分為圖片幀,也叫自定義拆幀,還有一種拆幀叫等長拆幀,是指間隔一定時長,將每段時長視頻幀進行拆分。
幀是具有一定長度和格式的信息塊,一般由一些欄位和標志組成,成幀的方式主要有位元組計數法,這種方法以一個特殊字元表徵一幀的起始,並以一個專門欄位來標明幀內的位元組數,接受方可以通過對該特殊字元的識別從位流中區分出幀的起始,並從專門欄位中獲知該幀中隨後跟隨的數據位元組數,從而可確定出幀的終止位置。
⑷ 封裝成幀的方法
1.封裝成幀:就是在一段數據前後分別添加首部和尾部,就構成一個幀。
2.一個幀的幀長等於幀的數據部分長度加上幀首部和幀尾部。
3.首部和尾部的一個重要作用就是幀定界。
4.每一個鏈路層協議都規定了所能傳遞的幀的數據部分長度上限 ——— 最大傳送單元 MTU (Maximum Transfer Unit)
5.用幀的首部和幀的尾部封裝成幀
6.控制字元 SOH (Strat Of Heard)放在一個幀的最前面,表示幀的首部開始。
7.控制字元 EOT ( End Of Transmission)表示幀的結束。
8.用控制字元進行幀定界的方法
⑸ 數據鏈路層的成幀定界有哪三種如何解決幀的透明傳輸問題
幀的首部必須設有一些特殊的比特組合,使得接收端能夠找出一幀的開始。這也稱為幀定界。幀定界還包含確定幀的結束位置.
網路的各層協議都是相當復雜的。當我們在電腦上編輯好一封郵件後,只要用滑鼠點擊一下「發送」按鈕,這封電子郵件就發送出去了。實際上,我們的電腦要使用好幾個網路協議。可是這些復雜的過程我們都看不見。因此,這些復雜的網路協議對網路用戶來說都是「透明的」。意思是:這些復雜的網路協議雖然都是存在於電腦中,但用戶卻看不見(如果要看,就要使用專門的網路軟體)。
差錯校驗是在數據通信過程中能發現或糾正差錯,把差錯限制在盡可能小的允許范圍內的技術和方法。
包括奇偶校驗碼是一種通過增加冗餘位使得碼字中「1」的個數為奇數或偶數的編碼方法,它是一種檢錯碼。
水平奇偶校驗的特點及編碼規則
特點:水平奇偶校驗又稱橫向奇偶校驗,它不但能檢測出各段同一位上的奇數個錯,而且還能檢測出突發長度<=p的所有突發錯誤。其漏檢率要比垂直奇偶校驗方法低,但實現水平奇偶校驗時,一定要使用數據緩沖器。
水平垂直奇偶校驗的特點及編碼規則
特點:水平垂直奇偶校驗又稱縱橫奇偶校驗。它能檢測出所有3位或3位以下的錯誤、奇數個錯、大部分偶數個錯以及突發長度<=p+1的突發錯。可使誤碼率降至原誤碼率的百分之一到萬分之一。還可以用來糾正部分差錯。有部分偶數個錯不能測出。適用於中、低速傳輸系統和反饋重傳系統。
⑹ [計算機網路]Ch.3 數據鏈路層
數據鏈路層使用物理層提供的服務在通信信道上發送和接收比特。
(1) 向網路層提供一個定義良好的介面
(2) 處理傳輸錯誤
(3) 調節數據流,確保慢速的接收方不會被快速的發送方淹沒
提供的服務
(1) 無確認的無連接服務 (區域網)
(2) 有確認的無連接服務 (無線通信)
(3) 有確認的有連接服務 (電話)
無線通信,信道使用率很低但數據傳輸的誤碼率相對較高,確認是必要的
成幀:將原始的位流分散到離散的幀中。
成幀的方法有:
(1)字元計數法
(2)帶位元組/字元填充的標志位元組法
(3)比特填充的比特標志法
(4)物理層編碼違例法
位元組計數法:利用幀頭部的一個欄位來標識該幀中的字元數
缺點:簡單,無法恢復,已經很少使用
該方法考慮了錯誤之後重新開始同步的問題,用一些特殊位元組(FLAG)作為幀開始和結束標志,用轉義字元(ESC)來區分二進制數據中存在的特殊位元組。
採用冗餘編碼技術,如曼切斯特編碼,即兩個脈沖寬來表示一個二進制位
數據0:低-高電平對
數據1:高-低電平對
高-高電平對和低-低電平對沒有使用,可用作幀邊界
差錯的種類:
差錯的處理:
計算機網路中主要採用:
海明距離的意義 :如果海明距離為d,則一個碼字需要發生d個1位錯誤才能變成另外一個碼字
海明距離與檢錯和糾錯的關系:
糾正單比特錯的冗餘位下界, m為數據位數 , r為校驗位數
將某一位數據位的編號展開成2的乘冪的和,那末每一項所對應的位即為該數據位的校驗位(收方使用)。
如: 11 = 1 + 2 + 8
29 = 1 + 4 + 8 + 16
校驗位1的檢驗集合為所有奇數位。
校驗位2的檢驗集合:2、3、6、7、10、11、…
校驗位4的檢驗集合:4、5、6、7、……
校驗位8的檢驗集合:8、9、10、11、……
海明碼糾錯過程(只糾錯1位)
首先將差錯計數器置「0」。
當海明碼數據到達接收端後,接收端逐個檢查各個校驗位的奇偶性。
如發現某一校驗位和它所檢測的集合的奇偶性不正確,就將該檢驗位的編號加到差錯計數器中。
待所有校驗位核對完畢:
若差錯計數器仍為「0」值,則說明該碼字接收無誤。
非「0」值,差錯計數器的值為出錯位的編號,將該位求反就可得到正確結果。
例子:
經計算需要的檢驗字個數的最小值 r應滿足 ( 所以r最小值為4,再根據校驗位的對應規則可得下表:
Data: 1011010
Even: 1011010 0 (偶校驗)
Odd: 1011010 1 (奇校驗)
使用CRC編碼時發送方和接收方必須預先商定一個生成多項式G(x),假設有一個m為的幀M(x),使用G(x)生成的幀的步驟如下:
假設G(x)的階為r, 那麼M(x)在末尾添加r個0,得到 m+r位的位模式 。
利用模2出發,用G(x)去除 ,得到對應的余數(總是小於等於r位)。
利用 減去(模2減法)第2步中得到的余數,得到的位模式就是即將被傳輸的帶校驗和的幀
Sender
在數據幀的低端加上r個零,對應多項式為XrM(x)
採用模2除法,用G(x)去除XrM(x),得余數
採用模2減法,用XrM(x)減去余數,得到帶CRC校驗和的幀
Receiver
用收到的幀去除以G(x)
為零:無錯誤產生。非零:發生了錯誤,重傳
在一定條件下運作:
缺點 :
缺點 :
對協議2的改進:
確認幀
只在接收無差錯時才發確認幀,出錯時不發確認幀。
重發
網路中採用檢錯碼,無法糾正錯誤,由重發原來幀的方式來恢復正確的幀。
計時器
控制何時重發,防止無限期等待(死鎖)。
幀序號
防止重發時接收端收到重復的幀,序號還用於接收時排序。
保證送給網路層的都是按序無重復的分組
幀格式:
****
與前三個協議不同,這是一個雙向傳遞的協議。 之後的三個協議都屬於滑動窗口協議。
滑動窗口協議
如果發送端可以連續發送一批數據幀,必須考慮接收端是否來得及接納與處理這么多的幀,這里就提出了網路流量控制問題
N回退協議 和 選擇重傳協議:
由於傳輸過程中存在延遲,即數據在傳播過程中需要時間,那麼如果使用上面所提及的協議,傳輸過程中有大量的時間存在阻塞狀態,所以為了充分利用帶寬,我們讓發送方一次發送w個幀。所以就存在如何處理在傳輸過程中出現的幀錯誤的問題
協議四的基本工作原理:
窗口設置
窗口滑動機制
特點
出錯情況 :
連續發送W個數據幀,其中有一幀出錯,但其後續幀被成功發送
接收方的接收策略: 丟棄錯幀,其後續幀因不是期望接收幀也被丟棄(接收窗口為1)。
發送方的重傳策略: 緩存在發送窗口中的出錯幀以及其後續幀全部重發
W<=2BD+1(個幀)
BD:帶寬-延遲乘積,bit乘積出來之後換算成幀的個數
該圖的發送方和接收方的窗口大小都是7,那麼也就是說發送方一次最多隻能發送7個幀,剛開始發送方只能發送序號為0~6的數據幀,圖中發送方收到序列號為第0和第1號幀的確認幀,那麼整個窗口向前滑動,發送方可以發送序列號為7和8 的數據幀,但是不幸的是2號數據幀並沒有收到確認幀,所以整個窗口並不會向前滑動,此時只能等待2號數據幀的計時器超時,那麼超時後發送方將會從2號數據幀開始發送,重復這個過程。
實現
出錯情況
原因:如果錯誤很少發生,那麼協議5可以很好的工作。一旦線路質量很差,那麼重傳幀需要浪費大量帶寬。而選擇重傳節約了帶寬,允許接收方緩存丟失幀之後的所有幀
接收方的接收策略: 丟棄錯幀,緩存後續正確接收幀
發送方的重傳策略: 只重發出錯幀。
基本概念:
選擇重傳策略:
接收方丟掉壞幀,但接受並緩存壞幀後面的所有好幀。
否定重傳策略 :
當接收方收到錯誤,他就發送一個否定確認(NAK)信息,而不需要等到相應的計數器超時,提高協議性能。
滑動窗口長度w的選擇
協議5(回退n幀) W = MAX_SEQ
協議6(選擇重傳) W= (MAX_SEQ + 1) / 2
發送方和接收方的窗口大小 W=((MAX_SEQ+1))/2,原因是 防止窗口重疊,在確認幀丟失的情況下而導致的數據錯誤
接收方在某個幀出錯後繼續接受和緩存後續發送的數據包,直到整個窗口的填滿後,把幀進行排序後才傳遞給網路層。
面向字元的數據鏈路協議
PPP 是一種在鏈路上傳輸分組的常用方法
3個主要特性:
PPP兩種認證協議: PAP and CHAP
PPP的幀格式
PPP成幀是面向位元組填充的:
具體細節可以參考上面的位元組填充法, 因為PPP重用了HDLC的技術,所以PPP使用標志字(0x7E 01111110)來標記幀的起始,使用0x7D來作為轉義字元, 具體操作如下:
接收方接收到幀後進行下面處理:
在幀中遇到0x7D 就把0x7D刪除,在把緊跟在0x7D 後的位元組和0x20進行異或運算,就得到對應的數據
LCP ( Link Control Protocol)提供了建立、配置、維護和終止點對點鏈接的方法
PPP的工作過程
⑺ 數字傳輸系統
數字傳輸系統
相關知識點有:脈沖編碼調制PCM體制、同步光纖網、同步數字系列。
1.脈沖編碼調制PCM體制
前面介紹了脈沖編碼調制PCM的原理,下面講述PCM兩個重要國際標准:北美的24路PCM(T1,速率為1.544Mb/s)和歐洲的30路PCM(E1,速率為2.048Mb/s)。
(1)E1。E1有成幀、成復幀與不成幀三種方式,考試主要考成復幀方式。
1)E1的成復幀方式。E1的一個時分復用幀(長度為T=125us)共劃分為32個相等的時隙,時隙的編號為CH0~CH31。其中時隙CHO用作幀同步,時隙CH16用來傳送信令,剩下CH1~CH15和CH17~CH31共30個時隙用作30個語音話路,E1載波的控制開銷佔6.25%。每個時隙傳送 8bit(7bit編碼加上1bit信令),因此共用256bit。每秒傳送8000個幀,因此PCM一次群E1的數據率就是2.048Mb/s,其中每個話音信道的數據速率是64kb/s。
2)E1的成幀方式。E1中的第0時隙用於傳輸頓同步數據,其餘31個時隙可以用於傳輸有效數據。
3)E1的不成幀方式。所有32個時隙都可用於傳輸有效數據。
EI有以下三種使用方法:
2M的DDN方式:將整個2M用作一條鏈路。
CE1方式:將2M用作若干個64K線路的組合。
PRA信令方式:也是E1最原本的用法,把一條E1作為32個64K來用,但是時隙0和時隙16用作信令,一條E1可以傳30路話音。
我國和歐洲等國家使用E1。
(2)T1.T1系統共有24個語音話路,每個時隙傳送8bit(7bit編碼加上1bit信令),因此共用193h(192bit加上1bit額同步位),每秒傳送8000個賴,因此PCM一次群T1的數據率=8000×193b/s=1.544Mb/s,其中的每個話音信道的數據速率是64kb/s。
美國、加拿大、日本和新加坡使用T1。
如表2-5所示給出了TI和E1的常考點。
1和T1可以使用復用方法,4個一次群可以構成1個二次群(分別稱為E2和T2),4個二次群構成1個三次群(分別稱為E3和T3)。
⑻ 在NRZ編碼下,下面4種成幀方法哪種不可取
物理層編碼違例法,該方法要求編碼必須為曼徹斯特編碼。
⑼ 怎麼用ps把一段視頻轉成幀
我玩PS多年,還不知道PS能處理視頻。但我對視頻處理也很懂。你是不是想把視頻變成很多張照片?如果是這樣,在視頻編輯軟體中很容易,方法如下:
大多數視頻編輯軟體——設置入點(開始位置)和出點(結束位置)——文件菜單——輸出到文件——選擇想要輸出的文件類型(選擇靜止圖像-圖像序列)——確定。
注意:
1、一般1秒鍾的視頻輸出的圖像為25幀(這取決於視頻工程的設置),如果視頻時間很長,輸出的文件數量是很大的。
2、premiere、edius是比較專業的視頻編輯軟體,如果你沒接觸過,想學精通是需要一些時間的,但完成上述任務倒是很方便的,把視頻導入到素材窗口,在素材窗口中把視頻素材 拖到時間線上,設置入出點......(你可以稍加學習就能實現靜止圖像的輸出)
3、如果視頻是來源於攝像機拍攝,則很大可能是每秒鍾25幀的隔行掃描視頻。這時,每一幀中有兩個場(每個場其實就是一個單獨的畫面,一幀中的兩個場是按特殊方法融合在一起的),在編輯軟體中輸出序列靜止圖像時,如果是以幀為單位輸出的,那麼,你得的每一個圖像其實是兩個場融合在一起的效果。一般情況下,每幀圖像都是很好的,但當圖像中人或物在畫面中運動明顯時,則得到的圖像是不好的(運動物體邊緣有毛剌),這時因為運動明顯,一幀中的兩個場有明顯的差異。怎樣才能得到沒有毛剌的圖像呢。edius能很好的解決這個問題,edius輸出靜止圖像時,可以選擇以場為單位輸出。(每幀中的兩個場分別為奇數場和偶數場,edius在輸出時是可以選擇的)。
4、第3條所說內容,很多自認為視頻編輯很熟練的人也不一定知道,但實事就是這樣,如果你從來沒有玩視頻編輯,可能看不懂我在說些什麼。但願本回答能給你和其他視頻編輯愛好者提供一些幫助。
5、當你能很熟練的運用edius視頻編輯軟體時,你還會發現有更好的方法從視頻中得到質量很好的靜止圖像。