網路中傳輸的資料由兩部分組成:一部分是該層協議需要用到的首部,一部分是上一層傳過來的資料。 首部的結構由協議具體規範詳細定義。首部明確標明了協議該如何讀取資料,從首部中可以了解該協議的必要資訊以及所要處理的內容,例如識別上一層協議的域應該從包的哪一位開始取多少個位元等等。比如乙個tcp包的資料,其在傳輸過程中 乙太網層的資料、ip網路層的資料以及tcp傳輸層的資料結構分別如下圖:
資料傳輸時的單位描述有包/幀/資料報/段/訊息 5種, 包是全能性術語,幀是資料鏈路層中包的單位資料報是ip和 udp等網路層以上的分層包的單位。段則表示tcp資料流中的資訊,訊息表示應用層協議中資料的單位。
下圖中以tcp接收和傳送資料為例:
資料報傳送處理:
圖中對包首部進行了簡化,每個包首部中必須包含兩個資訊:傳送端和接收端位址,上一層的協議型別。經過每個協議分層時,都必須要識別包傳送端和接收端的資訊。乙太網會用mac位址,ip會用ip位址,tcp/udp會用埠號作為識別兩端主機的位址,即使在應用程式中,郵件位址也算位址資訊。
資料傳送過程中,每一層以上一層的首部+資料作為本層的資料,該資料與本層協議的首部組成乙個包,傳送到下一層協議。
資料報接受處理:主機收到乙太網包以後,首先從包首部找到mac位址判斷是否給自己的包,若不是則丟棄;若是發給自己的包,就查詢包首部中的型別域,此處為ip,則將資料報傳送給處理ip的子程式,若是其他的型別,則傳給其他的子程式處理,若無法識別型別,則丟棄;ip模組收到ip首部以及後面的資料時,也做類似的處理,判斷ip位址,若是tcp協議則傳給tcp處理,若是udp,則傳給udp處理。對於有路由的情況,接收端位址一般不是自己的位址,需要借助路由控制表,查到應該送達的主機或路由後再**資料;tcp模組接收到資料後,先計算校驗和,判斷資料是否完整正確,然後檢查是否再按照序號接收資料,最後檢查埠號確定具體的應用程式,在接收資料完畢後,需要傳送乙個ack給傳送端;最後對應的應用程式來對資料進行具體的處理。
促進高效資料傳輸的TCP IP選項
議層定義的,從osi參考模型的物理層到應用層都可能會牽扯到。tcp cork選項禁用nagle化,其方式正好同tcp nodelay相反 tcp cork 和 tcp nodelay 是互相排斥的 下面就讓我們仔細分析下其工作原理。假設應用程式使用sendfile 函式來轉移大量資料。應用協議通常要...
USB通訊協議 資料傳輸
usb2.0通訊協議 spalish 1.包 packet 包是usb系統中資訊傳輸的基本單元,所有資料都是經過打包後在匯流排上傳輸的。usb包由五部分組成,同步字段 sync 包識別符號 pid 資料字段 crc和包結尾字段 eop 包型別 由pid區分 令牌 out in sof setup 資...
C SFTP資料傳輸
我們有些客戶公司的資料比較重要,為了安全集團公司內部都使用的是區域網,但是有時候又不得不予外界網際網路做資料互動,所以有些不重要的系統是放在外界網際網路的,這樣以來內部系統和外部系統的資料互動就成為了問題,這樣以來就使用到了sftp伺服器來作為資料傳輸的中介。下面不說了,直接上c 此處使用了第三方動...