1)TCP
?????? TCP傳輸控制協(xié)議,是一種面向連接的杖们,可靠的悉抵、基于字節(jié)流的傳輸層通信協(xié)議。
??????優(yōu)點:可靠胀莹、穩(wěn)定基跑。TCP的可靠體現在數據傳遞之前婚温,會有三次握手來建立連接描焰,在數據傳遞時,有確認、窗口荆秦、重傳篱竭、擁塞控制機制,在數據完成后步绸,會斷開連接節(jié)約系統(tǒng)資源
??????缺點:慢掺逼,效率低,占用系統(tǒng)資源高瓤介,易被攻擊吕喘。 在傳遞數據之前要先建立連接,這會消耗時間刑桑,而且在數據傳遞時氯质,確認機制. 重傳機制. 擁塞機制等都會消耗大量時間,而且要在每臺設備上維護所有的傳輸連接祠斧。然而闻察,每個連接都會占用系統(tǒng)的CPU,內存等硬件資源琢锋。因為TCP有確認機制. 三次握手機制辕漂,這些也導致TCP容易被利用,實現DOS. DDOS. CC等攻擊吴超。
2)UDP
??????UDP 是用戶數據報協(xié)議钉嘹,是OSI/RM模型中隸屬于傳輸層的面向無連接的網絡數據傳輸協(xié)議。
??????優(yōu)點:快鲸阻,比TCP稍安全隧期。UDP沒有TCP擁有的各種機制,是一種無狀態(tài)的傳輸協(xié)議赘娄,所以傳輸數據非称统保快,沒有TCP的這些機制遣臼,被攻擊利用的機會就少一些性置,但是也無法避免被攻擊。
??????缺點:不可靠揍堰,不穩(wěn)定鹏浅。因為沒有TCP的這些機制,UDP在傳輸數據時屏歹,如果網絡質量不好隐砸,就會很容易丟包,造成數據的缺失蝙眶。
3)TCP與UDP的異同
??????同:都是傳輸層協(xié)議季希,為用戶提供服務
??????異:
TCP | UDP |
---|---|
TCP的傳輸是可靠傳輸 | UDP的傳輸是不可靠傳輸 |
TCP是基于連接的協(xié)議褪那,在正式收發(fā)數據前,必須和對方建立可靠的連接式塌。 | UDP是和TCP相對應的協(xié)議博敬,它是面向非連接的協(xié)議,它不與對方建立連接峰尝,而是直接把數據包發(fā)送出去 |
TCP是一種可靠的通信服務偏窝,負載相對而言比較大,TCP采用套接字(socket)或者端口(port)來建立通信武学。 | UDP是一種不可靠的網絡服務祭往,負載比較小。 |
CP和UDP結構不同火窒,TCP包括序號链沼、確認信號、數據偏移沛鸵、控制標志(通常說的URG括勺、ACK、PSH曲掰、RST疾捍、SYN、FIN)栏妖、窗口乱豆、校驗和、緊急指針吊趾、選項等信息宛裕。 | UDP包含長度和校驗和信息。 |
TCP提供超時重發(fā)论泛,丟棄重復數據揩尸,檢驗數據,流量控制等功能屁奏,保證數據能從一端傳到另一端岩榆。 | UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發(fā)送出去坟瓢,但是并不能保證它們能到達目的地勇边。 |
TCP在發(fā)送數據包前在通信雙方有一個三次握手機制,確保雙方準備好折联,在傳輸數據包期間粒褒,TCP會根據鏈路中數據流量的大小來調節(jié)傳送的速率,傳輸時如果發(fā)現有丟包诚镰,會有嚴格的重傳機制奕坟,故而傳輸速度很慢祥款。 | UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發(fā)等機制执赡,故而傳輸速度很快镰踏。 |
TCP支持全雙工和并發(fā)的TCP連接函筋,提供確認沙合、重傳與擁塞控制。 | UDP適用于哪些系統(tǒng)對性能的要求高于數據完整性的要求跌帐,需要“簡短快捷”的數據交換首懈、需要多播和廣播的應用環(huán)境。 |
4.三次握手與四次揮手
??????TCP是一種面向連接的谨敛,可靠的究履、基于字節(jié)流的傳輸層通信協(xié)議,通過三次握手與四次揮手完成連接的可靠性脸狸。
三次握手:
第一次握手:客戶端向服務器端發(fā)送連接請求包SYN(syn=j)最仑,等待服務器回應;
第二次握手:服務器端收到客戶端連接請求包SYN(syn=j)后炊甲,將客戶端的請求包SYN(syn=j)放入到自己的未連接隊列泥彤,此時服務器需要發(fā)送兩個包給客戶端;
∏浞取(1)向客戶端發(fā)送確認自己收到其連接請求的確認包ACK(ack=j+1)吟吝,向客戶端表明已知道了其連接請求
(2)向客戶端發(fā)送連接詢問請求包SYN(syn=k)颈娜,詢問客戶端是否已經準備好建立連接剑逃,進行數據通信;
即在第二次握手時服務器向客戶端發(fā)送ACK(ack=j+1)和SYN(syn=k)包官辽,此時服務器進入SYN_RECV狀態(tài)蛹磺。
第三次握手:客戶端收到服務器的ACK(ack=j+1)和SYN(syn=k)包后,知道了服務器同意建立連接同仆,此時需要發(fā)送連接已建立的消息給服務器称开;
向服務器發(fā)送連接建立的確認包ACK(ack=k+1),回應服務器的SYN(syn=k)告訴服務器乓梨,我們之間已經建立了連接鳖轰,可以進行數據通信。
ACK(ack=k+1)包發(fā)送完畢扶镀,服務器收到后蕴侣,此時服務器與客戶端進入ESTABLISHED狀態(tài),開始進行數據傳送臭觉。
四次揮手:
第一次揮手:主機A向主機B發(fā)送FIN包昆雀;A告訴B辱志,我(A)發(fā)送給你(B)的數據大小是N,我發(fā)送完畢狞膘,請求斷開A->B的連接揩懒。
第二次揮手:主機B收到了A發(fā)送的FIN包,并向主機A發(fā)送ACK包挽封;B回答A已球,是的,我總共收到了你發(fā)給我N大小的數據辅愿,A->B的連接關閉智亮。
第三次揮手:主機B向主機A發(fā)送FIN包;B告訴A点待,我(B)發(fā)送給你(A)的數據大小是M阔蛉,我發(fā)送完畢,請求斷開B->A的連接癞埠。
第四次揮手:主機A收到了B發(fā)送的FIN包状原,并向主機B發(fā)送ACK包;A回答B(yǎng)苗踪,是的颠区,我收到了你發(fā)送給我的M大小的數據,B->A的連接關閉徒探。