TCP---傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)闹瞧。當(dāng)客戶和服務(wù)器彼此交換數(shù)據(jù)前绑雄,必須先在雙方之間建立一個(gè)TCP連接,之后才能傳輸數(shù)據(jù)奥邮。TCP提供超時(shí)重發(fā)万牺,丟棄重復(fù)數(shù)據(jù),檢驗(yàn)數(shù)據(jù)洽腺,流量控制等功能脚粟,保證數(shù)據(jù)能從一端傳到另一端。
UDP---用戶數(shù)據(jù)報(bào)協(xié)議蘸朋,是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議核无。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去度液,但是并不能保證它們能到達(dá)目的地厕宗。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶和服務(wù)器之間建立一個(gè)連接画舌,且沒有超時(shí)重發(fā)等機(jī)制,故而傳輸速度很快
現(xiàn)在Internet上流行的協(xié)議是TCP/IP協(xié)議已慢,該協(xié)議中對(duì)低于1024的端口都有確切的定義曲聂,他們對(duì)應(yīng)著Internet上一些常見的服務(wù)。這些常見的服務(wù)可以分為使用TCP端口(面向連接)和使用UDP端口(面向無連接)兩種佑惠。
說到TCP和UDP,首先要明白“連接”和“無連接”的含義朋腋,他們的關(guān)系可以用一個(gè)形象地比喻來說明,就是打電話和寫信膜楷。兩個(gè)人如果要通話旭咽,首先要建立連接——即打電話時(shí)的撥號(hào),等待響應(yīng)后——即接聽電話后赌厅,才能相互傳遞信息穷绵,最后還要斷開連接——即掛電話。寫信就比較簡(jiǎn)單了特愿,填寫好收信人的地址后將信投入郵筒仲墨,收信人就可以收到了。從這個(gè)分析可以看出揍障,建立連接可以在需要痛心地雙方建立一個(gè)傳遞信息的通道目养,在發(fā)送方發(fā)送請(qǐng)求連接信息接收方響應(yīng)后,由于是在接受方響應(yīng)后才開始傳遞信息毒嫡,而且是在一個(gè)通道中傳送癌蚁,因此接受方能比較完整地收到發(fā)送方發(fā)出的信息,即信息傳遞的可靠性比較高兜畸。但也正因?yàn)樾枰⑦B接努释,使資源開銷加大(在建立連接前必須等待接受方響應(yīng),傳輸信息過程中必須確認(rèn)信息是否傳到及斷開連接時(shí)發(fā)出相應(yīng)的信號(hào)等)膳叨,獨(dú)占一個(gè)通道洽洁,在斷開連接錢不能建立另一個(gè)連接,即兩人在通話過程中第三方不能打入電話菲嘴。而無連接是一開始就發(fā)送信息(嚴(yán)格說來饿自,這是沒有開始、結(jié)束的)龄坪,只是一次性的傳遞昭雌,是先不需要接受方的響應(yīng),因而在一定程度上也無法保證信息傳遞的可靠性了健田,就像寫信一樣烛卧,我們只是將信寄出去,卻不能保證收信人一定可以收到。
TCP是面向連接的总放,有比較高的可靠性呈宇,一些要求比較高的服務(wù)一般使用這個(gè)協(xié)議,如FTP局雄、Telnet甥啄、SMTP、HTTP炬搭、POP3等蜈漓,而UDP是面向無連接的,使用這個(gè)協(xié)議的常見服務(wù)有DNS宫盔、SNMP融虽、QQ等。對(duì)于QQ必須另外說明一下灼芭,QQ2003以前是只使用UDP協(xié)議的有额,其服務(wù)器使用8000端口,偵聽是否有信息傳來姿鸿,客戶端使用4000端口谆吴,向外發(fā)送信息(這也就不難理解在一般的顯IP的QQ版本中顯示好友的IP地址信息中端口常為4000或其后續(xù)端口的原因了),即QQ程序既接受服務(wù)又提供服務(wù)苛预,在以后的QQ版本中也支持使用TCP協(xié)議了。