理論 TCP的原理簡述

2022-08-29 03:42:14 字數 2189 閱讀 8342

儘管

t c p

和u d p

都使用相同的網路層(

i p),

t c p

卻向應用層提供與

u d p

完全不同的服務。

t c p

提供一種面向連線的、可靠的位元組流服務。

面向連線意味著兩個使用

t c p

的應用(通常是乙個客戶和乙個伺服器)在彼此交換資料之前必須先建立乙個

t c p

連線。這一過程與打**很相似,先撥號振鈴,等待對方摘機說「喂」,然後才說明是誰。在第

1 8章我們將看到乙個

t c p

連線是如何建立的,以及當一方通訊結束後如何斷開連線。

在乙個t c p

連線中,僅有兩方進行彼此通訊。在第

1 2章介紹的廣播和多播不能用於

t c p

。t c p

通過下列方式來提供可靠性:

• 應用資料被分割成

t c p

認為最適合傳送的資料塊。這和

u d p

完全不同,應用程式產生的資料報長度將保持不變。由

t c p

傳遞給i p

的資訊單位稱為報文段或段(

s e g m e n t

)(參見圖

1 - 7

)。在1 8 . 4

節我們將看到

t c p

如何確定報文段的長度。• 當

t c p

發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能及時收到乙個確認,將重發這個報文段。在第

2 1章我們將了解

t c p

協議中自適應的超時及重傳策略。• 當

t c p

收到發自

t c p

連線另一端的資料,它將傳送乙個確認。這個確認不是立即傳送,通常將推遲幾分之一秒,這將在

1 9 . 3

節討論。

• t c p

將保持它首部和資料的檢驗和。這是乙個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,

t c p

將丟棄這個報文段和不確認收到此報文段(希望發端超時並重發)。

• 既然

t c p

報文段作為

i p資料報來傳輸,而

i p資料報的到達可能會失序,因此

t c p

報文段的到達也可能會失序。如果必要,

t c p

將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層。

• 既然

i p資料報會發生重複,

t c p

的接收端必須丟棄重複的資料。

• t c p

還能提供流量控制。

t c p

連線的每一方都有固定大小的緩衝空間。

t c p

的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。兩個應用程式通過

t c p

連線交換

8 bit

位元組構成的位元組流。

t c p

不在位元組流中插入記錄識別符號。我們將這稱為位元組流服務(

byte stream service

)。如果一方的應用程式先傳

1 0位元組,又傳

2 0位元組,再傳

5 0位元組,連線的另一方將無法了解發方每次傳送了多少位元組。收方可以分

4次接收這

8 0個位元組,每次接收

2 0位元組。一端將位元組流放到

t c p

連線上,同樣的位元組流將出現在

t c p

連線的另一端。另外,

t c p

對位元組流的內容不作任何解釋。

t c p

不知道傳輸的資料字節流是二進位制資料,還是

a s c i i

字元、e b c d i c

字元或者其他型別資料。對位元組流的解釋由

t c p

連線雙方的應用層解釋。這種對位元組流的處理方式與

u n i x

作業系統對檔案的處理方式很相似。

u n i x

的核心對乙個應用讀或寫的內容不作任何解釋,而是交給應用程式處理。對

u n i x

的核心來說,它無法區分乙個二進位制檔案與乙個文字檔案。

簡述TCP過程

tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。tcp資料報格式 source port 源埠號 destination port 目的埠號 sequence number 序列號 acknowledge number 確認號 標誌位 urg 緊急標誌位,不常用 ack 為1代表是乙個確認報...

簡述FPGA時序約束理論

fpga時序約束簡介。時序約束的場景 在簡單電路中,當頻率較低時,數碼訊號的邊沿時間可以忽略時,無需考慮時序約束。但在複雜電路中,為了減少系統中各部分延時,使系統協同工作,提高執行頻率,需要進行時序約束。通常當頻率高於50mhz時,需要考慮時序約束。限制fpga最大頻率的因素 越多的閘電路,所構成的...

easyMock原理簡述

public inte ce calculator 以上是乙個計算器介面,用於計算加法,假設現在我們的合作夥伴還沒有開發好這個加法的實現類,但是我們約定了這個加法器如果開發好的時候,會有一些表現,這個時候,我們要測試,該怎麼做呢。乙個簡單的辦法是,自己實現乙個簡單的實現類,返回寫死的結果。如下 pu...