tcp建鏈和斷鏈

2021-08-25 19:38:05 字數 1072 閱讀 4405

seq標識包序號

ack標識上乙個接收到包的seq已經接收,請求傳送下乙個包,所以ack=prev_seq+pkg_len+1,當ack_git被置位後,才會有ack欄位

syn_bit三次握手時的發起字段

rst_bit重置,一般用於異常斷鏈情況

方向 | seq | ack | syn_bit | ack_bit

方向 | seq | ack | fin_bit | ack_bit

a->b | n | 1 | 1 | 1

b->a | 1 | n+1 | 0 | 1

… | 等待b的業務層處理完關閉邏輯

b->a | 1 | n+1 | 1 | 1

a->b | n+1 | 1+k+1 | 0 | 1

上面的k表示第三步的b->a的訊息報長度,一般會是0

方向 | seq | ack | fin_bit | ack_bit | rst_bit

a->b | n | 1 | 1 | 1 | 0

b->a | 1 | n+1 | 0 | 1 | 0

… | 等待b的業務層處理完關閉邏輯

a->b | n+1 | 1+k+1 | 0 | 1 | 1

a->b第一步驟a向b傳送了關閉連線請求,

之後等待b的ack和fin訊息,如果b沒有傳送fin,標識b還有業務邏輯或者快取沒有清理,這時a直接傳送rst訊息,標識強制斷開連線, b接收到rst後,不會等待快取傳送,也不會傳送fin和ack,直接關閉連線

鏈棧和鏈隊

基本的棧 class stack void push char str char pop bool empty bool full void display 逆波蘭表示式 優點 不會發生記憶體溢位的問題 通過鍊錶操作頭結點就可以了 class linkstack void push int idat...

演算法設計 鏈棧和鏈佇列 鏈棧和鏈佇列的實現

1.鏈佇列。利用帶有頭結點的單鏈表來實現鏈佇列,插入和刪除的複雜度都為o 1 include include typedef struct qnode qnode typedef struct linkqueue linkqueue void initialize linkqueue linkque...

3 鏈棧和鏈佇列

鏈棧 1 include2 using namespace std 3struct node 7enum error 8class stack 22 初始化 棧頂指標置為空,計數變數設定為0 23 stack stack 2728 29 判斷棧是否為空 count 0 top null 30 31b...