傳輸層:提供進(jìn)程地址
tcp:傳輸控制協(xié)議,面向連接的協(xié)議;通信前需要建立虛擬鏈路;結(jié)束后拆除鏈路;主要提供更加可靠的數(shù)據(jù)流通信協(xié)議。
udp:User Datagram Protocol,無(wú)連接的報(bào)文協(xié)議。
0-1023:眾所周知,永久的分配給固定的應(yīng)用使用,特權(quán)端口管理員可以使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-41951:亦為注冊(cè)端口,但要求并不是特別嚴(yán)格,分配給程序注冊(cè)為某應(yīng)用使用,11211/tcp, 11211/udp (memcached), 3306/tcp(mysql)
41952+:客戶端程序隨機(jī)使用的端口;動(dòng)態(tài)端口,或私有端口;其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range
內(nèi)核去真正標(biāo)記一個(gè)能夠跨主機(jī)通過(guò)網(wǎng)絡(luò)進(jìn)行通信的進(jìn)程時(shí)是通過(guò)套接字實(shí)現(xiàn)的。
Socket:IPC的一種實(shí)現(xiàn),允許位于不同主機(jī)(甚至同一主機(jī))上不同進(jìn)程之間進(jìn)行通信;數(shù)據(jù)交換;
SOCK_STREAM:tcp套接字,流式套接字。
SOCK_DGRAM:udp套接字。
SOCK_RAW: 裸套接字,直接調(diào)用api地址,通過(guò)ip 報(bào)文封裝應(yīng)用。
當(dāng)兩個(gè)主機(jī)直接進(jìn)行通信時(shí),所謂同層之間有協(xié)議,不同層之間,上層利用下層接口的服務(wù),下層接口向上層接口提供服務(wù),化整為零的把一個(gè)較大的分解成各個(gè)小問(wèn)題各個(gè)解決,最終把他們拼湊起來(lái)實(shí)現(xiàn)模塊化設(shè)計(jì)。任何一個(gè)層次出現(xiàn)問(wèn)題,都可以把替換或升級(jí),而不用遷一發(fā)而動(dòng)全身。

IP 報(bào)文最大不能超過(guò)MTU(最大傳輸單元,通常為1500字節(jié))的大小,LAN 層的封裝,包括源目標(biāo)MAC地址和目標(biāo)MAC地址。
服務(wù)器上預(yù)先啟動(dòng)web服務(wù),也就是向內(nèi)核注冊(cè)某個(gè)端口,客戶端需要進(jìn)行通信時(shí),利用瀏覽器進(jìn)程(雙方打開(kāi)一組套接字,服務(wù)器端80端口,客戶端使用隨機(jī)的端口)

TCP協(xié)議的特性:需要事先建立虛擬鏈路
建立連接:三次握手
將數(shù)據(jù)打包成段:每一個(gè)段有一個(gè)校驗(yàn)和(CRC-32)循環(huán)冗余較驗(yàn)算法
確認(rèn)、重傳以及超時(shí):
排序:邏輯序號(hào)
流量控制:滑動(dòng)窗口算法
擁塞控制:慢啟動(dòng)和擁塞避免算法
套接字相關(guān)的系統(tǒng)調(diào)用:
socket(): 創(chuàng)建一個(gè)套接字;
bind():綁定
listen():監(jiān)聽(tīng)
accept():接收請(qǐng)求
connect():請(qǐng)求連接建立
write():發(fā)送
read():接收
send(), recv(), sendto(), recvfrom()