久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

TCP/IP UDP HTTP Socket釋疑

 心不留意外塵 2016-08-26

http://blog.csdn.net/boonya/article/details/43372897


TCP和UDP

什么是TCP UDP
      TCPTranfer Control Protocol 簡稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議,。通過TCP協(xié)議傳輸,,得到的是一個(gè)順序的無差錯(cuò)的數(shù)據(jù)流。發(fā)送方和接收方的成對的兩個(gè)socket之間必須建 立連接,,以便在TCP協(xié)議的基礎(chǔ)上進(jìn)行通信,,當(dāng)一個(gè)socket(通常都是server socket)等待建立連接時(shí),另一個(gè)socket可以要求進(jìn)行連接,,一旦這兩個(gè)socket連接起來,,它們就可以進(jìn)行雙向數(shù)據(jù)傳輸,雙方都可以進(jìn)行發(fā)送 或接收操作,。

       UDPUser Datagram Protocol的簡稱,,是一種無連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,,包括完整的源地址或目的地址,,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時(shí)間以及內(nèi)容的正確性都是不能被保證的,。
TCP與UDP的區(qū)別與比較
     TCP是面向鏈接的,,雖然說網(wǎng)絡(luò)的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性,但TCP的三次握手在最低限度上(實(shí)際上也很大程度上保證了)保證了連接的可靠性;而UDP不是面向連接的,,UDP傳送數(shù)據(jù)前并不與對方建立連接,,對接收到的數(shù)據(jù)也不發(fā)送確認(rèn)信號,發(fā)送端不知道數(shù)據(jù)是否會(huì)正確接收,,當(dāng)然也不用重發(fā),,所以說UDP是無連接的、不可靠的一種數(shù)據(jù)傳輸協(xié)議,。
     也正由于上面所說的特點(diǎn),,使得UDP的開銷更小數(shù)據(jù)傳輸速率更高,因?yàn)椴槐剡M(jìn)行收發(fā)數(shù)據(jù)的確認(rèn),,所以UDP的實(shí)時(shí)性更好,。  知道了TCP和UDP的區(qū)別,就不難理解為何采用TCP傳輸協(xié)議的MSN比采用UDP的QQ傳輸文件慢了,,但并不能說QQ的通信是不安全的,,因?yàn)槌绦騿T可以手動(dòng)對UDP的數(shù)據(jù)收發(fā)進(jìn)行驗(yàn)證,比如發(fā)送方對每個(gè)數(shù)據(jù)包進(jìn)行編號然后由接收方進(jìn)行驗(yàn)證啊什么的,,即使是這樣,,UDP因?yàn)樵诘讓訁f(xié)議的封裝上沒有采用類似TCP的“三次握手”而實(shí)現(xiàn)了TCP所無法達(dá)到的傳輸效率。
TCP:1)面向連接的協(xié)議,,在socket之間進(jìn)行數(shù)據(jù)傳輸之前必然要建立連接,,所以在TCP中需要連接時(shí)間。

 2)TCP傳輸數(shù)據(jù)大小限制,,一旦連接建立起來,,雙方的socket就可以按統(tǒng)一的格式傳輸大的數(shù)據(jù)。

 3)TCP是一個(gè)可靠的協(xié)議,,它確保接收方完全正確地獲取發(fā)送方所發(fā)送的全部數(shù)據(jù),。


UDP: 1)每個(gè)數(shù)據(jù)報(bào)中都給出了完整的地址信息,因此無需要建立發(fā)送方和接收方的連接,。

              2)UDP傳輸數(shù)據(jù)時(shí)是大小限制的,,每個(gè)被傳輸?shù)臄?shù)據(jù)報(bào)必須限定在64KB之內(nèi)

              3)UDP是一個(gè)不可靠的協(xié)議,,發(fā)送方所發(fā)送的數(shù)據(jù)報(bào)并不一定以相同的次序到達(dá)接收方,。

應(yīng)用場景

TCP在網(wǎng)絡(luò)通信上有極強(qiáng)的生命力,,例如遠(yuǎn)程連接(Telnet)和文件傳輸(FTP)都需要不定長度的數(shù)據(jù)被可靠地傳輸,。但是可靠的傳輸是要付出代價(jià)的,對數(shù)據(jù)內(nèi)容正確性的檢驗(yàn)必然占用計(jì)算機(jī)的處理時(shí)間和網(wǎng)絡(luò)的帶寬,因此TCP傳輸?shù)?/span>效率不如UDP,。

UDP操作簡單,,而且僅需要較少的監(jiān)護(hù),因此通常用于局域網(wǎng)高可靠性的分散系統(tǒng)中client/server應(yīng)用程序,。例如視頻會(huì)議系統(tǒng),,并不要求音頻視頻數(shù)據(jù)絕對的正確,只要保證連貫性就可以了,,這種情況下顯然使用UDP會(huì)更合理一些,。


網(wǎng)絡(luò)連接

TCP連接

手機(jī)能夠使用聯(lián)網(wǎng)功能是因?yàn)槭謾C(jī)底層實(shí)現(xiàn)了TCP/IP協(xié)議(IP協(xié)議對應(yīng)于網(wǎng)絡(luò)層,TCP協(xié)議對應(yīng)于傳輸層,,而HTTP協(xié)議對應(yīng)于應(yīng)用層),,可以使手機(jī)終端通過無線網(wǎng)絡(luò)建立TCP連接。TCP協(xié)議可以對上層網(wǎng)絡(luò)提供接口,,使上層網(wǎng)絡(luò)數(shù)據(jù)的傳輸建立在“無差別”的網(wǎng)絡(luò)之上,。

建立起一個(gè)TCP連接需要經(jīng)過“三次握手”:

第一次握手:客戶端發(fā)送syn(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),,等待服務(wù)器確認(rèn),;

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYNack=j+1),,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài),;

第三次握手:客戶端收到服務(wù)器的SYNACK包,,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),,完成三次握手。

握手過程中傳送的包里不包含數(shù)據(jù),,三次握手完畢后,,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。理想狀態(tài)下,,TCP連接一旦建立,,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去,。斷開連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開TCP連接的請求,,斷開過程需要經(jīng)過“四次握手”(過程就不細(xì)寫了,就是服務(wù)器和客戶端交互,,最終確定斷開)


HTTP連接

HTTP協(xié)議即超文本傳送協(xié)議(Hypertext Transfer Protocol ),,是Web聯(lián)網(wǎng)的基礎(chǔ),,也是手機(jī)聯(lián)網(wǎng)常用的協(xié)議之一,HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用,。

HTTP連接最顯著的特點(diǎn)是客戶端發(fā)送的每次請求都需要服務(wù)器回送響應(yīng),,在請求結(jié)束后,會(huì)主動(dòng)釋放連接,。從建立連接到關(guān)閉連接的過程稱為“一次連接”,。

1)在HTTP 1.0中,客戶端的每次請求都要求建立一次單獨(dú)的連接,,在處理完本次請求后,,就自動(dòng)釋放連接

2)在HTTP 1.1中則可以在一次連接中處理多個(gè)請求,并且多個(gè)請求可以重疊進(jìn)行,,不需要等待一個(gè)請求結(jié)束后再發(fā)送下一個(gè)請求,。

由于HTTP在每次請求結(jié)束后都會(huì)主動(dòng)釋放連接,因此HTTP連接是一種“短連接”,,要保持客戶端程序的在線狀態(tài),,需要不斷地向服務(wù)器發(fā)起連接請求。通常的做法是即時(shí)不需要獲得任何數(shù)據(jù),,客戶端也保持每隔一段固定的時(shí)間向服務(wù)器發(fā)送一次“保持連接”的請求,,服務(wù)器在收到該請求后對客戶端進(jìn)行回復(fù),表明知道客戶端“在線”,。若服務(wù)器長時(shí)間無法收到客戶端的請求,,則認(rèn)為客戶端“下線”,若客戶端長時(shí)間無法收到服務(wù)器的回復(fù),,則認(rèn)為網(wǎng)絡(luò)已經(jīng)斷開,。

UDP偽連接
UDP協(xié)議全稱是用戶數(shù)據(jù)報(bào)協(xié)議[1] ,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,,是一種無連接的協(xié)議,。在OSI模型中,在第四層——傳輸層,,處于IP協(xié)議的上一層,。UDP有不提供數(shù)據(jù)包分組、組裝和不能對數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),,也就是說,,當(dāng)報(bào)文發(fā)送之后,是無法得知其是否安全完整到達(dá)的,。UDP用來支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用,。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問世至今已經(jīng)被使用了很多年,,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,,但是即使是在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議,。
與所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層,。根據(jù)OSI(開放系統(tǒng)互連)參考模型,,UDP和TCP都屬于傳輸層協(xié)議,。UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式,。一個(gè)典型的數(shù)據(jù)包就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)包的前8個(gè)字節(jié)用來包含報(bào)頭信息,,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù),。

SOCKET

socket概念

套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元,。它是網(wǎng)絡(luò)通信過程中端點(diǎn)的抽象表示,,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機(jī)的IP地址,,本地進(jìn)程的協(xié)議端口,,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口,。

應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)通信時(shí),,TCP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過同一個(gè) TCP協(xié)議端口傳輸數(shù)據(jù),。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCPIP協(xié)議交互提供了套接字(Socket)接口。應(yīng)用層可以和傳輸層通過Socket接口,,區(qū)分來自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。

建立socket連接

建立Socket連接至少需要一對套接字,,其中一個(gè)運(yùn)行于客戶端,,稱為ClientSocket ,另一個(gè)運(yùn)行于服務(wù)器端,,稱為ServerSocket ,。

套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽,客戶端請求,,連接確認(rèn),。

服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),,實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),,等待客戶端的連接請求 

客戶端請求:指客戶端的套接字提出連接請求,要連接的目標(biāo)是服務(wù)器端的套接字,。為此,,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,,指出服務(wù)器端套接字的地址和端口號,然后就向服務(wù)器端套接字提出連接請求,。

連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求時(shí),,就響應(yīng)客戶端套接字的請求,建立一個(gè)新的線程,,把服務(wù)器端套接字的描述發(fā)給客戶端,,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接,。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài),,繼續(xù)接收其他客戶端套接字的連接請求。


SOCKET連接與TCP連接

創(chuàng)建Socket連接時(shí),,可以指定使用的傳輸層協(xié)議,,Socket可以支持不同的傳輸層協(xié)議(TCPUDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),,該Socket連接就是一個(gè)TCP連接,。

Socket連接與HTTP連接 

由于通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,,通信雙方即可開始相互發(fā)送數(shù)據(jù)內(nèi)容,,直到雙方連接斷開。但在實(shí)際網(wǎng)絡(luò)應(yīng)用中,,客戶端到服務(wù)器之間的通信往往需要穿越多個(gè)中間節(jié)點(diǎn),,例如路由器、網(wǎng)關(guān),、防火墻等,,大部分防火墻默認(rèn)會(huì)關(guān)閉長時(shí)間處于非活躍狀態(tài)的連接而導(dǎo)致 Socket 連接斷連,因此需要通過輪詢告訴網(wǎng)絡(luò),,該連接處于活躍狀態(tài),。

HTTP連接使用的是“請求—響應(yīng)”的方式,不僅在請求時(shí)需要先建立連接,,而且需要客戶端向服務(wù)器發(fā)出請求后,,服務(wù)器端才能回復(fù)數(shù)據(jù)。

很多情況下,,需要服務(wù)器端主動(dòng)向客戶端推送數(shù)據(jù),,保持客戶端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步。此時(shí)若雙方建立的是Socket連接,,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端,;若雙方建立的是HTTP連接,則服務(wù)器需要等到客戶端發(fā)送一次請求后才能將數(shù)據(jù)傳回給客戶端,,因此,,客戶端定時(shí)向服務(wù)器端發(fā)送連接請求,,不僅可以保持在線,同時(shí)也是在“詢問”服務(wù)器是否有新的數(shù)據(jù),,如果有就將數(shù)據(jù)傳給客戶端,。

參考資料

     http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html

http://blog.csdn.net/ch_soft/article/details/7286035

http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html

http://baike.baidu.com/link?url=X6XjvEjIgd-ODz8DF2lhmvVgu6Izkf4e_J7vzJHKcQlbobnvBSCvfzV7ODZawsCqiMpLUHSya7W2iClhtbkcP_

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多