儘管
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...