1. 程式人生 > 其它 >TCP/IP詳解 讀書筆記:TCP:傳輸控制協議

TCP/IP詳解 讀書筆記:TCP:傳輸控制協議

TCP的服務

TCP為應用層提供一種面向連線的、可靠的位元組流服務。
一個TCP連線中,僅有兩方進行彼此通訊,所以廣播和多播不能用於TCP。
TCP通過以下方式提供可靠性:

  1. 應用資料被切割為TCP認為最適合傳送的資料塊。由TCP傳遞給IP的資訊單位稱為報文段或段。
  2. TCP發出一個段後啟動一個定時器,用以等待目的端確認收到該報文段,如果沒有及時收到一個確認響應,將重發該報文段。
  3. 當TCP收到發自TCP連線另一端的資料將會發送一個確認,這個確認不是立即傳送,而是會進行一點延遲。
  4. TCP將保持首部和資料的檢驗和。目的是檢驗資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將會丟棄報文段和不確認收到此報文段,傳送端將會重發該報文段。
  5. 如有必要,TCP將會對收到的資料進行重新排序,並將收到的資料以正確的順序交給應用層。
  6. TCP接收端會自動丟棄重複的資料。
  7. TCP提供流量控制。

TCP的首部

TCP資料被封裝在一個IP資料報中:

TCP包首部圖:

TCP首部中有6個標誌位元,簡單介紹其用法:

  • URG:緊急指標有效;
  • ACK:確認序號有效;
  • PSH:接收方應該儘快將此報文段交給應用層;
  • RST:重建連線;
  • SYN:同步序號用來發起一個連線;
  • FIN:傳送端完成傳送任務;

TCP首部通常大小為20個位元組。

當建立一個新連線時,SYN標誌變為1.序號欄位包含由該主機選擇的該連線的初始序號ISN。該主機將會發送的第一個位元組需要就為此ISN加一,因為SYN標誌消耗了一個序號。
每一個傳輸的位元組都被計數,確認序號包含傳送的一端所確認的一端所期望收到的下一個序號。確認序號是上次已經成功收到的資料位元組序號加一。只有ACK標誌為1時確認序號欄位才有效。
TCP可以看做一個沒有選擇確認或否認的滑窗協議,TCP首部中的確認序號表示傳送方已經成功收到位元組,不包含確認序號所指位元組