零聲手把手實(shí)現(xiàn)tcp/ip用戶態(tài)協(xié)議棧 (含posix API實(shí)現(xiàn))
IP地址
每個(gè)計(jì)算機(jī)必須有一個(gè) IP 地址才能夠連入因特網(wǎng)。
每個(gè) IP 包必須有一個(gè)地址才能夠發(fā)送到另一臺(tái)計(jì)算機(jī)。
網(wǎng)絡(luò)上每一個(gè)節(jié)點(diǎn)都必須有一個(gè)獨(dú)立的Internet地址(也叫做IP地址)。現(xiàn)在,通常使用的IP地址是一個(gè)32bit的數(shù)字,也就是我們常說(shuō)的IPv4標(biāo)準(zhǔn),這32bit的數(shù)字分成四組,也就是常見的255.255.255.255的樣式。IPv4標(biāo)準(zhǔn)上,地址被分為五類,我們常用的是B類地址。具體的分類請(qǐng)參考其他文檔。需要注意的是IP地址是網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)的組合,這非常重要。
CP/IP 使用 32 個(gè)比特來(lái)編址。一個(gè)計(jì)算機(jī)字節(jié)是 8 比特。所以 TCP/IP 使用了 4 個(gè)字節(jié)。
一個(gè)計(jì)算機(jī)字節(jié)可以包含 256 個(gè)不同的值:
00000000、00000001、00000010、00000011、00000100、00000101、00000110、00000111、00001000 ....... 直到 11111111。
現(xiàn)在,你知道了為什么 TCP/IP 地址是介于 0 到 255 之間的 4 個(gè)數(shù)字。
TCP 使用固定的連接
TCP 用于應(yīng)用程序之間的通信。
當(dāng)應(yīng)用程序希望通過(guò) TCP 與另一個(gè)應(yīng)用程序通信時(shí),它會(huì)發(fā)送一個(gè)通信請(qǐng)求。這個(gè)請(qǐng)求必須被送到一個(gè)確切的地址。在雙方“握手”之后,TCP 將在兩個(gè)應(yīng)用程序之間建立一個(gè)全雙工 (full-duplex) 的通信。
這個(gè)全雙工的通信將占用兩個(gè)計(jì)算機(jī)之間的通信線路,直到它被一方或雙方關(guān)閉為止。
UDP 和 TCP 很相似,但是更簡(jiǎn)單,同時(shí)可靠性低于 TCP。