TCP和UDP相關概念

2022-03-26 23:11:40 字數 1598 閱讀 7027

位於傳輸層的協議,都是基於ip協議的。

tcp是面向連線的、可靠的傳輸,udp是無連線的、不可靠的傳輸。要進行tcp傳輸時候,需要進行三次握手,建立連線,然後才能傳送資料,而且在傳送過程中,有資料的確認和重傳機制,因此tcp適用於傳輸大量資料,而且要求傳輸質量的長和;udp沒有上述繁瑣的步驟,它直接向指定的主機的埠傳送資料,不用建立連線,而且在傳送的過程中也不管對方是否收到資料,因此udp適用於一次傳輸少量資料,不要錢傳輸質量的場合。因此udp比tcp更快。

tcp三次握手:

a)         client傳送syn資料報,syn=1,seq=x請求server的響應;

b)         server傳送syn+ack資料報ack=x+1,syn=1,seq=y,確認client的請求,同時傳送自己的syn包;

c)         client收到syn+ack資料報,知道自己的請求已經被允許,則傳送乙個ack資料報對server傳送的syn資料報進行確認ack=y+1, seq=z;

syn攻擊:在tcp三次握手中,server傳送了syn+ack包之後,client並沒有傳送ack包之前的這段時間,這個握手被稱為半連線。此時server會進入syn_recv,當收到client的ack包之後,才會進入established狀態,握手才完成。syn攻擊就是利用這一點,使用大量不存在的ip位址傳送syn包給server,此時server的連線佇列會存在大量的半連線,等待客戶端傳送ack包,由於client的ip位址是偽造的,所以server會一直重發,要求客戶確認,這就會占用server的大量系統資源,使得server服務變慢甚至宕機,造成新的正常連線無法進行。這是一種典型的ddos攻擊。

tcp四次斷開,tcp連線斷開可以任一方發起的,總共需要四次握手,具體過程如下:

a)         主動方傳送fin+ack+syn資料報(fin=1,seq=x,ack=y),要求結束連線;

b)         被動方收到fin資料報,對其進行確認(ack= x +1,seq= y+1),說明收到了主動方的fin資料報。此時主動方就不能在給被動方發資料了,關閉了了一半的鏈結;

c)         (可省略)被動方還有資料要傳送給主動方,則會繼續傳送(ack=x+1)資料報,直到資料傳送完畢;

d)         被動方資料傳送完畢,傳送fin資料報(fin=1,ack=y+1,seq=z),表示自己的資料也傳送完畢,請求關閉鏈結;

e)         主動方收到對方的fin包,則知道對方資料也已經發完,則傳送ack包確認關閉(ack=z+1,seq=x+1)資料報。

需要注意的時候當主動方發完第四個握手的包之後,並不會馬上關閉連線,它會進入乙個2msl等待狀態,其實就是一來一回資料報傳輸時間,確認這個資料報被動方收到,也關閉連線。設定這個狀態主要就是為了確保第四個資料報能夠到達被動方,並且被動方收到這個包,如果在一定時間內被動方還沒有收到第四個包的話,就會重發fin包,則此時如果主動方已經關閉連線,就收不到這個包了。這也就是2msl等待狀態產生的原因。

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連線必須要經過三次 對話 才能建立起來,其中的過程非常複雜,我們這裡只做簡單 形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三...