網路 TCP報頭中的選項字段

2021-08-20 03:24:03 字數 1791 閱讀 9331

選自《linux高效能伺服器程式設計》3.2.2

tcp頭部的最後乙個選項字段(options)是可變長的可選資訊。這部分最多包含40位元組,因為tcp頭部最長是60位元組(其中還包含前面討論的20位元組的固定部分)。典型的tcp頭部選項結構如圖所示。

常見的tcp選項有7種,如圖所示

1、kind=0,選項表結束(eop)選項

2、kind=1,空操作(nop)選項

沒有特殊含義,一般用於將tcp選項的總長度填充為4位元組的整數倍

3、kind=2,最大報文段長度(mss)選項

tcp連線初始化時,通訊雙方使用該選項來協商最大報文段長度。tcp模組通常將mss設定為(mtu-40)位元組(減掉的這40位元組包括20位元組的tcp頭部和20位元組的ip頭部)。這樣攜帶tcp報文段的ip資料報的長度就不會超過mtu(假設tcp頭部和ip頭部都不包含選項字段,並且這也是一般情況),從而避免本機發生ip分片。對乙太網而言,mss值是1460(1500-40)位元組。

4、kind=3,視窗擴大因子選項

tcp連線初始化時,通訊雙方使用該選項來協商接收視窗的擴大因子。在tcp的頭部中,接收視窗大小是用16位表示的,故最大為65535位元組,但實際上tcp模組允許的接收視窗大小遠不止這個數(為了提高tcp通訊的吞吐量)。視窗擴大因子解決了這個問題。

假設tcp頭部中的接收通告視窗大小是n,視窗擴大因子(移位數)是m,那麼tcp報文段的實際接收通告視窗大小是n*2m,或者說n左移m位。注意,m的取值範圍是0~14。我們可以通過修改 /proc/sys/net/ipv4/tcp_window_scaling 核心變數來啟用或關閉視窗擴大因子選項。

和mss選項一樣,視窗擴大因子選項只能出現在同步報文段中,否則將被忽略。但同步報文段本身不執行視窗擴大操作,即同步報文段頭部的接收視窗大小就是該tcp報文段的實際接收視窗大小。當連線建立好之後,每個資料傳輸方向的視窗擴大因子就固定不變了。

5、kind=4,選擇性確認(selective acknowledgment,sack)選項

tcp通訊時,如果某個tcp報文段丟失,則tcp會重傳最後被確認的tcp報文段後續的所有報文段,這樣原先已經正確傳輸的tcp報文段也可能重**送,從而降低了tcp效能。sack技術正是為改善這種情況而產生的,它使tcp只重新傳送丟失的tcp報文段,而不用傳送所有未被確認的tcp報文段。選擇性確認選項用在連線初始化時,表示是否支援sack技術。我們可以通過修改 /proc/sys/net/ipv4/tcp_sack 核心變數來啟用或關閉選擇性確認選項。

6、kind=5,sack實際工作的選項

該選項的引數告訴傳送方本端已經收到並快取的不連續的資料塊,從而讓傳送端可以據此檢查並重發丟失的資料塊。每個塊邊沿(edge of block)引數包含乙個4位元組的序號。其中塊左邊沿表示不連續塊的第乙個資料的序號,而塊右邊沿則表示不連續塊的最後乙個資料的序號的下乙個序號。這樣一對引數(塊左邊沿和塊右邊沿)之間的資料是沒有收到的。因為乙個塊資訊占用8位元組,所以tcp頭部選項中實際上最多可以包含4個這樣的不連續資料塊(考慮選項型別和長度占用的2位元組)。

7、kind=8,時間戳選項。

該選項提供了較為準確的計算通訊雙方之間的迴路時間(round trip time,rtt)的方法,從而為tcp流量控制提供重要資訊。我們可以通過修改 /proc/sys/net/ipv4/tcp_timestamps 核心變數來啟用或關閉時間戳選項。

tcp偽報頭 TCP和UDP報頭的比較

該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓 一 tcp報頭 tcp報文段的報頭有10個必需的字段和1個可選字段。報頭至少為20位元組。報頭後面的資料是可選項。1 源埠號 16位 標識傳送報文的計算機埠或程序。乙個tcp報文段必須包括源埠號,使目的主機知道應該向何處傳送確認報文。2 目的埠號 16位...

tcp偽報頭 TCP和UDP報頭的比較

1級2018 06 08 回答 一 tcp報頭 tcp報文段的報頭有10個必需的字段和1個可選字段。報頭至少為20位元組。報頭後面的資料是可選項。1 源埠號 16位 標識傳送報文的計算機埠或程序。乙個tcp報文段必須包括源埠號,使目的主機知道應該向何處傳送確認報文。2 目的埠號 16位 標識接收報文...

報頭中的偏移量作用 網路中BN層的作用

bn層的作用主要有三個 加快網路的訓練和收斂的速度 控制梯度 防止梯度消失 防止過擬合 以sigmoid函式為例,sigmoid函式使得輸出在 0,1 之間,實際上當x道了一定的大小,經過sigmoid函式後輸出範圍就會變得很小 梯度消失 在深度神經網路中,如果網路的啟用輸出很大,其對應的梯度就會很...