1 引言
儘管t c p和u d p都使用相同的網路層(i p),t c p卻向應用層提供與u d p完全不同的服務。
t c p提供一種面向連線的、可靠的位元組流服務。
面向連線意味著兩個使用 t c p的應用(通常是乙個客戶和乙個伺服器)在彼此交換資料
之前必須先建立乙個 t c p連線。這一過程與打**很相似,先撥號振鈴,等待對方摘機說
「喂」,然後才說明是誰。在我們將看到乙個 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)
• 當t c p發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能
及時收到乙個確認,將重發這個報文段。
• 當t c p收到發自t c p連線另一端的資料,它將傳送乙個確認。這個確認不是立即傳送,
通常將推遲幾分之一秒。
• 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的核心來說,
它無法區分乙個二進位制檔案與乙個文本文t c p資料被封裝在一 個ip資料報中,如圖所示。
下圖顯示t c p首部的資料格式。如果不計任選字段,它通常是 2 0個位元組。
TCP 簡單介紹
由於專案需要,基於socket寫了乙個伺服器與客戶端的程式,越寫越體會到tcp協議的厲害之處,因此特地學習了一下,做下筆記 tcp俗稱傳輸控制協議,它是為應用層提供服務的,儘管tcp和udp都使用相同的網路層 ip tcp卻向應用層提供與udp完全不同的服務,tcp提供一種面向連線的,可靠的位元組流...
簡單的TCP伺服器
介紹 winsock api 是一套供 microsoft windows 作業系統使用的套接字程式庫,它最初基於 berkeley 套接字,但是其中加入了一些 microsoft 的特殊改動。在這篇文章中,我要試著給你介紹如何使用 winsock 來進行套接字程式設計,並假設你沒有在任何作業系統上...
TCP超時和重傳的簡單介紹
本人剛學不久水平有限,如有錯誤,萬望指出。1.tcp為什麼需要超時和重傳 這是因為tcp協議是一種可靠資料傳輸服務,而實現這一點的正是tcp的超時和重傳功能。也是因為網路層和鏈路層不實現可靠資料傳輸服務,只能依靠傳輸層或應用層來實現可靠資料傳輸服務。2.超時重傳和快速重傳 tcp在傳送資料時會設定乙...