Unix網路程式設計 IPV4 IPV6緩衝區大小

2021-06-27 06:06:07 字數 1202 閱讀 2659

使用10進製+句點表示時,所占用的char * 陣列的長度

為什麼需要16位呢?

使用16進製制+冒號+句點表示時,所占用的char * 陣列的長度

為什麼需要46位呢?

疑問三:ipv4加上埠號為什麼是6個位元組,而ipv6是8個位元組?

一:這取決於儲存ipv4

的char * 陣列的最大可能長度。

如:"201.199.244.101"就是乙個最大可能長度的例子。

其內容包括:

4組10進製整數,每組3個;

3個句點;

還有乙個null結束符。

因此,最大可能長度 = 4 * 3 + 3 + 1 = 16

二: 這取決於儲存ipv6

的char * 陣列的最大可能長度。

ipv6包括如下幾種表示方式:

1.x:x:x:x:x:x:x:x,如 "cdcd:910a:9124:2222:5498:8475:1111:3900:2020" 這是純ipv6位址

2.x:x:x:x:x:x:d.d.d.d,如 "cdcd:910a:2222:9124:5498:8475:201.199.244.101" 這是與ipv4混合的ipv6位址

3.加字首的ipv6, x:x:x:x:x:x:d.d.d.d/字首, 如 "12ab:0000:0000:cd30:0000:0000:0000:0000/60"

4.其他:詳細參閱

其中,擁有最大可能長度的是第2種

如 "cdcd:910a:2222:5498:8475:201.199.244.101"

其內容包括:

3組16進製制整數,每組4個16進製制數的字元形態;

6個冒號;

乙個ipv4位址(不算末尾的null,就是15位)

還有乙個null結束符。

因此,最大可能長度 = 6 * 4 + 6 + 15 + 1 = 46 三:

埠號用4個位元組也就是16bit表示,範圍為:0~65535。最大為5位數,換成 char ×的形式也就是佔5個位元組。

ipv4:加上埠號前面的冒號,一共是6個位元組。

這裡加上2個中括號,埠號前面的1個分號,一共在char *裡佔三個位元組。加上埠號的5個位元組,一共是8個位元組。

至於為什麼有的地方要加中括號,請參考:

《網路程式設計》IPv4 與 IPv6 相互操作

由於網際網路終端不斷增加,ipv4 位址長度 32位 已不能夠滿足要求,所以出現了 ipv6位址 128位 但是現有應用程式大部分還是採用 ipv4 位址形式,所以必須解決 ipv4 與 ipv6 之間的相互操作,使現有基於 ipv4 的應用程式能夠與基於 ipv6 的應用程式相互通訊。那麼我們怎麼...

《網路程式設計》IPv4 與 IPv6 相互操作

因為網際網路終端不斷新增。ipv4 位址長度 32位 已不可以滿足要求。所以出現了 ipv6位址 128位 可是現有應用程式大部分還是採用 ipv4 位址形式,所以必須解決 ipv4 與 ipv6 之間的相互操作,使現有基於 ipv4 的應用程式可以與基於 ipv6 的應用程式相互通訊。那麼我們怎麼...

IPv4 IPv6 IPv9三代協議比較

ipv4 優點 實際證明符合當初的設計 1960 1980 是現有國際網際網路技術的基礎。不足 原設計沒想到網際網路發展這麼快,ip位址不夠 表明,到 2010 年位址分配完畢。比如,整個中國的 ip位址還不及美國乙個大學的位址多。不安全,不能進行保密傳送。位址分配效率低只有 0.33 0.22 不...