亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

tcp需要熟練掌握的概念

2023-10-16 11:19:53
6
0

總體概念

  • 三次握手
  • 四次揮手
  • 滑動窗口
  • 超時重傳
  • 流量控制
  • 擁塞控制
  • 報文段最大
  • 粘包現象(UDP沒有,因為面向消息傳送,不需要等待到一定程度才能發包,Nagle算法)
  • RTT 往返延時

三次握手

  • client: syn,client初始化序列號
  • serverack(序列號+1),syn(server初始化序列號)
  • client: ack(序列號+1)

傳輸

  • client: ack(序列號+1),傳輸數據(PSH),client初始化序列號+1
  • server: ack(client初始化序列號+1+字節數),傳輸數據(PSH),server初始化序列號+1

四次揮手

粘包

  • Nagle算法:會等待有ack返回才會進行發送,也就是所有數據要發送之前,都會緩存。知道接收一個ack的包。
  • 解決方式: 發送方關閉nagle算法,或者約定好數據協議,比如設置分隔符,接著加上多少個字節表示這個分組的大小。

socket

  • 理解為一個文件標識符fb建立和內核數據結構的聯系,只需要把這個fb的標識符,就可以索引到底層的socket的數據結構,socket的數據結構有普通的,同一個進程之間的通信,也有網絡連接的通信。有個指針,保存了緩存的數據,包括了要發送的數據和接收的數據。
  • socket(),bind(),listen(),accept(),recv(),close()
  • socket(),connect(),send(),close()

重傳機制

  • 超時重傳
  • 快重傳
  • sack重傳(選擇性重傳),需要雙方都開啟表示,tcp有個字段是sack,可以指明接收方已經接收哪部分的數據
  • Duplicate SACK

滑動窗口

  • 累計應答
  • 滑動窗口左移的字節和返回的ack有關
  • 流量控制里面使用的窗口,認為本次的緩存,還剩下多個窗口可以使用,一個窗口一個字節
  • 發送方,三個指針,SND.WND、SND.UN、SND.NXT
  • SND.WND:表示發送窗口的大小(大小是由接收方指定的)
  • SND.UNA:是一個絕對指針,它指向的是已發送但未收到確認的第一個字節的序列號
  • SND.NXT:也是一個絕對指針,它指向未發送但可發送范圍的第一個字節的序列號
  • RCV.WND:表示接收窗口的大小,它會通告給發送方
  • RCV.NXT:是一個指針,它指向期望從發送方發送來的下一個數據字節的序列號

總結

  • mss最大的1460-12(時間戳)= 1448
  • 發送是tcp報文發送。也是發送的單位
  • 滑動窗口是構建報文之前的窗口,基本由接收方確認。這里的窗口的單位是字節
  • 首先選擇滑動窗口的數據,封裝成tcp報文段,放到緩存中,使用nagle算法,確認之后發送。tcp報文段有個16字節的窗口(65535個字節)
  • ack使用的是seq+字節數作為返回確認。sack返回已經接收到斷層的字節數,返回重復接收的字節端
  • tcp報文段可不一定是mss出來
0條評論
作者已關閉評論
肥料
1文章數
0粉絲數
肥料
1 文章 | 0 粉絲
肥料
1文章數
0粉絲數
肥料
1 文章 | 0 粉絲
原創

tcp需要熟練掌握的概念

2023-10-16 11:19:53
6
0

總體概念

  • 三次握手
  • 四次揮手
  • 滑動窗口
  • 超時重傳
  • 流量控制
  • 擁塞控制
  • 報文段最大
  • 粘包現象(UDP沒有,因為面向消息傳送,不需要等待到一定程度才能發包,Nagle算法)
  • RTT 往返延時

三次握手

  • client: syn,client初始化序列號
  • serverack(序列號+1),syn(server初始化序列號)
  • client: ack(序列號+1)

傳輸

  • client: ack(序列號+1),傳輸數據(PSH),client初始化序列號+1
  • server: ack(client初始化序列號+1+字節數),傳輸數據(PSH),server初始化序列號+1

四次揮手

粘包

  • Nagle算法:會等待有ack返回才會進行發送,也就是所有數據要發送之前,都會緩存。知道接收一個ack的包。
  • 解決方式: 發送方關閉nagle算法,或者約定好數據協議,比如設置分隔符,接著加上多少個字節表示這個分組的大小。

socket

  • 理解為一個文件標識符fb建立和內核數據結構的聯系,只需要把這個fb的標識符,就可以索引到底層的socket的數據結構,socket的數據結構有普通的,同一個進程之間的通信,也有網絡連接的通信。有個指針,保存了緩存的數據,包括了要發送的數據和接收的數據。
  • socket(),bind(),listen(),accept(),recv(),close()
  • socket(),connect(),send(),close()

重傳機制

  • 超時重傳
  • 快重傳
  • sack重傳(選擇性重傳),需要雙方都開啟表示,tcp有個字段是sack,可以指明接收方已經接收哪部分的數據
  • Duplicate SACK

滑動窗口

  • 累計應答
  • 滑動窗口左移的字節和返回的ack有關
  • 流量控制里面使用的窗口,認為本次的緩存,還剩下多個窗口可以使用,一個窗口一個字節
  • 發送方,三個指針,SND.WND、SND.UN、SND.NXT
  • SND.WND:表示發送窗口的大小(大小是由接收方指定的)
  • SND.UNA:是一個絕對指針,它指向的是已發送但未收到確認的第一個字節的序列號
  • SND.NXT:也是一個絕對指針,它指向未發送但可發送范圍的第一個字節的序列號
  • RCV.WND:表示接收窗口的大小,它會通告給發送方
  • RCV.NXT:是一個指針,它指向期望從發送方發送來的下一個數據字節的序列號

總結

  • mss最大的1460-12(時間戳)= 1448
  • 發送是tcp報文發送。也是發送的單位
  • 滑動窗口是構建報文之前的窗口,基本由接收方確認。這里的窗口的單位是字節
  • 首先選擇滑動窗口的數據,封裝成tcp報文段,放到緩存中,使用nagle算法,確認之后發送。tcp報文段有個16字節的窗口(65535個字節)
  • ack使用的是seq+字節數作為返回確認。sack返回已經接收到斷層的字節數,返回重復接收的字節端
  • tcp報文段可不一定是mss出來
文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0