日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

TCPIP学习笔记

發(fā)布時(shí)間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCPIP学习笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

TCP的連接

狀態(tài)變化

?

各個(gè)狀態(tài)的意義如下:

LISTEN - 偵聽來自遠(yuǎn)方TCP端口的連接請(qǐng)求;?

SYN-SENT -在發(fā)送連接請(qǐng)求后等待匹配的連接請(qǐng)求;?

SYN-RECEIVED - 在收到和發(fā)送一個(gè)連接請(qǐng)求后等待對(duì)連接請(qǐng)求的確認(rèn);

ESTABLISHED- 代表一個(gè)打開的連接,數(shù)據(jù)可以傳送給用戶;?

FIN-WAIT-1 - 等待遠(yuǎn)程TCP的連接中斷請(qǐng)求,或先前的連接中斷請(qǐng)求的確認(rèn);

FIN-WAIT-2 - 從遠(yuǎn)程TCP等待連接中斷請(qǐng)求;?

CLOSE-WAIT - 等待從本地用戶發(fā)來的連接中斷請(qǐng)求;

CLOSING -等待遠(yuǎn)程TCP對(duì)連接中斷的確認(rèn);?

LAST-ACK - 等待原來發(fā)向遠(yuǎn)程TCP的連接中斷請(qǐng)求的確認(rèn);?

TIME-WAIT -等待足夠的時(shí)間以確保遠(yuǎn)程TCP接收到連接中斷請(qǐng)求的確認(rèn);

CLOSED - 沒有任何連接狀態(tài);

三次握手(wireshark抓包如下)

?

說明:1.發(fā)送方與接收方各自維護(hù)自身的seq與ack

2.關(guān)于mass指的是包最大發(fā)送數(shù)據(jù)量,決定了要分幾個(gè)包進(jìn)行發(fā)送。Mass加上TCP頭和IP頭的長(zhǎng)度就能得到MTU。

3.win表示自身還能接受多少字節(jié)的數(shù)據(jù)。

4.發(fā)送方根據(jù)ack當(dāng)中期望收到的下一個(gè)字節(jié)的序號(hào)以及窗口,還有已經(jīng)發(fā)送的字節(jié)序號(hào),可以算出還可以發(fā)送的字節(jié)數(shù)。

5.FIN攜帶這個(gè)標(biāo)志的包表示正在請(qǐng)求終止連接。

帶寬與速率、滑動(dòng)窗口之間的關(guān)系

滑動(dòng)窗口:用于接收方通知發(fā)送方自己可以接受的數(shù)據(jù)大小。

擁塞窗口:用于發(fā)送方主動(dòng)控制發(fā)送速率。

帶寬:單位時(shí)間內(nèi)從發(fā)送端到接受端所能通過的最高速率。

設(shè)滑動(dòng)窗口大小為W, 發(fā)送端和接收端的帶寬為B, RTT為Tr。

TCP發(fā)送數(shù)據(jù)時(shí)受滑動(dòng)窗口的限制,當(dāng)TCP將滑動(dòng)窗口中的數(shù)據(jù)都發(fā)出后,在收到第一個(gè)ACK之前,滑動(dòng)窗口大小是0,不能再發(fā)送數(shù)據(jù)了,必須等待ACK包使滑動(dòng)窗口移動(dòng)。那么在理想情況下,ACK包應(yīng)該在什么時(shí)候到達(dá)呢?顯然,就是在數(shù)據(jù)發(fā)出后的RTT時(shí)間后,ACK包到達(dá)。這也就是說,現(xiàn)在在不考慮丟包和擁塞情況下,TCP在一個(gè)RTT時(shí)間內(nèi)能發(fā)出的最大數(shù)據(jù)量為W,所以不考慮帶寬限制下,TCP能一個(gè)時(shí)刻能達(dá)到的最大速度是 V = W/Tr

如果假設(shè)Tr是一個(gè)定值,那么決定TCP速率的唯一因素就是TCP的滑動(dòng)窗口大小。現(xiàn)在再考慮帶寬限制,前面說過當(dāng)馬路上擺滿車的時(shí)候,就無法再往里放車了,同理,TCP發(fā)送端在Tr/2時(shí)間內(nèi),能往通道上放的數(shù)據(jù)量為 V*Tr/2,當(dāng) V*Tr/2<=B*Tr/2時(shí),單向通道容積不構(gòu)成瓶頸,速率的限制主要來源于窗口大小限制。而當(dāng)V*Tr/2>B*Tr/2時(shí),則就受到容積限制,即此時(shí)速率限制來源于帶寬限制。

把V*Tr/2<=B*Tr/2和V*Tr/2>B*Tr/2兩邊的Tr/2約掉,再把V = W/Tr代入,則可以得到 :

W <= B*Tr 及 W > B*Tr

B*Tr就是帶寬時(shí)延乘積,取W為TCP能支持窗口的最大值Wmax,當(dāng)Wmax <= B*Tr時(shí),此時(shí)發(fā)送和接收端之間的通道就是所謂的長(zhǎng)肥管道,即帶寬時(shí)延乘積大的通道。在我們平時(shí)生活中使用的寬帶網(wǎng)絡(luò),ADSL等環(huán)境下,因?yàn)閹挾急容^小,從而B*Tr也比較小,再加上網(wǎng)絡(luò)情況比較復(fù)雜,擁塞情況比較常見,所以這些網(wǎng)絡(luò)環(huán)境下,TCP速率的主要限制因素在于帶寬,丟包率等。長(zhǎng)肥管道一般不太常見,多見于一些單位使用的專線網(wǎng)絡(luò),在這些網(wǎng)絡(luò)中速率的主要限制因素就是窗口大小了,這也是傳統(tǒng)TCP在這些網(wǎng)絡(luò)環(huán)境中不能充分利用帶寬的原因所在(因?yàn)閭鹘y(tǒng)TCP的窗口大小是用2字節(jié)表示的,所以最大只有65535(不考慮窗口擴(kuò)大選項(xiàng))),除了專線網(wǎng)絡(luò)外,隨著網(wǎng)絡(luò)硬件技術(shù)的發(fā)展,萬(wàn)兆交換機(jī)的出現(xiàn),局域網(wǎng)中也可能會(huì)出現(xiàn)帶寬時(shí)延乘積較大的情況。

總結(jié),在W<B*Tr時(shí),影響TCP發(fā)送數(shù)據(jù)速率的最直接的因素是滑動(dòng)窗口的大小,TCP的流量控制策略(比如超時(shí)時(shí)窗口設(shè)置為1,重復(fù)ACK時(shí)窗口減半)最終都是通過控制窗口大小來控制速率,而慢啟動(dòng),擁塞避免這些流量控制算法實(shí)際上就是控制窗口增長(zhǎng)方式的算法,也就是控制的是加速度大小。當(dāng)W>B*Tr時(shí),則影響速率的因素就是帶寬了。

重傳的研究

網(wǎng)絡(luò)之所以能限制發(fā)送窗口,是因?yàn)樗豢跉馐盏教鄶?shù)據(jù)時(shí)會(huì)發(fā)生擁塞。

擁塞窗口的維護(hù):

  • 連接剛剛建立,發(fā)送方對(duì)網(wǎng)絡(luò)情況一無所知,如果一口氣發(fā)太多數(shù)據(jù)就可能遭遇擁塞,所以發(fā)送方把擁塞窗口的初始值定的很小。
  • 慢啟動(dòng)。
  • 擁塞避免。
  • ?

    發(fā)生超時(shí)重傳之后:

    ?

    快速重傳:當(dāng)發(fā)送方得到三個(gè)或以上重復(fù)確認(rèn)時(shí),就意識(shí)到相應(yīng)的包已經(jīng)丟,立即重傳。之所以限定三個(gè)或者以上可以在很大程度上避免因亂序而觸發(fā)快速重傳。

    說明:

  • 沒有發(fā)生擁塞時(shí),發(fā)送窗口越大,性能越好。所以在沒有帶寬限制的情況下,應(yīng)該盡量增大接受窗口。
  • 如果經(jīng)常發(fā)生擁塞,那限制發(fā)送窗口反而能提高性能。因?yàn)榧幢闶侨f(wàn)分之一的重傳對(duì)性能的影響都很大。
  • 超時(shí)重傳對(duì)性能影響最大,因?yàn)樗幸欢螘r(shí)間(RTO)沒有數(shù)據(jù)傳輸,而且擁塞窗口會(huì)設(shè)置成1mss
  • 快速重傳對(duì)性能影響小一些,因?yàn)樗鼪]有等待時(shí)間,而且擁塞窗口減少的沒有那么大。
  • SACK和NewReno有利于提高重傳效率,提高傳輸性能。
  • 丟包對(duì)極小的文件影響比大文件要大。
  • ?

    轉(zhuǎn)載于:https://www.cnblogs.com/wangzhenghua/p/10254877.html

    總結(jié)

    以上是生活随笔為你收集整理的TCPIP学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。