TCP相關的幾個問題

2021-10-20 08:19:15 字數 1250 閱讀 3102

復用tcp報文段裡的序列號部分?

傳送資料長度如何確定,傳送方怎麼知道自己該發哪些位元組了?

正常傳送資料時應該用哪個標識

tcp報文段裡的頭部長度的作用何在?

tcp頭里的關鍵項和作用

疑惑1:復用tcp報文段裡的序列號部分?

tcp通過位元組序列號+確認機制來保證資料不丟失,接收方每接收乙個報文段,就要發回乙個ack確認段,tcp報文頭里有序列號 和 確認序列號,

那麼為什麼不復用序列號這部分呢,通過ack標識位來判斷是傳送時的序列號還是ack確認序列號?這樣就能乙個報文段減少4位元組

理解:確認和傳送合併,tcp是雙工通訊,一方在接收資料的同時也可能在傳送資料,這樣設計就能將對接收報文段的確認與自己要發的資料合併到乙個報文段裡(節約乙個報文頭)

疑惑2:傳送資料長度如何確定,傳送方怎麼知道自己該發哪些位元組了?

tcp報文段裡,固定頭是定長,選項裡有指定長度,兩個裡面都沒有關於資料部分長度的資訊,那麼傳送方如何確認自己該發哪些資訊了呢?

理解:資料長度是由接收方統計ack確認序列號是接收方期待下次接收的序列號,並不是它此次接收的序列號,所以傳送方可以根據ack確認序列號知道自己該發哪些位元組

boxman   tcp資料長度 = ip包總長度(ip首部裡)- ip首部長度(ip首部裡)- tcp首部長度

疑惑3:tcp的6個特殊標識裡,除了ack其他好像都是特殊情況,那麼正常傳送資料時應該用哪個標識呢?

理解:任何識別符號的報文都可能也在傳送資料,比如說,沒有標識就是正常傳送資料,只有ack標識 表示是傳送資料+確認接收的資料,其他標識也可能附帶著傳送資料

疑惑4:tcp報文段裡的頭部長度的作用何在?

tcp頭分為固定長度20byte + 選項長度,每個選項有自己的選項長度,這就可以計算出頭部長度了,儲存這個長度用來做什麼?

猜測:注:哪位大佬幫忙解個惑,/拜謝

附上幾個tcp頭里的關鍵項和作用

視窗大小

校驗和

頭部長度

mss選項頭:

還有幾點自己以前老是記錯的點,記下來提醒自己注意

學習自linux高效能伺服器程式設計

TCP連線的幾個問題的處理

問題一 accept4 too many open files retrying in 640ms或者 dial tcp 127.0.0.1 8080 socket too many open files都是socket的數量,即檔案描述符的數量不夠用了,解決方法,增加檔案描述符的數量 ulimit...

linux 中斷相關的幾個問題

一 linux實現的幾個門 intel 提供了三種型別的中斷描述符 任務門,中斷門,陷阱門。linux稍有不同,根據intel的定義,實現了一下幾類門。1 中斷門 使用者態的程序不能訪問的乙個intel中斷門,dpl 0。2 系統門 使用者態的程序可以訪問的乙個intel陷阱門,dpl 3,通過系統...

TCP建立HTTP聯接的幾個問題

1.現代瀏覽器在與伺服器建立了乙個 tcp 連線後是否會在乙個 http 請求完成後斷開?什麼情況下會斷開?在 http 1.0 中,乙個伺服器在傳送完乙個 http 響應後,會斷開 tcp 鏈結。但是這樣每次請求都會重新建立和斷開 tcp 連線,代價過大。所以雖然標準中沒有設定,某些伺服器對 co...