協議棧 棧close 處理流程

2021-07-23 18:12:07 字數 844 閱讀 3648

msl 時間  2分鐘 30s 60 1

keeplive 2個小時傳送一次包 

超時重傳:

tcp_done:

if (!sock_flag(sk, sock_dead))

sk->sk_state_change(sk);//wakeup

客戶tcp持續重傳資料分節,試圖從伺服器上接受乙個ack。(源自berkeley的實現重傳該資料分節12次,共等待約9分鐘才放棄重傳。

read 返回乙個錯誤碼,**閱讀

laykon:

超時重傳時,對端沒有重啟,返回etimeout , 如果重啟,返回econnreset 

我們保留了tcpdump輸出的時間戳,以便推理tcp的超時重傳策略。觀察tcp報文段6~11被傳送的時間間隔,它們分別為0.2s、0.4s、0.8s、1.6s和3.2s。由此可見,tcp一共執行5次重傳,每次重傳超時時間都增加一倍(因此,和tcp超時重連的策略相似)。在5次重傳均失敗的情況下,底層的ip和arp開始接管,直到telnet客戶端放棄連線為止。

linux有兩個重要的核心引數與tcp超時重傳相關:/proc/sys/net/ipv4/tcp_retries1和/proc/sys/net/ipv4/tcp_retries2。前者指定在底層ip接管之前tcp最少執行的重傳次數,預設值是3。後者指定連線放棄前tcp最多可以執行的重傳次數,預設值是15(一般對應13~30min)。在我們的例項中,tcp超時重傳發生了5次,連線堅持的時間是15min(可以用date命令來測量)。

雖然超時會導致tcp報文段重傳,但tcp報文段的重傳可以發生在超時之前,即快速重傳,這將在下一節中討論。

tcp 超時重傳, 每次超時重傳時間加倍。

例子程式:

Linux TCP IP 協議棧資料傳送流程

一.linux核心網路棧 的準備知識 1.linux核心ipv4網路部分分層結構 bsd socket層 這一部分處理bsd socket相關操作,每個socket在核心中以struct socket結構體現。這一部分的檔案主要有 net socket.c net protocols.c etc i...

TCP IP 協議 協議棧

tcp ip協議棧 整個協議棧被分為了四層,每一層協議負責不同的功能 鏈路層 負責處理物理介面的細節,接受傳送的都是位元流,鏈路層主要有三個目的 1.為ip模組傳送和接收i p資料報 2.為arp模組傳送arp請求和接收arp應答 3.為rarp傳送rarp請求和接收rarp應答 網路層 用來處理網...

《探尋linux協議棧》之一 linux協議棧概述

linux協議棧分層設計思想 linux分層究竟對報文做了什麼總結 本人所從事開發以來,一直在做資料面相關。資料面是乙個通訊裝置最終好不好用最直接的體現。因為乙個網路裝置,好不好用,資料 快不快,資料 穩定不穩定,全部都是使用者最直接體 現。所以工作八年以來,對linux核心協議棧業也積累了自己的一...