1. 程式人生 > >linux 網絡相關

linux 網絡相關

ip層 網絡層 聯網 ip地址 gre 斷開 流量控制 隊列 增加

開放互聯網參考模型
OSI
應用層
表示層
會話層                    
傳輸層        亂序重排,重新請求包            
網絡層                     
數據鏈路層      數據幀                    
物理層        比特流   


TCP/IP四層模型
應用層        FTP  HTTP
傳輸層        TCP  UDP
網絡層        IP   ICMP  IGMP
鏈路層        ARP  RARP

封裝

                    用戶數據    應用層
               APP頭部 + 用戶數據    應用層
          TCP頭部 + APP頭部 + 用戶數據    傳輸層
      IP頭部 + TCP頭部 + APP頭部 + 用戶數據    網絡層
以太網頭部 + IP頭部 + TCP頭部 + APP頭部 + 用戶數據    鏈路層

對等通信,協議棧

TCP<---------------->TCP

解封(分用)

從鏈路層解析頭部至對應層

用端口區分是哪個應用程序

MTU:  最大傳輸單元

IP層數據大於 MTU 要分片(自動進行)

鏈路層只識別 MAC 地址 即物理地址

IP ----> MAC   地址解析  ARP

MAC -------->IP  反向地址解析  RARP  (無盤工作站)

ping ip

不是ip地址則轉成ip地址(gethostname)

發送 ICMP (ICHO包)

沒有MAC地址

廣播 ARP 請求

請求的主機保存地址並回應

根據回應發送 ICMP

三次握手,四次斷開,TCP/IP11種狀態

TCP

不可靠表現     解決方法

差錯      校驗和(網際校驗和)

丟包      超時重傳+確認機制

失序      通過序號保證

重復      通過序號保證

UDP

無連接,不可靠,相對高效

TCP 發送數據並啟動定時器,收到消息校驗正確並返回確認,在一定時間內沒有確認就進行超時重傳

滑動窗口協議:(可用於流量控制)

MSS:最大段大小 (IP層分片相關)

通告接收窗口(rwnd):    對方緩沖區

擁塞窗口(cwnd):      網絡承受能力

發送窗口去上面兩個的最小值

慢啟動閥值(ssthresh)

慢啟動階段:cwnd從1按指數增加到ssthresh

擁塞避免階段:cwnd按線性增長至擁塞,cwnd - 1, ssthress減半

大端字節序

數據高位保存於內存低地址

小端字節序

數據高位保存於內存高地址

規定大端字節序為網絡字節序

服務器維持兩個隊列,一個是完成三次握手的隊列,一個是正在進行三次握手的隊列

server init--->bind-->listen-->accept-->close

client init-->connect-->close

服務器要綁定任意地址,設置綁定地址重復利用

使用信號處理僵屍進程,用信號處理管道破裂問題

kill -l

ps -au user

netstat -an | grep post

TCP 基於字節流,無邊界,會產生粘包問題

UDP 基於消息傳輸服務,數據報

應用層向socket緩沖區寫入數據,MSS等限制,可能會分片

解決方法:

1、定長包

2、特定字符結尾邊界(FTP ‘\r\n‘)

3、加包頭記錄長度

4、其他的應用協議

ssize_t: 有符號數

size_t: 無符號數

獲取地址:IP+端口

gethostname

getpeername

linux 網絡相關