1. 程式人生 > >tcp/ip網路位元組序

tcp/ip網路位元組序

主機和網路位元組序的轉換
最近使用C#進行網路開發,需要處理ISO8583報文,由於其中有些域是數值型的,於是在傳輸的時候涉及到了位元組序的轉換。位元組順序是指佔記憶體多於一個位元組型別的資料在記憶體中的存放順序,通常有兩種位元組順序,根據他們所處的位置我們分別稱為主機節序和網路位元組序。
通常我們認為網路位元組序為標準順序,封包的時候,將主機位元組序轉換為網路位元組序,拆包的時候要將網路位元組序轉換為主機位元組序。原以為還要自己寫函式,其實網路庫已經提供了。
主機到網路:short/int/long IPAddress.HostToNetworkOrder(short/int/long)
網路到主機:short/int/long IPAddress.NetworkToHostOrder(short/int/long)
 
主機位元組序指低位元組資料存放在記憶體低地址處,高位元組資料存放在記憶體高地址處,如:
int x=1;  //此時x為主機位元組序:[1][0][0][0] 低位到高位
int y=65536 //此時y為主機位元組序:[0][0][1][0] 低位到高位
我們通過主機到網路位元組序的轉換函式分別對x和y進行轉換得到他們對應的網路位元組序值,網路節序是高位元組資料存放在低地址處,低位元組資料存放在高地址處,如:
int m=IPAddress.HostToNetworkOrder(x);
//此時m為主機位元組序:[0][0][0][1] 高位到低位
int n=IPAddress.HostToNetworkOrder(y);
//此時n為主機位元組序:[0][1][0][0] 高位到低位
 
經過轉換以後,我們就可以通過
byte[]btValue=BitConverter.GetBytes(m);
得到一個長度為4的byte陣列,然後將這個陣列設定到報文的相應位置傳送出去即可。
同樣,收到報文後,可以將報文按域拆分,得到btValue,使用
int m=BitConverter.ToInt32(btValue,0);//從btValue的第0位開始轉換
得到該域的值,此時還不能直接使用,應該再用網路到主機位元組序的轉換函式進行轉換:
int x=IPAddress.NetworkToHostOrder(m);
這時得到的x才是報文中的實際值。

相關推薦

tcp/ip網路位元組

主機和網路位元組序的轉換最近使用C#進行網路開發,需要處理ISO8583報文,由於其中有些域是數值型的,於是在傳輸的時候涉及到了位元組序的轉換。位元組順序是指佔記憶體多於一個位元組型別的資料在記憶體中的存放順序,通常有兩種位元組順序,根據他們所處的位置我們分別稱為主機節序和網路位元組序。通常我們認為網路位元組

1.socket程式設計:socket程式設計,網路位元組,函式介紹,IP地址轉換函式,sockaddr資料結構,網路套接字函式,socket相關函式,TCP server和client

 1Socket程式設計 socket這個詞可以表示很多概念: 在TCP/IP協議中,“IP地址+TCP或UDP埠號”唯一標識網路通訊中的一個程序,“IP 地址+埠號”就

2、【網路程式設計】TCP報文段/網路位元組/主機位元組/網-主位元組轉換函式

一、TCP報文段格式     TCP雖然是面向位元組流的,但TCP傳送的資料單元卻是報文段。一個TCP報文段分為首部和資料兩個部分。TCP報文段首部的前20個位元組是固定的,後面有4n位元組是根據需要增加的選項。TCP首部的最小長度是20位元組,最大長度是60位元組。

inet_ntoa()網路位元組IP轉化為點分十進位制IP

程式示例1: 下面這個例子來自MSDN: #include <winsock2.h> #include <stdio.h> #include <windows.h> #pragma comment(lib, "wininet.lib") // link wi

IP地址、埠號、網路位元組

一.IP地址1. 簡單認識    IP協議有兩個版本:IPv4和IPv6。        (1)IP地址在IP協議中,用來標識網路中不同主機的地址。        (2)對於IPv4來講,IP地址是一個4位元組,32位的整數;對於IPv6來講,IP地址是一個16位元組,128位的整數。(3)我們常用“點分十進

1-網路位元組ip地址

1. 位元組序   之前我們在學習記憶體的時候可知,記憶體儲存資料也是有大端儲存和小端儲存的,對於網路資料流同樣有大端小端之分,那麼為什麼要定義網路位元組序呢?   原因是讓不同cpu架構的計算機進行網路通訊時,位元組序不會混淆,因此tcp/ip協議規定了在

linux IP地址轉換及網路位元組

文獻參考: http://roclinux.cn/?p=1160 一、IP地址的表示法: 1、ASCII表示法: 210.25.132.181,也就是字串形式,英語叫做IPv4 numbers-and-dots notation。 2、整型表示法: 352

TCP/IP 網路基礎

net 其他 規則 系統 資源共享 開放 特殊 系統安全 miss 一、引子 ????????TCP/IP是“Transmission Control Protocol/Internet Protocol”的簡寫,翻譯成中文為傳輸控制協議/互聯網網絡協議。TCP/IP是一種

TCP/IP網路(網口)溫溼度感測器通訊說明

一、產品簡介 TCP/IP網路(網口)溫溼度感測器H-THRJ45可以同時測量溫度、溼度、露點,並可以同時接入二路模擬量/開關量訊號(列入:煙霧感測器、水浸感測器、電壓/電流感測器、門磁開關、及其他各種感測器),TCP/IP網路(網口)溫溼度感測器還自帶一路RS232/RS485串列埠輸入,可以

淺談 TCP/IP 網路程式設計中 socket 的行為

來源:PromisE_謝  連結:www.cnblogs.com/promise6522/archive/2012/03/03/2377935.html 我認為,想要熟練掌握 Linux 下的 TCP/IP 網路程式設計,至少有三個層面的知識需要熟悉: TCP/IP

Linux網路程式設計:socket程式設計簡介、網路位元組及相關函式

Socket(套接字) socket可以看成是使用者程序與核心網路協議棧的程式設計介面(API函式)。 socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。 IPv4套接字地址結構 IPv4套接字地址結構通常也稱為“網際套接字地址結構”,它以

AIX系統常用命令(TCP/IP網路管理命令)

9.1、主機名修改命令hostname/uname -n 顯示主機名uname -x /uname -a /uname -u 顯示作業系統的詳細資訊,顯示系統IDhostname 主機名,這樣改的主機名只能保持到下次重起smit hostname 或chdev -l inet0 -a hostnam

主機位元組網路位元組

一、位元組順序 是指佔用記憶體多於一個位元組型別的資料在記憶體中的存放順序。 計算機電路先處理低位位元組,效率比較高,因為計算都是從低位開始的。所以,計算機的內部處理都是小端位元組序。 但是,網路傳輸、檔案儲存、人類讀寫習慣使用大端位元組序。   java中一個int型資料

1.socket基礎知識:埠;sockaddr_in;位元組轉換函式(本地/網路位元組);地址轉換函式

1.埠 在進行通訊的時候,要首先通過IP地址獲取主機 再通過Port用來區分和主機上的哪個應用程式通訊 2.IPv4套介面地址結構:網際套接字地質結構 sockaddr_in:man 7 ip 1.標頭檔案:netinet/in.h 2.sockaddr_in結構 struct

網路作業系統 第七章 管理TCP/IP網路

  本章小結    本章介紹了TCP/IP的相關概念,並且在此處基礎上,介紹了Windows Server 2008中使用TCP/IP網路配置工具實現網路連線和管理的方法,在Linux系統中,講解了是如何使用圖形介面和ifcinfig命令完成網路配置的,並且介紹常用的網路管理命令。       

TCP/IP 網路協議

TCP/IP :       TCP/IP:在網路通訊中,TCP/IP是主流協議()       應用層:使用者自定義的協議(HTTP,EMAIL,),用於使用者之間資料的傳送      &nbs

大小端及網路位元組

原文地址:https://blog.csdn.net/z_ryan/article/details/79134980 什麼是大端模式、小端模式   “大端”和”小端”表示多位元組值的哪一端儲存在該值的起始地址處;小端儲存在起始地址處,即是小端位元組序;大端儲存在起始地址處,即是大端位元組序;具體

大端 小端和網路位元組說明

大端(Big-Endian)和小端(little-Endian)的起源 關於大端小端名詞的由來,有一個有趣的故事,來自於Jonathan Swift的《格利佛遊記》:Lilliput和Blefuscu這兩個強國在過去的36個月中一直在苦戰。 戰爭的原因:大家都知道,吃雞蛋的時候,原始的方法是打破

TCP/IP網路程式設計》第5章 筆記&程式碼&註釋

在第四章中的回聲迭代客戶端中,客戶端通過write()一次性將字串傳送過去,之後呼叫read()等待接受自己傳輸的字串,因此這個回聲迭代客戶端是不完美的。 解決方法就是提前確定接受資料的大小: //Linux while(1) { //......相同省略 int str_l

TCP/IP網路程式設計》第4章 筆記&程式碼&註釋

TCP TCP Transmission Control Protocol 傳輸控制協議,意為對資料傳輸過程的控制。 TCP/IP 協議棧 TCP/IP 協議棧分四層: 應用層 TCP層/UDP層 IP層 鏈路層 根據2.的TCP套接字還是UDP套接字