中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

小廣告怎么舉報網(wǎng)站排名優(yōu)化公司哪家好

小廣告怎么舉報,網(wǎng)站排名優(yōu)化公司哪家好,寶安電子廠做高端網(wǎng)站,書香氣的域名做網(wǎng)站TCP協(xié)議 1.連接管理機(jī)制2.再談WAIT_TIME狀態(tài)2.1理解WAIT_TIME狀態(tài)2.2解決TIME_WAIT狀態(tài)引起的bind失敗的方法2.3監(jiān)聽套接字listen第二個參數(shù)介紹 3.滑動窗口3.1介紹3.2丟包情況分析 4.流量控制5.擁塞控制5.1介紹5.2慢啟動 6.捎帶應(yīng)答、延時應(yīng)答 1.連接管理機(jī)制 正常情況下&…

000

TCP協(xié)議

  • 1.連接管理機(jī)制
  • 2.再談WAIT_TIME狀態(tài)
    • 2.1理解WAIT_TIME狀態(tài)
    • 2.2解決TIME_WAIT狀態(tài)引起的bind失敗的方法
    • 2.3監(jiān)聽套接字listen第二個參數(shù)介紹
  • 3.滑動窗口
    • 3.1介紹
    • 3.2丟包情況分析
  • 4.流量控制
  • 5.擁塞控制
    • 5.1介紹
    • 5.2慢啟動
  • 6.捎帶應(yīng)答、延時應(yīng)答

1.連接管理機(jī)制

正常情況下,TCP需要經(jīng)過三次握手建立連接+四次揮手?jǐn)嚅_鏈接,下面看一個圖:
0001

  • 服務(wù)器的狀態(tài)變化:
  • [CLOSED -> LISTEN] 服務(wù)器端調(diào)用listen后進(jìn)入LISTEN狀態(tài), 等待客戶端連接;
  • [LISTEN -> SYN_RCVD] 一旦監(jiān)聽到連接請求(同步報文段), 就將該連接放入內(nèi)核等待隊列中, 并向客戶端發(fā)送SYN確認(rèn)報文.
  • [SYN_RCVD -> ESTABLISHED] 服務(wù)端一旦收到客戶端的確認(rèn)報文, 就進(jìn)入ESTABLISHED狀態(tài), 可以進(jìn)行
    讀寫數(shù)據(jù)了.
  • [ESTABLISHED -> CLOSE_WAIT] 當(dāng)客戶端主動關(guān)閉連接(調(diào)用close), 服務(wù)器會收到結(jié)束報文段, 服務(wù)器返回確認(rèn)報文段并進(jìn)入CLOSE_WAIT;
  • [CLOSE_WAIT -> LAST_ACK] 進(jìn)入CLOSE_WAIT后說明服務(wù)器準(zhǔn)備關(guān)閉連接(需要處理完之前的數(shù)據(jù)); 當(dāng)服務(wù)器真正調(diào)用close關(guān)閉連接時, 會向客戶端發(fā)送FIN, 此時服務(wù)器進(jìn)入LAST_ACK狀態(tài), 等待最后一個ACK到來(這個ACK是客戶端確認(rèn)收到了FIN)
  • [LAST_ACK -> CLOSED] 服務(wù)器收到了對FIN的ACK, 徹底關(guān)閉連接.
  • 客戶端狀態(tài)變化
  • [CLOSED -> SYN_SENT] 客戶端調(diào)用connect, 發(fā)送同步報文段;
  • [SYN_SENT -> ESTABLISHED] connect調(diào)用成功, 則進(jìn)入ESTABLISHED狀態(tài), 開始讀寫數(shù)據(jù);
  • [ESTABLISHED -> FIN_WAIT_1] 客戶端主動調(diào)用close時, 向服務(wù)器發(fā)送結(jié)束報文段, 同時進(jìn)入FIN_WAIT_1;
  • [FIN_WAIT_1 -> FIN_WAIT_2] 客戶端收到服務(wù)器對結(jié)束報文段的確認(rèn), 則進(jìn)入FIN_WAIT_2, 開始等待服務(wù)器的結(jié)束報文段;
  • [FIN_WAIT_2 -> TIME_WAIT] 客戶端收到服務(wù)器發(fā)來的結(jié)束報文段, 進(jìn)入TIME_WAIT, 并發(fā)出LAST_ACK;
  • [TIME_WAIT -> CLOSED] 客戶端要等待一個2MSL(Max Segment Life, 報文最大生存時間)的時間, 才會進(jìn)入CLOSED狀態(tài).

2.再談WAIT_TIME狀態(tài)

2.1理解WAIT_TIME狀態(tài)

現(xiàn)在做一個測試,首先啟動server,然后啟動client,然后用Ctrl-C使server終止,這時馬上再運(yùn)行server, 結(jié)果是:
0007
這是因為,雖然server的應(yīng)用程序終止了,但TCP協(xié)議層的連接并沒有完全斷開,因此不能再次監(jiān) 聽同樣的server端口.
我們用netstat命令查看一下:
0008

TCP協(xié)議規(guī)定,主動關(guān)閉連接的一方要處于TIME_ WAIT狀態(tài),等待兩個MSL(maximum segment lifetime)的時間后才能回到CLOSED狀態(tài).
我們使用Ctrl-C終止了server, 所以server是主動關(guān)閉連接的一方, 在TIME_WAIT期間仍然不能再次監(jiān)聽同樣的server端口;
MSL在RFC1122中規(guī)定為兩分鐘,但是各操作系統(tǒng)的實現(xiàn)不同, 在Centos7上默認(rèn)配置的值是60s;
可以通過 cat /proc/sys/net/ipv4/tcp_fin_timeout 查看msl的值;

  • 為什么TIME_WAIT的時間是2MSL?

MSL是TCP報文的最大生存時間, 因此TIME_WAIT持續(xù)存在2MSL的話
就能保證在兩個傳輸方向上的尚未被接收或遲到的報文段都已經(jīng)消失(否則服務(wù)器立刻重啟, 可能會收到來自上一個進(jìn)程的遲到的數(shù)據(jù), 但是這種數(shù)據(jù)很可能是錯誤的);
同時也是在理論上保證最后一個報文可靠到達(dá)(假設(shè)最后一個ACK丟失, 那么服務(wù)器會再重發(fā)一個FIN. 這時雖然客戶端的進(jìn)程不在了, 但是TCP連接還在, 仍然可以重發(fā)LAST_ACK);

2.2解決TIME_WAIT狀態(tài)引起的bind失敗的方法

  • 在server的TCP連接沒有完全斷開之前不允許重新監(jiān)聽, 某些情況下可能是不合理的

服務(wù)器需要處理非常大量的客戶端的連接(每個連接的生存時間可能很短, 但是每秒都有很大數(shù)量的客戶端來請求).
這個時候如果由服務(wù)器端主動關(guān)閉連接(比如某些客戶端不活躍, 就需要被服務(wù)器端主動清理掉), 就會產(chǎn)
生大量TIME_WAIT連接.由于我們的請求量很大, 就可能導(dǎo)致TIME_WAIT的連接數(shù)很多, 每個連接都會占用一個通信五元組(源ip,源端口, 目的ip, 目的端口, 協(xié)議). 其中服務(wù)器的ip和端口和協(xié)議是固定的. 如果新來的客戶端連接的ip和端口號和TIME_WAIT占用的鏈接重復(fù)了, 就會出現(xiàn)問題.

  • setsockopt函數(shù)介紹

setsockopt 是一個用于設(shè)置套接字選項的函數(shù),通常用于配置套接字的各種屬性。它可以被用于不同類型的套接字,如 TCP 套接字和 UDP 套接字,以及其他類型的網(wǎng)絡(luò)套接字。setsockopt 允許你在編程中控制套接字的行為和參數(shù)。

下面是 setsockopt 函數(shù)的常用參數(shù):

套接字描述符(Socket Descriptor):指定要設(shè)置選項的套接字描述符。

  • 層級(Level):指定選項的所屬協(xié)議族或協(xié)議層級,如 SOL_SOCKET 表示通用套接字選項,IPPROTO_TCP 表示 TCP 協(xié)議選項,IPPROTO_IP 表示 IP 協(xié)議選項等。
  • 選項名稱(Option Name):指定要設(shè)置的選項名稱,如 SO_REUSEADDR 表示重用本地地址選項,TCP_NODELAY 表示禁用 Nagle 算法選項等。
  • 選項值(Option Value):設(shè)置選項的新值,這個值的數(shù)據(jù)類型和選項名稱有關(guān),通常是一個指向某種數(shù)據(jù)類型的指針,例如 int、struct timeval 等。
  • 選項值的長度(Option Length):指定選項值的長度。
    通過 setsockopt,你可以配置諸如套接字緩沖區(qū)大小、重用地址、禁用 Nagle 算法、設(shè)置超時等多種選項,以滿足你的網(wǎng)絡(luò)通信需求。這個函數(shù)在網(wǎng)絡(luò)編程中經(jīng)常用于優(yōu)化套接字的性能和行為,確保數(shù)據(jù)傳輸?shù)目煽啃院托省?/li>
  • 需要注意的是,setsockopt 函數(shù)的錯誤處理很重要,因為配置錯誤的套接字選項可能導(dǎo)致不穩(wěn)定的網(wǎng)絡(luò)行為或錯誤。因此,在使用該函數(shù)時,建議檢查返回值以確保選項設(shè)置成功。
  • 實際案例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <netinet/tcp.h>int main() {// 創(chuàng)建 TCP 套接字int sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {perror("socket");exit(EXIT_FAILURE);}// 設(shè)置 TCP 連接超時時間為 5 秒struct timeval timeout;timeout.tv_sec = 5; // 5 秒timeout.tv_usec = 0;if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) < 0) {perror("setsockopt");close(sockfd);exit(EXIT_FAILURE);}// 嘗試連接到遠(yuǎn)程服務(wù)器struct sockaddr_in server_addr;memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_port = htons(80); // HTTP 默認(rèn)端口inet_pton(AF_INET, "www.example.com", &(server_addr.sin_addr));if (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {perror("connect");close(sockfd);exit(EXIT_FAILURE);}printf("Connected to www.example.com\n");// 在這里可以進(jìn)行后續(xù)的數(shù)據(jù)交換或操作// 關(guān)閉套接字close(sockfd);return 0;
}

在上面的示例中,我們創(chuàng)建了一個 TCP 套接字,并使用 setsockopt 設(shè)置了接收超時時間為 5 秒。然后,我們嘗試連接到 www.example.com 的 HTTP 服務(wù)。如果連接在 5 秒內(nèi)成功建立,將打印 “Connected to www.example.com”。否則,連接超時會導(dǎo)致 connect 失敗,錯誤處理部分將處理超時情況。

2.3監(jiān)聽套接字listen第二個參數(shù)介紹

if(listen(listenSock,2)<0)
{
exit(3);
}

在這里的2表示什么?當(dāng)服務(wù)器在處理其他請求時來不及處理新的鏈接請求,監(jiān)聽套接字所維護(hù)的最大鏈接數(shù)為:2+1,相當(dāng)于排隊
listen底層有個backlog來維護(hù):

backlog 是 TCP 套接字選項之一,它用于指定操作系統(tǒng)中已完成連接隊列的最大長度。在網(wǎng)絡(luò)編程中,當(dāng)服務(wù)器接受到客戶端的連接請求時,操作系統(tǒng)會將這些請求存儲在一個已完成連接隊列中,等待服務(wù)器進(jìn)程調(diào)用 accept 來接受這些連接。backlog 參數(shù)控制了這個隊列的最大長度。

  • 下面是關(guān)于 backlog 的一些重要信息:
  • 作用:backlog 的主要作用是限制已完成連接隊列的長度,以防止服務(wù)器處理不過來的連接請求。它允許服務(wù)器在高負(fù)載情況下接受連接請求,并將未處理的連接請求排隊等待處理。
  • 默認(rèn)值:backlog 的默認(rèn)值在不同的操作系統(tǒng)上可能有所不同。通常,操作系統(tǒng)會提供一個合理的默認(rèn)值,但這個值可能不足以處理高負(fù)載情況。
  • 合適的值:合適的 backlog 值取決于服務(wù)器的負(fù)載和性能要求。如果服務(wù)器期望高并發(fā)連接,應(yīng)該將 backlog 設(shè)置為較大的值,以便排隊更多的連接請求。但是,設(shè)置太大的值可能會占用過多的系統(tǒng)資源,因此需要權(quán)衡。
  • 超出 backlog 的連接請求:如果有更多的連接請求到達(dá)服務(wù)器,超過了 backlog 設(shè)置的大小,這些連接請求可能會被服務(wù)器拒絕或丟棄,具體行為取決于操作系統(tǒng)和服務(wù)器的配置。
  • 動態(tài)調(diào)整:一些服務(wù)器應(yīng)用程序支持在運(yùn)行時動態(tài)調(diào)整 backlog 值,以根據(jù)服務(wù)器的當(dāng)前負(fù)載和性能要求進(jìn)行優(yōu)化。這可以通過重新設(shè)置套接字選項來實現(xiàn)。
  • 總之,backlog 是一個重要的套接字選項,用于控制服務(wù)器的連接排隊行為。合適的 backlog 值應(yīng)該根據(jù)服務(wù)器的性能需求和負(fù)載情況來配置,以確保服務(wù)器能夠有效地處理連接請求。

這其實也是一種池化技術(shù),進(jìn)行排隊等待處理,

  • 排隊的意義在于:可以讓服務(wù)器在有閑置的情況下,拿到鏈接處理相關(guān)任務(wù),減少資源的閑置,提高利用率。
  • 為什么不能設(shè)置過長:1.太長的排隊影響處理效率,新的任務(wù)需要等待很長的時間才能處理,影響客戶體驗;2.隊列也是會占用系統(tǒng)資源的,設(shè)置過長占用過多的系統(tǒng)資源,反而可能導(dǎo)致服務(wù)器的效率降低!

3.滑動窗口

3.1介紹

  • 定義:滑動窗口是一個用于管理數(shù)據(jù)傳輸?shù)拇翱诨蚓彌_區(qū),通常由接收方控制。這個窗口可以看作是接收方的一個緩沖區(qū),用于存儲將要接收的數(shù)據(jù)包。發(fā)送方根據(jù)窗口的大小和接收方的狀態(tài)來確定可以發(fā)送多少數(shù)據(jù)包。
  • 工作原理:滑動窗口的大小以數(shù)據(jù)包數(shù)量為單位。發(fā)送方和接收方都維護(hù)一個窗口大小的計數(shù)器。發(fā)送方將數(shù)據(jù)包發(fā)送到接收方,并等待接收方確認(rèn)。一旦接收方確認(rèn)收到數(shù)據(jù)包,發(fā)送方就可以向前滑動窗口,發(fā)送下一個數(shù)據(jù)包。接收方使用窗口大小來控制允許接收的數(shù)據(jù)包數(shù)量,一旦接收方處理了一個數(shù)據(jù)包,它可以向前滑動窗口以接收下一個數(shù)據(jù)包。
  • 流量控制:滑動窗口用于流量控制,以確保發(fā)送方不會發(fā)送太多數(shù)據(jù)導(dǎo)致接收方無法處理。接收方可以通過減小窗口大小來通知發(fā)送方減慢數(shù)據(jù)傳輸速度。這種機(jī)制可防止數(shù)據(jù)包的堆積和丟失。
  • 擁塞控制:滑動窗口也用于擁塞控制,幫助避免網(wǎng)絡(luò)擁塞。當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時,接收方可以減小窗口大小,通知發(fā)送方降低傳輸速度,從而減輕網(wǎng)絡(luò)負(fù)載。
  • 實時調(diào)整:滑動窗口的大小通??梢詣討B(tài)調(diào)整,以適應(yīng)網(wǎng)絡(luò)條件的變化。這種動態(tài)調(diào)整可以根據(jù)網(wǎng)絡(luò)延遲、丟包率等指標(biāo)來執(zhí)行,以確保最佳的性能。
  • 應(yīng)用:滑動窗口廣泛應(yīng)用于TCP協(xié)議中,用于實現(xiàn)可靠的數(shù)據(jù)傳輸和流量控制。它還用于一些應(yīng)用層協(xié)議,如HTTP,以管理并發(fā)連接和數(shù)據(jù)傳輸。
  • 沒有滑動窗口情況下通信:
    0009
    既然這樣一發(fā)一收的方式性能較低, 那么我們一次發(fā)送多條數(shù)據(jù), 就可以大大的提高性能(其實是將多個段的等待時間重疊在一起了).

0010

窗口大小指的是無需等待確認(rèn)應(yīng)答而可以繼續(xù)發(fā)送數(shù)據(jù)的最大值. 上圖的窗口大小就是4000個字節(jié)(四個段).
發(fā)送前四個段的時候, 不需要等待任何ACK, 直接發(fā)送;
收到第一個ACK后, 滑動窗口向后移動, 繼續(xù)發(fā)送第五個段的數(shù)據(jù); 依次類推;
操作系統(tǒng)內(nèi)核為了維護(hù)這個滑動窗口, 需要開辟 ** 發(fā)送緩沖區(qū) ** (沒有收到確認(rèn)時需要重傳) 來記錄當(dāng)前還有哪些數(shù)據(jù)沒有應(yīng)答;
只有確認(rèn)應(yīng)答過的數(shù)據(jù), 才能從緩沖區(qū)刪掉;
窗口越大, 則網(wǎng)絡(luò)的吞吐率就越高;
0011

3.2丟包情況分析

  • 情況一: 數(shù)據(jù)包已經(jīng)抵達(dá), ACK被丟了
    0012
    這種情況下, 部分ACK丟了并不要緊, 因為可以通過后續(xù)的ACK進(jìn)行確認(rèn),也就是說:主機(jī)A給主機(jī)B發(fā)送1~6000號數(shù)據(jù)包,主機(jī)B已經(jīng)收到了,但是其中的確認(rèn)請求1001(確認(rèn)前1000號)和2001、3001、4001、主機(jī)A都沒有收到,但是6001收到了,這就說明前6000號數(shù)據(jù)包已經(jīng)成功接收!!! 如果說出現(xiàn)這樣一種情況:1000–2000號數(shù)據(jù)包丟了,其他的數(shù)據(jù)包成功接收,那么主機(jī)B并不會確認(rèn)6001號,而是確認(rèn)1001,表示后面的丟失,這時候就要進(jìn)行重傳!

  • 情況二: 數(shù)據(jù)包就直接丟了.
    0013

當(dāng)某一段報文段丟失之后, 發(fā)送端會一直收到 1001 這樣的ACK, 就像是在提醒發(fā)送端 "我想要的是 1001"一樣;
如果發(fā)送端主機(jī)連續(xù)三次收到了同樣一個 “1001” 這樣的應(yīng)答, 就會將對應(yīng)的數(shù)據(jù) 1001 - 2000 重新發(fā)送;
這個時候接收端收到了 1001 之后, 再次返回的ACK就是7001了(因為2001 - 7000)接收端其實之前就已經(jīng)收到了, 被放到了接收端操作系統(tǒng)內(nèi)核的接收緩沖區(qū)中;

  • 這種機(jī)制被稱為 “高速重發(fā)控制”(也叫 “快重傳”).

4.流量控制

接收端處理數(shù)據(jù)的速度是有限的. 如果發(fā)送端發(fā)的太快, 導(dǎo)致接收端的緩沖區(qū)被打滿, 這個時候如果發(fā)送端繼續(xù)發(fā)送,就會造成丟包, 繼而引起丟包重傳等等一系列連鎖反應(yīng).
因此TCP支持根據(jù)接收端的處理能力, 來決定發(fā)送端的發(fā)送速度. 這個機(jī)制就叫做流量控制(Flow Control);

接收端將自己可以接收的緩沖區(qū)大小放入 TCP 首部中的 “窗口大小” 字段, 通過ACK端通知發(fā)送端;
窗口大小字段越大, 說明網(wǎng)絡(luò)的吞吐量越高;
接收端一旦發(fā)現(xiàn)自己的緩沖區(qū)快滿了, 就會將窗口大小設(shè)置成一個更小的值通知給發(fā)送端;
發(fā)送端接受到這個窗口之后, 就會減慢自己的發(fā)送速度;
如果接收端緩沖區(qū)滿了, 就會將窗口置為0; 這時發(fā)送方不再發(fā)送數(shù)據(jù), 但是需要定期發(fā)送一個窗口探測數(shù)據(jù)段, 使接收端把窗口大小告訴發(fā)送端.

0014

接收端如何把窗口大小告訴發(fā)送端呢? 回憶我們的TCP首部中, 有一個16位窗口字段, 就是存放了窗口大小信息;
那么問題來了, 16位數(shù)字最大表示65535, 那么TCP窗口最大就是65535字節(jié)么?
實際上, TCP首部40字節(jié)選項中還包含了一個窗口擴(kuò)大因子M, 實際窗口大小是 窗口字段的值左移 M 位;

5.擁塞控制

5.1介紹

擁塞控制(Congestion Control)是計算機(jī)網(wǎng)絡(luò)中的一種重要機(jī)制,用于管理網(wǎng)絡(luò)擁塞的發(fā)生和傳播,以保持網(wǎng)絡(luò)的穩(wěn)定性和性能。擁塞通常發(fā)生在網(wǎng)絡(luò)上的某個點或鏈路上,當(dāng)網(wǎng)絡(luò)負(fù)載超過其容量時,數(shù)據(jù)包開始堆積、丟失或延遲增加,從而降低了網(wǎng)絡(luò)的效率和可用性。
擁塞控制的主要目標(biāo)是防止和減輕網(wǎng)絡(luò)擁塞,確保網(wǎng)絡(luò)吞吐量最大化,同時避免過多的數(shù)據(jù)包丟失。以下是擁塞控制的一些關(guān)鍵概念和技術(shù):

  • 擁塞窗口:擁塞控制使用擁塞窗口(Congestion Window,通??s寫為cwnd)來限制發(fā)送方可以發(fā)送到網(wǎng)絡(luò)的數(shù)據(jù)包數(shù)量。擁塞窗口的大小決定了發(fā)送方可以在網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)包的數(shù)量。發(fā)送方會根據(jù)網(wǎng)絡(luò)的擁塞程度來動態(tài)調(diào)整擁塞窗口的大小。
  • 擁塞信號:網(wǎng)絡(luò)中的路由器和交換機(jī)會在發(fā)生擁塞時向發(fā)送方發(fā)送擁塞信號。這些信號可以是丟棄數(shù)據(jù)包、降低數(shù)據(jù)包優(yōu)先級或發(fā)送擁塞通知等方式。發(fā)送方根據(jù)這些信號來減少發(fā)送速率。
  • 慢啟動:慢啟動是一種擁塞控制算法,用于在連接開始時逐漸增加發(fā)送速率,以避免立即引發(fā)網(wǎng)絡(luò)擁塞。發(fā)送方開始時只發(fā)送少量數(shù)據(jù)包,然后根據(jù)網(wǎng)絡(luò)的反饋逐漸增加發(fā)送速率。
  • 擁塞避免:一旦擁塞窗口達(dá)到某個閾值,發(fā)送方進(jìn)入擁塞避免階段。在這個階段,發(fā)送方以更加保守的速率增加擁塞窗口,以避免引發(fā)擁塞。
  • 快重傳和快恢復(fù):快重傳和快恢復(fù)是一種機(jī)制,用于更快地檢測和響應(yīng)數(shù)據(jù)包丟失。當(dāng)接收方收到無序的數(shù)據(jù)包時,它可以立即向發(fā)送方發(fā)送重復(fù)確認(rèn),以觸發(fā)發(fā)送方進(jìn)行快速重傳和快速恢復(fù)。
  • 主動隊列管理:路由器和交換機(jī)可以使用主動隊列管理算法來減輕擁塞。這些算法可以根據(jù)網(wǎng)絡(luò)負(fù)載動態(tài)管理數(shù)據(jù)包的排隊,以防止擁塞的發(fā)生。
  • 流量控制和窗口調(diào)整:擁塞控制和流量控制有時會被混淆,但它們有不同的目標(biāo)。流量控制是為了防止接收方被發(fā)送方的數(shù)據(jù)淹沒,而擁塞控制是為了防止網(wǎng)絡(luò)擁塞。窗口大小的調(diào)整是擁塞控制的核心部分。
  • 擁塞控制在現(xiàn)代計算機(jī)網(wǎng)絡(luò)中至關(guān)重要,它確保了網(wǎng)絡(luò)的穩(wěn)定性和性能。通過動態(tài)調(diào)整數(shù)據(jù)包的發(fā)送速率和響應(yīng)網(wǎng)絡(luò)擁塞,擁塞控制確保了數(shù)據(jù)的可靠傳輸,并提供了更好的用戶體驗。不同的擁塞控制算法和機(jī)制可以根據(jù)網(wǎng)絡(luò)類型和需求進(jìn)行選擇和配置。

5.2慢啟動

0014

此處引入一個概念程為擁塞窗口
發(fā)送開始的時候, 定義擁塞窗口大小為1;
每次收到一個ACK應(yīng)答, 擁塞窗口加1;
每次發(fā)送數(shù)據(jù)包的時候, 將擁塞窗口和接收端主機(jī)反饋的窗口大小做比較, 取較小的值作為實際發(fā)送的窗口

  • 像上面這樣的擁塞窗口增長速度, 是指數(shù)級別的. “慢啟動” 只是指初使時慢, 但是增長速度非???

為了不增長的那么快, 因此不能使擁塞窗口單純的加倍.
此處引入一個叫做慢啟動的閾值
當(dāng)擁塞窗口超過這個閾值的時候, 不再按照指數(shù)方式增長, 而是按照線性方式增長

0015
當(dāng)TCP開始啟動的時候, 慢啟動閾值等于窗口最大值;
在每次超時重發(fā)的時候, 慢啟動閾值會變成原來的一半, 同時擁塞窗口置回1;
少量的丟包, 我們僅僅是觸發(fā)超時重傳; 大量的丟包, 我們就認(rèn)為網(wǎng)絡(luò)擁塞;
當(dāng)TCP通信開始后, 網(wǎng)絡(luò)吞吐量會逐漸上升; 隨著網(wǎng)絡(luò)發(fā)生擁堵, 吞吐量會立刻下降;
擁塞控制, 歸根結(jié)底是TCP協(xié)議想盡可能快的把數(shù)據(jù)傳輸給對方, 但是又要避免給網(wǎng)絡(luò)造成太大壓力的折中方案.

6.捎帶應(yīng)答、延時應(yīng)答

相關(guān)博客: 點擊跳轉(zhuǎn)

http://www.risenshineclean.com/news/4772.html

相關(guān)文章:

  • html做動態(tài)網(wǎng)站需要哪些軟件b站引流推廣
  • net手機(jī)網(wǎng)站開發(fā)昆明seo關(guān)鍵詞排名
  • 長沙做網(wǎng)站開發(fā)大概價格如何做好口碑營銷
  • 大氣網(wǎng)站模板提高seo排名
  • 鄭州做品牌網(wǎng)站的公司制作一個網(wǎng)站步驟
  • 做網(wǎng)站app怎么賺錢嗎我是seo關(guān)鍵詞
  • 化學(xué)產(chǎn)品在哪個網(wǎng)站做推廣最好seo兼職工資一般多少
  • cad圖做網(wǎng)站鏈接seo培訓(xùn)價格
  • 網(wǎng)站開發(fā)技術(shù)服務(wù)費(fèi)合同范本怎么注冊域名網(wǎng)址
  • 男女生做羞羞網(wǎng)站網(wǎng)站管理與維護(hù)
  • j2ee做的網(wǎng)站長沙網(wǎng)站制作公司哪家好
  • 律師做推廣宣傳的網(wǎng)站關(guān)鍵詞優(yōu)化的策略
  • wordpress復(fù)制整站谷歌seo軟件
  • 長沙做一個網(wǎng)站多少錢凡科建站怎么用
  • 阿拉伯網(wǎng)站建設(shè)輿情網(wǎng)站
  • 阿里巴巴網(wǎng)站建設(shè)缺點營銷策劃精準(zhǔn)營銷
  • 做網(wǎng)站 用 顯示器百度客服電話人工服務(wù)
  • 淮安哪里有做網(wǎng)站的人怎么優(yōu)化網(wǎng)站關(guān)鍵詞的方法
  • 維護(hù)網(wǎng)站都干什么seo快排
  • 網(wǎng)站后臺英文好用的推廣平臺
  • 專業(yè)足球網(wǎng)站開發(fā)營銷型網(wǎng)站策劃書
  • 服裝設(shè)計師參考的網(wǎng)站seo關(guān)鍵詞優(yōu)化的技巧
  • wordpress谷歌地圖插件怎么用seo推廣專員工作好做嗎
  • 浙江鴻翔水利建設(shè)有限公司網(wǎng)站seo手機(jī)優(yōu)化軟件哪個好用
  • 微商城建設(shè)購物網(wǎng)站百度首頁純凈版
  • 網(wǎng)站 虛擬主機(jī) 操作系統(tǒng)seo品牌
  • 做php網(wǎng)站需要什么軟件百度人工客服
  • 在那個網(wǎng)站做付匯的延期說明我贏網(wǎng)seo優(yōu)化網(wǎng)站
  • 可以做推送的網(wǎng)站seo是什么的縮寫
  • 中山網(wǎng)站建設(shè)服務(wù)網(wǎng)站推廣怎么做有效果