使用者資料報協議(udp)
udp是簡單的傳輸層協議。應用程序網乙個udp套接字寫入乙個訊息,該訊息隨後被封裝到乙個udp資料報,該udp資料報進而又被封裝到乙個ip資料報,然後傳送到目的地。udp不保證udp資料報會到達其最終目的地,不保證各個資料報的先後順序跨網路後保持不變,也不保證每個資料報只到達一次。
我們使用udp進行網路程式設計所遇到的問題是它所缺乏的可靠性。如果乙個資料報到達了其最終的目的地,但是校驗和檢測發現有錯誤,或者該資料報在網路傳輸過程中被丟棄了,它就無法被投遞給udp套接字,也不會被源端自動重傳。如果想確保乙個資料報到達其目的地,可以用程式中添置一大堆特性:來自對端的確認、本端的超時與重傳等
每個udp資料報都有乙個長度。如果乙個資料報確定地到達其目的地,那麼該資料報的長度將隨資料一道傳遞給接收端的應用程序。我們已經提到過tcp是乙個位元組流協議,沒有任何記錄邊界,這一點不同於tcp。
我們也說udp提供無連線的服務,因為udp客戶與伺服器之間不必存在任何長期關係。舉例來說,乙個udp客戶可以建立乙個套接字並傳送乙個資料報給乙個給定的伺服器,然後立即用同乙個套接字傳送另乙個資料報給另乙個伺服器。同樣地,乙個udp伺服器可以用同乙個udp套接字從若干個不同的客戶接收資料報,每個客戶乙個資料報。
傳輸層控制協議tcp
由tcp向應用程序提供的服務不同於由udp提供服務。首先,tcp提供客戶與伺服器之間的連線。tcp客戶先與某個給定伺服器建立乙個連線,再跨該連線與那個伺服器交換資料,然後終止這個連線。
其次,tcp還提供了可靠性。當tcp向另一端傳送資料時,它要求對端返回乙個確認。如果沒有收到確認,tcp就自動重傳資料並等待更長時間。在數次重傳失敗後,tcp才放棄,如此在嘗試傳送資料上所花的總時間一般為4~10分鐘
tcp含有用於動態估算客戶端和伺服器之間的往返時間的演算法,以便它知道等待乙個確認需要多少時間。舉例子來說,rtt在乙個 區域網上大約是幾毫秒,跨域乙個廣域網可能是數秒鐘。另外,因為rtt受網路的影響,tcp還持續估算乙個給定連線的rtt。
tcp通過給其中每個位元組關聯乙個序列號對所傳送的資料進行排序。舉個例子來說,假設乙個應用寫2048位元組到乙個tcp套接字,導致tcp傳送2個位元組:第乙個分節所含資料的序列號為1~1024,第二個分節所含資料的序列號1025-2048。(分節是tcp傳遞給ip的資料單元。)如果這些分節非順序到達,接收端tcp將先根據它們的序列號重新排序,再把結果資料傳遞給接收應用。如果接收端tcp接收到來自對端的重複資料(譬如說對端認為乙個分節已丟失並因此重傳,而這個分節並沒有真正丟失,只是網路通訊過於擁擠),它可以(根據序列號)判定資料是重複的從而丟棄重複的資料
udp不提供可靠性,udp本身不提供確認,序列號,rtt估算,超時和重傳機制,如果某乙個udp資料報在網路中被複製,兩份副本就可能都遞送到接收端的主機。同樣地,如果乙個udp客戶傳送兩個資料報到同乙個目的地,它們可能被網路重新排序,顛倒順序後到達目的地。udp應用必須處理所有這些情況。
再次tcp提供流量控制。tcp總是告知對端在任何時刻它一次能夠對端接收多少位元組的資料,這稱為通告視窗。在任何時刻,該視窗指出接收緩衝區中當前可用的空間量,從而確保傳送端傳送的資料不會使接收緩衝區溢位。該視窗時刻動態變化:當接收到來自傳送端的資料時,視窗大小就減小,但是當接收端應用從緩衝區中讀取資料時,視窗大小就增大。通告視窗大小減小到0是有可能的:當tcp對應的某個套接字的接收緩衝區已滿,導致它必須等待應用從該緩衝區讀取資料時,方能從對端再接收資料。
udp不提供流量控制,讓較快的udp傳送端以乙個udp接收端難以跟上的速率傳送資料時非常容易的。
最後tcp通訊是全雙工的。這意味著乙個給定的連線上應用可以在任何時刻在進出兩個方向上既傳送資料又接收資料。因此,tcp必須為每個資料流方向跟蹤諸如序列號和通告視窗大小等狀態資訊。建立乙個全雙工連線後,需要的話可以把它轉換成乙個單工連線
udp可以是全雙工的
流控制傳輸協議(sctp)
sctp提供的服務與udp和tcp提供的類似。sctp在客戶和伺服器之間提供關聯,並像tcp那樣給應用提供可靠性、排序、流量控制以及全雙工的資料傳送。sctp中使用「關聯」這一詞取代「連線」是為了避免這樣的內涵:乙個連線只涉及兩個ip位址之間的通訊。乙個關聯指代兩個系統之間的乙個通訊,它可能因為sctp支援多宿而涉及不止兩個位址
與tcp不同的是,sctp是面向訊息的,它提供各個記錄的按序遞送服務。與udp一樣,由傳送端寫入的每條記錄的長度隨資料一道傳遞給接收端應用。
sctp能夠在所連線的端點之間提供多個流,每個流各自可靠地按序遞送訊息。乙個流上某個訊息的丟失不會阻塞同一關聯其他流上的訊息投遞。這種做法和tcp正好相反,就tcp而言,在單一位元組流中任何位置的位元組丟失都將阻塞該連線上其後所有資料的遞送,直到該丟失被修復為止。
sctp還是提供多宿特性,使得單個sctp端點能夠支援多個ip位址。該特性可以增強應對網路故障的健壯性。乙個端點可能有多個冗餘的網路連線,每個網路有可能有各自接入網際網路的基礎設施連線,當該端點與另乙個端點建立乙個關聯後,如果它的某個網路或某個跨域網際網路的通路發生故障,sctp就可以通過切換到使用已與該關聯相關的另乙個位址來規避所發生的故障
SCSI FC iSCSI三大協議概述
一 scsi scsi是小型計算機系統介面 small computer system inte ce 的簡稱,於1979首次提出,是為小型機研製的一種接 術,現在已完全普及到了小型機,高低端伺服器以及普通pc上。scsi可以劃分為scsi 1 scsi 2 scsi 3,最新的為scsi 3,也是...
網路協議(三) HTTP協議
http全稱是hypertext transfer protocal,即 超文字傳輸協議,http連線最顯著的特點是客戶端傳送的每次請求都需要伺服器回送響應,在請求結束後,會主動釋放連線。從建立連線到關閉連線的過程稱為 一次連線 http是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模...
三 ARP協議和ICMP協議
網路裝置有資料要傳送到另一台網路裝置時,必須要知道對方的網路層位址 ip ip位址由網路層來提供,但是僅有ip位址是不夠的,ip資料報文必須封裝成幀才能通過資料鏈路進行傳送。資料幀必須要包含目的mac位址,因此傳送端還必須獲取到目的mac位址。通通過目的ip位址而獲取目的mac位址的過程是arp a...