TCP IP網路程式設計之位元組序和網路位元組序

2022-07-09 16:30:15 字數 1317 閱讀 9049

一、概要

二、簡介

在此之前我們需要了解清楚幾個概念。

cpu架構:人們常說的x86 x64是一種架構,但是他有32位的和64位的。32位的叫x86 ,後來出現基於它的64位版,就叫x64。

作業系統位數 :64位的系統是基於64位處理器而來的,所以64位的系統能在64位的處理器上執行,但是不能在32的處理器上執行!

而因為64位處理器是基於32位的x86而來,所以向後相容,支援32位的系統!

情況如下:

64位處理器(x64):64位系統,32位系統

32位處理器(x86):32位系統。64位處理器也能跑16位系統。

只不過進了長模式之後,不再相容16位指令了而已。開機之後如果沒進長模式,還是可以跑16位指令的。

什麼是位元組序和網路位元組序?

網路位元組序

是tcp/ip中規定好的一種資料表示格式,跟cpu型別、作業系統等無關,從而可以保證資料在不同主機之間傳輸時能夠被正確解釋。

主機位元組序

,即位元組在電腦中存放時的序列與輸入(輸出)時的序列是先到的在前還是後到的在前。

只要是intel或amd的x86/x64架構就一定是小端主機位元組序。

三、主要內容

為什麼會有「位元組序」的概念,因為有不同架構的cpu所以每種cpu的儲存資料方式均不同。

cpu向記憶體儲存資料的方式有兩種,相對應解析方式也有2種:

整數中0x12345678, 0x12是最高位位元組,0x78是最低位位元組。因此大端程式中先儲存最高位位元組0x12(最高位位元組0x12存放到低位位址)

先儲存的是最低位位元組0x78。從以上分析可以看出,每種cpu的資料儲存方式不同。因此代表cpu 資料儲存資料方式的主機位元組序在不同cpu中,也各不相同。

大端序系統傳輸資料0x1234時為考慮位元組序問題,直接以0x12、0x34的順序傳送。結果接收端以小端方式儲存資料,因此小端序接收的資料程式設計了0x3412。

來處理這個問題。

網路程式設計之位元組序

關於位元組序的問題,查了一些資料 1.大小端 2.網路位元組序 3.大小端與網路位元組序 4.socket與位元組序 上述資料裡有相關概念和知識點的說明,以下會對部分問題做幾點總結。這裡以主機位元組序作說明,計算機在儲存多位元組資料時,例如c語言中的整型資料 int 無法用乙個位元組單元的記憶體將資...

網路程式設計2 網路程式設計之位元組序

1.什麼是位元組序 位元組序是指多位元組資料在計算機記憶體中儲存或者網路傳輸時各位元組的儲存順序。2.常見的位元組序 a little endian 將低序位元組儲存在起始位址 小端位元組序 b big endian 將高序位元組儲存在起始位址 大端位元組序 例子1 在記憶體中雙字0x0102030...

socket程式設計之網路位元組序與主機位元組序

0 為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為 8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型,另外,對於位數大於 8位的處理器,例如16位或者32位的處理器,由於...