TCP(傳輸控制協(xié)議):位于傳輸層者祖,提供了可靠的字節(jié)流服務(wù)乘凸。
? ? ? ? ?所謂字節(jié)流服務(wù)是指為了傳輸方便茉稠,將大數(shù)據(jù)分割成以報文段為單位的數(shù)據(jù)包進行管理。而可靠的傳輸服務(wù)是指卿吐,能夠把數(shù)據(jù)準確可靠的傳給對方旁舰,一言以蔽之,TCP協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割嗡官,而且TCP協(xié)議能夠確認數(shù)據(jù)最終是否送達到對方箭窜。
1)提供IP環(huán)境下的數(shù)據(jù)可靠傳輸(一臺計算機發(fā)出的字節(jié)流會無差錯的發(fā)往網(wǎng)絡(luò)上的其他計算機,而且計算機A接收數(shù)據(jù)包的時候衍腥,也會向計算機B回發(fā)數(shù)據(jù)包磺樱,這也會產(chǎn)生部分通信量),有效流控婆咸,全雙工操作(數(shù)據(jù)在兩個方向上能同時傳遞)竹捉,多路復(fù)用服務(wù),是面向連接尚骄,端到端的傳輸;
2)面向連接:正式通信前必須要與對方建立連接块差。事先為所發(fā)送的數(shù)據(jù)開辟出連接好的通道,然后再進行數(shù)據(jù)發(fā)送倔丈,像打電話憨闰。
3)TCP支持的應(yīng)用協(xié)議:Telnet(遠程登錄)、FTP(文件傳輸協(xié)議)需五、SMTP(簡單郵件傳輸協(xié)議)鹉动。TCP用于傳輸數(shù)據(jù)量大,可靠性要求高的應(yīng)用警儒。
UDP(用戶數(shù)據(jù)報協(xié)議):
1)面向非連接的(正式通信前不必與對方建立連接训裆,不管對方狀態(tài)就直接發(fā)送眶根,像短信,QQ)边琉,不能提供可靠性属百、流控、差錯恢復(fù)功能变姨。UDP用于一次只傳送少量數(shù)據(jù)族扰,可靠性要求低、傳輸經(jīng)濟等應(yīng)用定欧。
2) UDP支持的應(yīng)用協(xié)議:NFS(網(wǎng)絡(luò)文件系統(tǒng))渔呵、SNMP(簡單網(wǎng)絡(luò)管理系統(tǒng))、DNS(主域名稱系統(tǒng))砍鸠、TFTP(通用文件傳輸協(xié)議)等扩氢。
區(qū)別總結(jié):
1.TCP面向連接(如打電話要先撥號建立連接),UDP是無連接的爷辱,即發(fā)送數(shù)據(jù)之前不需要建立連接录豺。
2.TCP提供可靠的服務(wù),邏輯通信信道是全雙工的可靠信道,也就是說通過TCP連接傳送的數(shù)據(jù)饭弓,無差錯双饥,不丟失,不重復(fù)弟断,且按序到達咏花。UDP是不可靠信道盡最大努力交付,即不保證可靠交付阀趴。
3.TCP面向字節(jié)流昏翰,實際上是TCP把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流。UDP是面向報文的UDP沒有擁塞控制舍咖,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應(yīng)用很有用矩父,如IP電話,實時視頻會議等)排霉。
4.每一條TCP連接只能是點到點的,UDP支持一對一窍株,一對多,多對一和多對多的交互通信攻柠。
5.TCP首部開銷20字節(jié)球订,UDP的首部開銷小,只有8個字節(jié)瑰钮。
三次握手:確保數(shù)據(jù)能到達目標
? ? ?為了準確無誤的將數(shù)據(jù)送達目標處冒滩,TCP協(xié)議采用了三次握手策略。用TCP協(xié)議把數(shù)據(jù)包送出去之后浪谴,TCP不會對傳送后的情況置之不理开睡,它一定會向?qū)Ψ酱_認是否成功送達因苹。握手過程中使用了TCP的標志——SYN和ACK。
? ? ?發(fā)送端首先發(fā)送一個帶SYN標志的數(shù)據(jù)包給對方篇恒。接收端收到后扶檐,回傳一個帶有SYN/ACK標志的數(shù)據(jù)包以示傳達確認信息。最后胁艰,發(fā)送端再回傳一個帶 ACK標志的數(shù)據(jù)包款筑,代表“握手”結(jié)束。
? ? ?若在握手過程中某個階段莫名中斷腾么,TCP會再次以相同的順序發(fā)送相同的數(shù)據(jù)包奈梳。
第一次握手:建立連接(默認客戶端的端口是CLOSED狀態(tài),建立連接的時候主動打開打開)解虱,客戶端發(fā)送SYN(SYN=1攘须,seq=x)包到服務(wù)器,并進入SYN_SENT狀態(tài)饭寺,等待服務(wù)器確認阻课。
第二次握手:服務(wù)器收到SYN包(默認服務(wù)器的端口是CLOSED狀態(tài),它會不定時地被動打開端口艰匙,來等待客戶端的請求,此時端口為LISTEN狀態(tài))抹恳,必須確認客戶的SYN(SYN=1员凝,ACK=1,seq=y,ack=x+1),此時服務(wù)器進入SYN_RECV狀態(tài)奋献。
第三次握手:客戶端收到服務(wù)器的SYN+ACK包健霹,向服務(wù)器發(fā)送確認ack=y+1包,此包發(fā)送完畢瓶蚂,客戶端和服務(wù)器都進入ESTAB_LISHEN狀態(tài)糖埋。
完成三次握手之后,客戶端和服務(wù)端可以進行通信窃这。
四次揮手:
第一次揮手:客戶端給服務(wù)器發(fā)送TCP包瞳别,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送。將標志位FIN和ACK置為1杭攻,序號為seq=u祟敛,確認序號為ack=1。
第二次揮手:服務(wù)器收到FIN后兆解,發(fā)回一個ACK(標志位ACK=1),確認序號為收到的序號seq=v馆铁。序號為收到的確認序號ack=u+1。
第三次揮手:服務(wù)器關(guān)閉與客戶端的連接锅睛,發(fā)送一個FIN埠巨。標志位FIN和ACK置為1历谍,序號為seq=w,確認序號為ack=u+1辣垒。
第四次揮手:客戶端收到服務(wù)器發(fā)送的FIN之后望侈,發(fā)回ACK確認(標志位ACK=1),確認序號為收到的序號seq=u+1,序號為收到的確認序號ack=w+1。