IP 協(xié)議對(duì)應(yīng)于網(wǎng)絡(luò)層虑啤,
TCP協(xié)議對(duì)應(yīng)于傳輸層隙弛,
HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層架馋,
三者從本質(zhì)上來(lái)說(shuō)沒(méi)有可比性,
socket則是對(duì)TCP/IP協(xié)議的封裝和應(yīng)用全闷。
可以說(shuō)叉寂,TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸总珠,而HTTP是應(yīng)用層協(xié)議屏鳍,主要解決如何包裝數(shù)據(jù)
socket是對(duì)TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議局服,而是一個(gè)調(diào)用接口(API)钓瞭,
通過(guò)Socket,我們才能使用TCP/IP協(xié)議淫奔。
實(shí)際上山涡,Socket跟TCP/IP協(xié)議沒(méi)有必然的聯(lián)系。Socket編程接口在設(shè)計(jì)的時(shí)候唆迁,就希望也能適應(yīng)其他的網(wǎng)絡(luò)協(xié)議鸭丛。
所以說(shuō),Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已唐责,是對(duì)TCP/IP協(xié)議的抽象鳞溉,
從而形成了我們知道的一些最基本的函數(shù)接口,比如create鼠哥、 listen熟菲、connect、accept朴恳、send科盛、read和write等等
實(shí)際上,傳輸層的TCP是基于網(wǎng)絡(luò)層的IP協(xié)議的菜皂,而應(yīng)用層的HTTP協(xié)議又是基于傳輸層的TCP協(xié)議的贞绵,
而Socket本身不算是協(xié)議,就像上面所說(shuō)恍飘,它只是提供了一個(gè)針對(duì)TCP或者UDP編程的接口
TCP連接的三次握手:
第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器榨崩,并進(jìn)入SYN_SEND狀態(tài)谴垫,等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到syn包母蛛,必須確認(rèn)客戶的SYN(ack=j+1)翩剪,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包彩郊,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)前弯;
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)秫逝,此包發(fā)送完畢恕出,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手违帆。
握手過(guò)程中傳送的包里不包含數(shù)據(jù)浙巫,三次握手完畢后,客戶端與服務(wù)器才正式開(kāi)始傳送數(shù)據(jù)
斷開(kāi)連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開(kāi)TCP連接的請(qǐng)求刷后,斷開(kāi)過(guò)程需要經(jīng)過(guò)“四次握手”
TCP是面向鏈接的的畴,雖然說(shuō)網(wǎng)絡(luò)的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性,
但TCP的三次握手在最低限度上(實(shí)際上也很大程度上保證了)保證了連接的可靠性尝胆;
而UDP不是面向連接的丧裁,UDP傳送數(shù)據(jù)前并不與對(duì)方建立連接,對(duì)接收到的數(shù)據(jù)也不發(fā)送確認(rèn)信號(hào)含衔,
發(fā)送端不知道數(shù)據(jù)是否會(huì)正確接收煎娇,當(dāng)然也不用重發(fā),所以說(shuō)UDP是無(wú)連接的抱慌、不可靠的一種數(shù)據(jù)傳輸協(xié)議
也正由于上面的特點(diǎn)逊桦,使得UDP的開(kāi)銷更小數(shù)據(jù)傳輸速率更高,因?yàn)椴槐剡M(jìn)行收發(fā)數(shù)據(jù)的確認(rèn)抑进,所以UDP的實(shí)時(shí)性更好强经。
所以采用TCP傳輸協(xié)議的MSN比采用UDP的QQ傳輸文件慢,
但并不能說(shuō)QQ的通信是不安全的寺渗,因?yàn)槌绦騿T可以手動(dòng)對(duì)UDP的數(shù)據(jù)收發(fā)進(jìn)行驗(yàn)證匿情,
比如發(fā)送方對(duì)每個(gè)數(shù)據(jù)包進(jìn)行編號(hào)然后由接收方進(jìn)行驗(yàn)證啊什么的,
即使是這樣信殊,UDP因?yàn)樵诘讓訁f(xié)議的封裝上沒(méi)有采用類似 TCP的“三次握手”而實(shí)現(xiàn)了TCP所無(wú)法達(dá)到的傳輸效率炬称。
文章來(lái)源,百度文摘