進程間通信
特點:依賴于內核,造成缺陷——無法實現多機通信。
網絡編程
地址:由IP地址和端口號構成,端口號用來判斷客戶端接入哪個服務器。
數據的交流:涉及到協議(http,tcp,udp),其實就是數據的格式,雙方約定某種協議進行通信。
linux網絡編程:涉及到tcp協議和udp協議。
socket套接字:用的最多的就是tcp協議和udp協議,其中tcp協議是面向連接的,udp是面向報文的,連接不可靠,但是udp的數據量很大,內存響應快,做精細操作一般用tcp協議,數據量大的話就用udp協議。
字節序
字節序是指多字節數據在計算機內存中存儲或者網絡傳輸時各字節的存儲順序。
常見序
1. Little endian:(小端字節序)將低序字節存儲在起始地址
2. Big endian:(大端字節序)將高序字節存儲在起始地址
LE little-endian
最符合人的思維的字節序,地址低位存儲值的低位,地址高位存儲值的高位
怎么講是最符合人的思維的字節序,是因為從人的第一觀感來說低位值小,就應該放在內存地址小的地方,也即內存地址低位
反之,高位值就應該放在內存地址大的地方,也即內存地址高位
BE big-endian
最直觀的字節序,地址低位存儲值的高位,地址高位存儲值的低位
為什么說直觀,不要考慮對應關系,只需要把內存地址從左到右按照由低到高的順序寫出把值按照通常的高位到低位的順序寫出
兩者對照,一個字節一個字節的填充進去
例子:
在內存中雙字(雙字就是32位)0x01020304(DWORD)的存儲方式
內存地址
4000&4001&4002&4003
LE 04 03 02 01
BE 01 02 03 04
例子:
如果我們將0x1234abcd寫入到以0x0000開始的內存中,則結果為
big-endianlittle-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
x86系列CPU都是little-endian的字節序.
網絡字節序=大端字節序