tcp傳輸控制協議,udp使用者資料報協議
1)tcp面向連線(三次握手機制),通訊前需要先建立連線;udp面向無連線,通訊前不需要建立連線,也不需要收發資料的確認,速度快,實時性更好
2)tcp保障可靠傳輸(按序、無差錯、不丟失、不重複);udp不保障可靠傳輸,使用最大努力交付;(tcp的可靠僅僅體現在傳輸層,我也可以讓udp可靠,就要向上封裝,在應用層實現可靠)
3)tcp面向位元組流的傳輸,就是把應用層傳下來的報文看成位元組流,把位元組流組織成大小不等的資料塊,udp面向資料報的傳輸,就是應用層傳下來的報文不合併也不拆分,只是新增udp首部。
對udp而言,不面向連線,不可靠,沒有三次握手,我給你傳送資料之前,不需要知道你在不在,不要你的同意,我只管把資料傳送出去至於你收到不收到,從來和我沒有半毛錢的關係。
dns是網域名稱解析服務,基於udp(也可以基於tcp)53埠,因為dns是一種查詢服務,追求的是速度,用udp考慮到降低伺服器的負載,即使沒那麼精準出錯的話,重試的損失也沒有很大
如果需要dns伺服器之間同步資料,為了精準需要tcp,為了保證資料的正確性(區域傳輸,主dns伺服器和輔dns伺服器)
怎麼理解位元組流和資料報文?
位元組流沒有邊界,tcp有緩衝區,傳送資料的時候,將應用層資料寫入tcp的緩衝區,由tcp協議來控制傳送裡面的資料
**tcp面向位元組流:**雖然應用程式和tcp的互動是一次乙個資料塊(大小不等),但是tcp把應用程式交下來的資料僅僅看成是一連串的無結構的位元組流,tcp並不知道所傳送的位元組流的含義。另外如果應用程序傳送到tcp快取的資料塊太長,tcp就可以把它劃分短一些再傳送,如果資料塊太短,也可以累積幾次一起傳送。
雖然tcp是位元組流,但是決對不會以雜亂的次序給上層程式提供資料,所以tcp的接收端會先保持大的序列號的資料不交給應用程式,知道缺失的曉得序列號的報文段被填滿
**udp面向報文:**udp對應用層交下來的報文,既不合併也不拆分,而是保留這些報文的邊界(不會發生粘包),也就是說應用層交給udp多長報文,udp照常傳送,一次傳送乙個報文。
tcp udp應用場景
tcp應用場景:效率要求相對低,但對準確性要求相對高的場景。因為傳輸中需要對資料確認、重發、排序等操作,相比之下效率沒有udp高。檔案傳輸(準確高要求高、但是速度可以相對慢)、接受郵件、遠端登入。
如何讓udp保證可靠的傳輸tcp的報頭結構:
源埠 16位 目標埠 16位
ack確認標誌:置1時,確認標誌有效,tcp規定,連線建立後所有傳送的報文段的ack都是1
資料偏移 4位 保留reserved 6位 控制** 6位
視窗大小 16位:是接收方讓傳送方設定傳送視窗的依據,流量控制用到
緊急指標 16位 校驗和 16位
選項 32位(可選)
這樣我們得出了tcp報頭的最小長度,為20位元組
tcp的視窗實際表示的是一種接收能力,用以限制傳送方的傳送速度
ip資料報的組成
udp報文結構,udp首部開銷小,8位元組
偽首部12位元組是為了計算檢驗和臨時新增的
TCP和UDP的區別
tcp transimission control protocol 傳輸控制協議 和udp user datagram protocol 是傳輸層的兩種實現版本!它們之間提供基本的服務又各有所長。因此,根據對特定服務質量的要求,應用層軟體單元可以選擇通過傳輸層的tcp版本或者udp版本來傳輸資料。...
TCP和UDP的區別
tcp和udp都是傳輸層的協議,他們的區別主要如下 1 tcp,全名 傳輸控制協議 是面向連線的,也就是說在傳送方和接收方在傳送資料之前,必須通過三次握手建立連線,相當於現實生活中的打 功能,必須先撥號,接通後才能說話,udp,全名 使用者資料報協議 是無連線的,其中一方向向另一方傳送資料時不需要建...
TCP和UDP的區別
tcp transmission control protocol,傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次 對話 才能建立起來,其中的過程非常複雜,我們這裡只做簡單 形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三...