當前位置:外匯行情大全網 - 助學貸款 - 傳輸層TCP,自2020-08-05

傳輸層TCP,自2020-08-05

(2020.08.07)

TCP之所以稱為面向連接,是因為在壹個進程可以向另壹個進程發送數據之前,兩個進程需要先握手,即開始向對方發送預備消息段,以保證建立數據連接的參數。

TCP是壹個邏輯連接,它的同態只存儲在兩個通信端系統的TCP程序中。然而,終端系統之間的網絡元件不會保持TCP的連接狀態。中間路由器對TCP完全視而不見。他們只看到數據報,看不到連接。

通信特征

全雙工服務,不同主機的進程A和進程B之間有連接,數據可以同時從A流向B,從B流向A。

點對點,單個發送者和單個接收者之間的連接。

服務器進程和客戶端進程

啟動連接的進程稱為客戶端進程,另壹個稱為服務器進程。

(2020.08.08)

數據壹旦送入套接字,就由客戶端TCP控制,將數據放入壹個數據緩沖區(C/S兩端),這個緩沖區也是三次握手數據的存儲地。TCP將從緩存中取出壹段數據,並將其傳遞給網絡層。

TCP報頭+客戶端數據=TCP數據段。

TCP從發送緩沖區取出並放入消息段的數據量受最大段大小(MSS)的限制,最大段大小是根據本地主機最初確定的最大鏈路層幀長度(即最大傳輸單元,MTU)設置的。以太網和PPP鏈路的MTU都是1500字節。考慮到TCP/IP頭壹般為40字節(TCP頭為20字節),TCP段中典型的數據長度為1460字節。請註意,這裏的MSS是指TCP數據段中應用層數據的最大長度。

TCP連接的組成

壹臺主機上連接進程的緩存、變量和套接字,以及另壹臺主機上的緩存、變量和套接字。

標題+數據字段。當TCP發送壹個大文件,比如壹張圖片時,TCP通常會把文件分成幾個長度為MSS的片段,除了最後壹個片段,其他都是MSS。對於Telnet這樣的應用,數據字段只有壹個字節長,也就是說,它的TCP壹般只有21字節長。

典型長度:20字節/160位(當選項字段為空時)

源端口號:16位

目的端口號:16位

序列號:32位

確認號:32位。

接收窗口字段:16位,用於流量控制,表示接收方願意接收的字節數。

報頭長度字段:4位,是32位字的TCP報頭的長度。

選項:可選和可變長度。

標誌字段):6位,ACK/RST/SYN/FIN/PSH/URG。

序列號基於傳輸的字節流,而不是報文段的序列值,報文段的序列號是報文段第壹個字節的字節流號。比如壹個要發送的文件是* * * 10000字節,每個TCP段發送1000字節,那麽第壹個段的序號是0,第二個序號是1000,以此類推。該序列號是字節數,用於對消息段進行編號。

在上面的例子中,假設初始序列號為0,在實際應用中,發送方和接收方隨機選擇初始序列號。

確認號稍微復雜壹點。主機A和B之間建立了TCP通信,主機A在報文段中填入的確認號是A期望從B收到的下壹個字節的序列號..

消息段的采樣RTT(SampleRTT)是發送消息段(移交給IP)和收到消息段確認之間的時間量。僅對已發送但尚未確認的段估計SRTT,從而生成接近每個RTT的新SRTT值;不算SRTT;對於已重傳的消息段;僅測量傳輸壹次的數據段的SRTT。

由於網絡環境的變化,如路由器的擁塞和終端負載的變化,SRTT並不總是典型的。TCP將維護SRTT的估計值,並根據以下公式計算ERTT。

推薦值。指數加權移動平均(EWMA)賦予最近樣本比舊樣本更高的權重,因為最近樣本更能反映網絡的擁塞狀態。

此外,RTT的標準差DevRTT用於估計SRTT偏離ERTT的程度:

推薦值。

超時間隔應該大於或等於ERTT,否則會造成不必要的重傳。然而,它不應該比ERTT大很多,從而導致大的數據傳輸延遲。當SRTT大幅波動時,區間較大,當SRTT小幅波動時,區間較小。

初始建議值,超時時加倍。收到消息後立即更新ERTT,並根據公式重新計算TimeoutInterval。

(2020年8月9日星期六)

計時器

定時器的管理需要相當大的開銷,因此[RFC 6298]建議只使用壹個重傳定時器,即使有多個已發送但未確認的數據段。

(2020年8月9日星期六)

TCP中與發送方相關的三個主要動作

發送方對這些主要動作的反饋指的是可靠數據傳輸的部分。

超時間隔的選擇

每當發生超時事件時,TCP都會重新傳輸序列號最小的未確認數據段。只是每次TCP重傳都會將下壹次的超時間隔設置為上壹次值的兩倍,而不是使用從EstimatedRTT和DevRTT計算的值。然而,每當定時器遇到另外兩個事件,即ACK和上層數據時,定時器的開始TimeoutInterval根據最新的ERTT和DRTT來計算。

TCP兩端的主機都有接收緩存。流量控制服務用於消除sndr溢出rcvr緩存的可能性。Fcs因此是壹個速度匹配服務,即sndr的發送速率與rcvr應用的讀取速率相匹配。

TCP允許sndr在接收窗口中維護壹個變量以提供流控制,也就是說,rw用於向sndr指示有多少緩存空間可用。TCP是全雙工通信,兩個發送方都保持壹個rw。分析壹個情況,主機A通過TCP發送壹個大文件給B,B為連接分配壹個接收緩沖區,用RcvBuffer表示。b的應用程序進程從緩存中讀取數據。有以下變量

不允許緩沖區溢出,所以有壹個接收窗口用rwnd表示,緩沖區的空閑空間量(即空閑空間量)表示為

主機A需要跟蹤另外兩個變量,LastByteSent和LastByteAcked,它們對A是可用的。

壹個特例,當B的接收緩沖區滿了,rwnd=0,假設B此時沒有數據發送給A。考慮到TCP並不向A發送壹個帶有rwnd的新段,實際上TCP只在有數據或者有人要發送的時候才向A發送壹個段。因此,A不知道B的接收緩沖區中有新的空間,A被阻止發送數據。解決方案:TCP規範要求當B的接收窗口為0時,A將繼續發送只有壹個字節數據的消息段,這些消息段將被接收方確認,最後清空緩沖區,確認的消息段將包含壹個不為0的rwnd值。

(2020.08.05)

三方握手在TCP建立過程中的作用

三次傳輸後,sndr/rcvr確認了自己和對方的收發能力。握手完成後,可以建立連接。

(2020.08.07)

前兩次握手的消息段不攜帶“有效載荷”,即不包含應用層數據,第三次握手可以攜帶應用層數據。

(2020年8月9日星期六)

完成這三個步驟後,C-S就可以通信了,每個報文段的SYN都會被設置為0。

端部連接

客戶打算結束連接並發送壹個特殊的消息段,其中設置了FIN=1。服務器收到回復消息段,其中FIN=1。服務器發送另壹個結束連接段,FIN=1。客戶端收到後發送ACK,釋放占用的資源。

IP層不會向兩個終端系統提供有關網絡擁塞的反饋信息。稍微。

發送方sndr設置變量擁塞窗口n,cwnd,它限制TCP發送方向網絡發送流量的速率,並結合上述接收窗口rwnd確定發送速率,即

TCP如何感知它和目的地之間的擁塞?

定義數據包丟失事件:超時發生,或從接收方收到三個冗余ack。

壹個丟失的報文段意味著擁塞,報文丟失時TCP sndr的傳輸速率要降低。也就是減少cwnd。

確認數據段表示網絡正在將sndr的數據段傳送到rcvr,因此當之前未確認數據段的確認到達時,發送方的速率可以提高。

貸款測試。

算法分為三部分,1)慢啟動,2)擁塞避免,3)快速恢復。其中1和2是TCP強制部分。當接收到ACK時,慢啟動可以比擁塞避免更快地增加cwnd的長度。

當TCP連接啟動時,cwnd的值通常被設置為較小的MSS值。這使得傳輸速率約為MSS/RTT。如果MSS =字節,RTT = 200毫秒,則初始傳輸速率為20kbps。註意,此時帶寬可能比初始速率快得多。在慢啟動狀態下,cwnd的值從壹個MSS開始,每次發送的報文段第壹次被確認時,都會增加壹個MSS。這個過程使得每次RTT的發送速率加倍。初始速度很慢,但是ss階段呈指數增長。

結束黨衛軍的局面

  • 上一篇:資本市場正在迎來哪些結構性機會?
  • 下一篇:30年等額本息貸款的最佳還款時間
  • copyright 2024外匯行情大全網