嵌入式網路通訊詳解

2021-07-27 10:44:14 字數 3938 閱讀 9811

iso/osi的參考模型共有7層,由低層至高層分別為:物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。各層功能分別為:

(1)物理層:在物理**上傳輸原始的資料位元流。

(2)資料鏈路層:將資料分成乙個個資料幀,以資料幀為單位傳輸。有應有答,遇錯重發。

(3)網路層:將資料分成一定長度的分組,將分組穿過通訊子網,從信源選擇路徑後傳到信宿。

(4)傳輸層:提供不具體網路的高效、經濟、透明的端到端資料傳輸服務。

(5)會話層:程序間的對話也稱為會話,會話層管理不同主機上各程序間的對話。

(6)表示層: 為應用層程序提供格式化的表示和轉換資料服務。

(7)應用層:提**用程式訪問osi環境的手段。

(1)集線器

集線器(hub)是工作在物理層的網路裝置,用於雙絞線的連線和訊號中繼(將已衰減的訊號再次放大使之傳得更遠)。

(2)交換機

交換機是工作在鏈路層的網路裝置,可以在不同的鏈路層網路之間**資料幀(比如十兆乙太網和百兆乙太網之間、乙太網和令牌環網之間),由於不同鏈路層的幀格式不同,交換機要將進來的資料報拆掉鏈路層首部重新封裝之後再**。

(3)路由器

路由器是工作在第三層的網路裝置,同時兼有交換機的功能,可以在不同的鏈路層介面之間**資料報,因此路由器需要將進來的資料報拆掉網路層和鏈路層兩層首部並重新封裝。

資料傳輸經過的各層協議過程如下:

乙太網驅動程式首先根據乙太網首部中的「協議型別」字段確定該資料幀是ip、arp 還是rarp 協議的資料報,然後交給相應的協議處理。假如是ip 資料報,ip 協議再根據ip 首部中的「上層協議」字段確定該資料報是tcp、udp、icmp 還是igmp,然後交給相應的協議處理。假如是tcp 段或udp段,tcp 或udp 協議再根據tcp 首部或udp 首部的「埠號」字段確定應該將應用層資料交給哪個使用者程序。ip 位址是標識網路中不同主機的位址,而埠號就是同一臺主機上標識不同程序的位址,ip 位址和埠號合起來標識網路中唯一的程序。

雖然ip、arp 和rarp 資料報都需要乙太網驅動程式來封裝成幀,但是從功能上劃分,arp 和rarp 屬於鏈路層,ip 屬於網路層。雖然icmp、igmp、tcp、udp 的資料都需要ip 協議來封裝成資料報,但是從功能上劃分,icmp、igmp 與ip 同屬於網路層,tcp 和udp屬於傳輸層。

(1)其中的源位址和目的位址是指網絡卡的硬體位址(也叫mac 位址),長度是48 位,是在網絡卡出廠時固化的。

(2)注意網絡卡晶元(例如dm9000a)收到的資料就是如上所示的一長串資料;其中包括乙太網幀頭、ip報報頭、傳輸層協議段頭、應用層所需資料。

(3)乙太網幀中的資料長度規定最小46 位元組,最大1500 位元組,arp 和rarp 資料報的長度不夠46 位元組,要在後面補填充位。最大值1500 稱為乙太網的最大傳輸單元(mtu),不同的網路型別有不同的mtu,如果乙個資料報從乙太網路由到撥號鏈路上,資料報度大於撥號鏈路的mtu了,則需要對資料報進行分片(fragmentation)。ifconfig 命令的輸出中也有「mtu:1500」。注意,mtu 這個概念指資料幀中有效載荷的最大長度,不包括幀首部的長度。

ip 資料報的首部長度和資料長度都是可變長的,但總是4 位元組的整數倍。對於ipv4,4 位版本欄位是4。4 位首部長度的數值是以4 位元組為單位的,最小值為5,也就是說首部長度最小是4x5=20 位元組,也就是不帶任何選項的ip 首部,4 位能表示的最大值是15,也就是說首部長度最大是60 位元組。8 位tos 欄位有3 個位用來指定ip 資料報的優先順序(目前已經廢棄不用),還有4 個位表示可選的服務型別(最小延遲、最大呑吐量、最大可靠性、最小成本),還有乙個位總是0。總長度是整個資料報(包括ip 首部和ip 層payload)的位元組數。每傳乙個ip 資料報,16 位的標識加1,可用於分片和重新組裝資料報。3 位標誌和13 位片偏移用於分片。ttl(time to live)是這樣用的:源主機為資料報設定乙個生存時間,比如64,每過乙個路由器就把該值減1,如果減到0 就表示路由已經太長了仍然找不到目的主機的網路,就丟棄該包,因此這個生存時間的單位不是秒,而是跳(hop)。協議字段指示上層協議是tcp、udp、icmp 還是igmp。然後是校驗和,只校驗ip 首部,資料的校驗由更高層協議負責。ipv4的ip 位址長度為32 位。

序號:指出段中的資料部分在傳送方資料流中的位置。

確認號:指出接收方希望收到對方下次傳送的資料的第乙個位元組的序號。

tcp段首部的定長部分為20個位元組,即5個單位的長度。

urg位:緊急標誌,和緊急指標配合使用,當其為1時表示,此報文要盡快傳送。

ack位:確認標誌,和確認號字段配合使用,當ack位置1時,確認號字段有效。

psh位:為推送標誌,置1時,傳送方將立即傳送緩衝區中的資料。

rst位:復位標誌,置1時,表明有嚴重差錯,必須釋放連線。

syn位: 同步標誌,置1時,表示請求建立連線。

fin位:終止標誌,置1時,表明資料已經傳送完,請求釋放連線。

視窗大小:32bit,用於向對方通告當前本機的接受緩衝區的大小。

校驗和字段長度:16bit,校驗範圍包括段首部、資料以及偽首部。

建立連線的過程是三次握手,而關閉連線通常需要4 個段(四次揮手),伺服器的應答和關閉連線請求通常不合併在乙個段中,因為有連線半關閉的情況,這種情況下客戶端關閉連線之後就不能再傳送資料給伺服器了,但是伺服器還可以傳送資料給客戶端,直到伺服器也關閉連線為止。

(1)tcp連線的建立

伺服器發出段2,也帶有syn 位,同時置ack 位表示確認,確認序號是1001,表示「我接收到序號1000 及其以前所有的段,請你下次傳送序號為1001 的段」,也就是應答了客戶端的連線請求,同時也給客戶端發出乙個連線請求,同時宣告最大尺寸為1024。

客戶端發出段3,對伺服器的連線請求進行應答,確認序號是8001。在這個過程中,客戶端和伺服器分別給對方發了連線請求,也應答了對方的連線請求,其中伺服器的請求和應答在乙個段中發出,因此一共有三個段用於建立連線,稱為」』三方握手(three-way-handshake)」』。在建立連線的同時,雙方協商了一些資訊,例如雙方傳送序號的初始值、最大段尺寸等。

(2)tcp資料傳輸過程

客戶端發出段4,包含從序號1001 開始的20 個位元組資料。

伺服器發出段5,確認序號為1021,對序號為1001-1020 的資料表示確認收到,同時請求傳送序號1021 開始的資料,伺服器在應答的同時也向客戶端傳送從序號8001 開始的10 個位元組資料,這稱為piggyback。

客戶端發出段6,對伺服器發來的序號為8001-8010 的資料表示確認收到,請求傳送序號8011 開始的資料。在資料傳輸過程中,ack 和確認序號是非常重要的,應用程式交給tcp 協議傳送的資料會暫存在tcp 層的傳送緩衝區中,發出資料報給對方之後,只有收到對方應答的ack 段才知道該資料報確實發到了對方,可以從傳送緩衝區中釋放掉了,如果因為網路故障丟失了資料報或者丟失了對方發回的ack 段,經過等待超時後tcp 協議自動將傳送緩衝區中的資料報重發。

(5)tcp連線的關閉

客戶端發出段7,fin 位表示關閉連線的請求。

伺服器發出段8,應答客戶端的關閉連線請求。

伺服器發出段9,其中也包含fin 位,向客戶端傳送關閉連線請求。

客戶端發出段10,應答伺服器的關閉連線請求。

嵌入式 sem op詳解

二 sem op 詳解 這個結構記錄了單一訊號量的一些資訊。struct sem sem結構每個域的含義 域 含義semval 訊號量的值 sempid 最近一次執行操作的程序的程序號 semncnt 等待訊號值增長,即等待可利用資源出現的程序數 semzcnt 等待訊號值減少到零,即等待全部資源可...

嵌入式網路知識

面試可能會被問計算機網路方面知識 由於後天就要面試了,自己也考試收羅大量的面試經驗,避免到時答非所問,故此收集相關模組的只是,寫到部落格便於檢視。關於三次握手與四次揮手這個感覺講的不錯,或網路通訊原理書籍225頁,一幕一樣。經過剛剛的看書,覺得書上的講的更加的生動,更加的明白,三次握手個人感悟 首先...

常用嵌入式通訊術語

並行通訊 並行通訊是指資料的各位同時在多根並行資料線上進行傳輸的通訊方式,資料的各位同時由源達到目的地。適合近距離通訊 高速通訊。常有4位 8位 16位 32位等資料同時傳輸。序列通訊 序列通訊是指資料在單線 電平高低表徵訊號 或雙線 差分訊號 上,按時間先後一位一位的進行傳輸,其優點是節省傳輸線,...