傳輸層:提供進程地址
tcp:傳輸控制協(xié)議,面向連接的協(xié)議卜高;通信前需要建立虛擬鏈路钮孵;結束后拆除鏈路;主要提供更加可靠的數(shù)據(jù)流通信協(xié)議婿禽。
udp:User Datagram Protocol赏僧,無連接的報文協(xié)議。
0-1023:眾所周知扭倾,永久的分配給固定的應用使用淀零,特權端口管理員可以使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
1024-41951:亦為注冊端口吆录,但要求并不是特別嚴格窑滞,分配給程序注冊為某應用使用,11211/tcp, 11211/udp (memcached), 3306/tcp(mysql)
41952+:客戶端程序隨機使用的端口恢筝;動態(tài)端口哀卫,或私有端口;其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range
內(nèi)核去真正標記一個能夠跨主機通過網(wǎng)絡進行通信的進程時是通過套接字實現(xiàn)的撬槽。
Socket:IPC的一種實現(xiàn)此改,允許位于不同主機(甚至同一主機)上不同進程之間進行通信;數(shù)據(jù)交換侄柔;
SOCK_STREAM:tcp套接字共啃,流式套接字。
SOCK_DGRAM:udp套接字暂题。
SOCK_RAW: 裸套接字移剪,直接調(diào)用api地址,通過ip 報文封裝應用薪者。
當兩個主機直接進行通信時纵苛,所謂同層之間有協(xié)議,不同層之間言津,上層利用下層接口的服務攻人,下層接口向上層接口提供服務,化整為零的把一個較大的分解成各個小問題各個解決悬槽,最終把他們拼湊起來實現(xiàn)模塊化設計怀吻。任何一個層次出現(xiàn)問題,都可以把替換或升級初婆,而不用遷一發(fā)而動全身蓬坡。
IP 報文最大不能超過MTU(最大傳輸單元,通常為1500字節(jié))的大小,LAN 層的封裝猿棉,包括源目標MAC地址和目標MAC地址。
服務器上預先啟動web服務渣窜,也就是向內(nèi)核注冊某個端口铺根,客戶端需要進行通信時,利用瀏覽器進程(雙方打開一組套接字乔宿,服務器端80端口位迂,客戶端使用隨機的端口)
TCP協(xié)議的特性:需要事先建立虛擬鏈路
建立連接:三次握手
將數(shù)據(jù)打包成段:每一個段有一個校驗和(CRC-32)循環(huán)冗余較驗算法
確認、重傳以及超時:
排序:邏輯序號
流量控制:滑動窗口算法
擁塞控制:慢啟動和擁塞避免算法
套接字相關的系統(tǒng)調(diào)用:
socket(): 創(chuàng)建一個套接字详瑞;
bind():綁定
listen():監(jiān)聽
accept():接收請求
connect():請求連接建立
write():發(fā)送
read():接收
send(), recv(), sendto(), recvfrom()