2020 09 23 TCP頭部資訊有哪些?

時間 2021-12-26 02:45:40

1樓:乾貨滿滿張雜湊

typedef struct _TCP_HEADER

attribute((packed))TCP_HEADER, *PTCP_HEADER;

各佔2個位元組,埠是傳輸層和應用層的服務介面,用於尋找傳送端和接收端的程序,通過這兩個埠號和IP頭部的ip傳送和接收號,可以唯一的確定乙個連線。

一般來講,通過埠號和IP位址,可以唯一確定乙個TCP連線,在網路程式設計中,通常被稱為乙個socket介面。

佔4位元組,用來標識從TCP傳送端向TCP接收端傳送的資料字節流。

佔4位元組,包含傳送確認的一端所期望收到的下乙個序號,因此,確認序號應該是上次已經成功收到另一端資料位元組序號加1。

佔4位,最大為1111即15個數字,乙個代表4個位元組,用於指出TCP首部長度,若不存在選項,則這個值為20位元組,資料偏移的最大值為60位元組。

佔6位,值是確定的,暫時可忽略,值全為0

URG(緊急): 為1時表明緊急指標字段有效

ACK(確認):為1時表明確認號字段有效

PSH(推送):為1時接收方應盡快將這個報文段交給應用層

RST(復位):為1時表明TCP連線出現故障必須重建連線

SYN(同步):在連線建立時用來同步序號

FIN (終止): 為1時表明傳送端資料傳送完畢要求釋放連線

佔2個位元組,用於流量控制和擁塞控制,表示當前接收緩衝區的大小。在計算機網路中,通常是用接收方的接收能力的大小來控制傳送方的資料傳送量,這樣可以避免快主機致使較慢主機的緩衝

區溢位。TCP連線的一端根據緩衝區大小確定自己的接收視窗值,告訴對方,使對方可以確定傳送資料的位元組數。

佔2個位元組,範圍包括首部和資料兩部分。檢查當前的TCP包是否有問題,有沒有損壞丟失

如何正確關閉 tcp 連線?

叉燒飯 在muduo庫中TcpConnection handleRead Timestamp receiveTime 中 elseif n 0 在handleClose 中最後呼叫 closeCallback guardThis closeCallback 是TcpServer建構函式中設定 con...

TCP中已有SO KEEPALIVE選項,為什麼還要在應用層加入心跳包機制

秦風猶在 意義不一樣,KEEPALIVE只是說還活著,但是作為伺服器我也怕別人一直連著我啥都不幹,把我資源用盡,所以有心跳包。其實我認為客戶端 伺服器這種對外的服務只需要心跳就可以了,多久沒心跳強制斷開,降低伺服器安全隱患 伺服器 伺服器這種不對外的,有心跳同步一下相互時間之類的更好,沒有就用KEE...

TCP伺服器上KEEPALIVE RCVBUF TCP NODELAY選項應在哪個socket上設定?

wipan 好問題,strace了一把Apache httpd,都設定在listen socket上了。pid 17080 1510156861.965023 setsockopt 4,SOL SOCKET,SO REUSEADDR,1 4 0 pid 17080 1510156861.965038...