使用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 不...