TCP/IP協議簡述匯總


 

1、TCP/IP最主要的特點:

(1)TCP是面向連接的運輸層協議。

(2)每一條TCP連接智能有兩個端點。

(3)TCP提供可靠交付的服務。

通過TCP連接傳送的數據,無差錯,不丟失,不重復,而且按需到達;

(4)TCP提供全雙工通信。

(5)面向字節流。

“流”指的是流入到進程或從進程流出的字節序列。

 

2、TCP的連接

TCP連接的端點叫做套接字或者插口。端口號拼接到IP地址即構成套接字。

套接字soket=(IP地址:端口號)

每一個TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定:即:

TCP連接::={soket1,soket2}={(IP1:port1),(IP2:port2)}

3、可靠傳輸的工作原理

TCP發送的報文段是交給IP層傳送的,但IP層指提供盡最大努力服務,也即是說,TCP下面的網絡所提供的是不可靠的傳輸。因此,TCP必須采用適當的措施才能使得兩個運輸層之間的通信變得可靠。

理想的傳輸條件有以下兩個特點:

(1)傳輸信道不產生差錯。

(2)不管發送方以多塊的熟讀發送數據,接受方總是來得及處理收到的信息。

停止等待協議:

無差錯情況,發送方A發送分組M1,發完就暫停發送,等待B的確認。B收到了M1就向A發送確認。A收到對M1的確認后,就再發送下一個分組M2,如此往復。

出現差錯:B接受M1時檢測出了差錯,就丟棄M1,其他什么也不做。也有可能是M1在傳輸過程中丟失了,這時B當然不知道;

   以上情況有這樣一個設計:A只要超過了一段時間仍然沒有收到確認,就認為剛才發送的分組丟失,因而重傳前面發送過的分組。這就超時重傳;

  實現超時重傳,在每發完一個分組設置一個超時計時器。

確認丟失和確認遲到:如果某些情況下,B又收到了重傳的分組M1。這時應采取兩個行動:(1)丟棄這個重復的分組M1,不向上交付。(2)向A發送確認。不能認為已經      發送過確認就不在發送,因為A之所以重傳M1就表示A沒有收到M1的確認。

4、TCP報文段的首部格式

 

 

CP報文段首部的前20個字節是固定的,后面有4N字節是根據需要而增加的選項,因此首部的最小長度是20字節。

首部固定部分的個字段的意義如下:

1.源端口和目的端口字段

各占2字節。端口是運輸層與應用層的服務接口。運輸層的復用和分用功能都要通過端口才能實現。


2.序號字段

占4字節。TCP是面向字節流的,一個TCP連接中傳送的字節流中的每一個字節都按順序編號。整個要傳送的字節流的起始序號必須在連接建立時設置。

首部中的序號值是指本報文段所發送的數據的第一個字節的序號。


3.確認號:
4個字節,期待收到對方下一個報文段的第一個數據字節的序號。若確認號=N,表明到序號N-1為止的所有數據都已經正確收到!


4.數據偏移(即首部長度)

占4位,它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。“數據偏移”的單位是 32 位字(以 4 字節為計算單位)。 

因首部中還有長度不確定的選項字段,故數據偏移字段是必要的

而數據偏移的單位是4字節,則此字段是用來表TCP首部的長度的,最大長度是4*15,60字節,即選項長度不超過40字節.


5.保留字段:

占 6 位,保留為今后使用,但目前應置為 0。


6.緊急URG :

當 URG ==1 時,表明緊急指針字段有效。它告訴系統此報文段中有緊急數據,應盡快傳送(相當於高優先級的數據)。 而不是按原來的排隊順序傳送。

當URG=1,發送進程就告訴TCP有緊急數據需傳送,TCP就會將緊急數據插入到本報文段的最前面,這需要和首部中的緊急指針字段配合使用.

 

7.確認ACK(ACKnowlegment):

當ACK=1,確認號字段才有效,當ACK=0,確認號字段無效。TCP規定,在連接建立后所有傳送的報文段都必須把ACK置1.


8.推送PSH(PuSH):

當兩個進程通信時,有時一端的進程希望鍵入一個命令后,能立即收到對方的響應,這時TCP就可以將PSH=1,

並立即創建一個報文段發送出去,接收方TCP收到PSH=1,就會盡快交付給接收端進程,而不會再等整個緩存填滿后再交付。


9.復位 RST (ReSeT) 
當 RST=1 時,表明 TCP 連接中出現嚴重差錯(如由於主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接

RST置1可以用來拒絕一個非法的報文段或者拒絕打開一個連接。


10.同步SYN:
在建立連接時用來同步序號,當SYN=1&&ACK=0,表示這是一個請求連接的報文段,

若對方同意建立連接,則在響應報文段中使得SYN=1&&ACK=1。

故SYN=1:表示這是一個連接請求和連接接收報文。


11.終止FIN:

用來釋放一個連接,當FIN=1,表示此報文段發送方的數據發送完畢,並要求釋放連接。


12.窗口:

2個字節,從0開始,窗口指的是發送本報文段的這一方的接收窗口(而不是自己的發送窗口),窗口值作為接受方讓發送方設置其發送窗口的依據。
窗口值告訴對方:從本報文段首部的確認號開始算起,
接收方目前允許(窗口值是經常動態變化的)對發送方發送的數據量。
窗口字段明確指出了現在允許對方發送的數據量。

13.檢驗和 

占 2 字節。檢驗和字段檢驗的范圍包括首部和數據這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 字節的偽首部。


14.緊急指針:

2個字節,當URG=1,緊急指針才有意義,指出本報文段中的緊急數據的字節數。

注意:當窗口值為0,也可以發送緊急數據。


15.選項:

最長為40字節,當沒有選項時,TCP首部長度為20字節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM