欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

TCP及socket通信原理

一、網(wǎng)絡(luò)互聯(lián)模型

創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都10余年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都近1000家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。

   因特網(wǎng)在剛面世時(shí),只有同一制造商生產(chǎn)的計(jì)算機(jī)才能彼此通信,制定網(wǎng)絡(luò)互聯(lián)模型的目的就是為異種的計(jì)算機(jī)互連提供一個(gè)共同的基礎(chǔ)和標(biāo)準(zhǔn)框架,并為保持相關(guān)標(biāo)準(zhǔn)的一致性和兼容性提供共同的參考。

   互聯(lián)參考模型:

      OSI七層模型(Open System Interconnect):應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層

      DoD四層模型:是OSI七層模型的濃縮版,包括 進(jìn)程/應(yīng)用層、主機(jī)到主機(jī)層、因特網(wǎng)層、網(wǎng)絡(luò)接入層

TCP及socket通信原理

   以上兩種模型是層次型的,分層模型的優(yōu)點(diǎn)主要在于:

      ①將網(wǎng)絡(luò)通信過(guò)程劃分為更小、更簡(jiǎn)單的組件,這有助于組件的開(kāi)發(fā)、設(shè)計(jì)和故障的排除

      ②定義了模型每層執(zhí)行的功能,從而鼓勵(lì)了行業(yè)標(biāo)準(zhǔn)化

      ③讓不同類型的網(wǎng)絡(luò)硬件和軟件能夠彼此通信

      ④避免對(duì)一層的修改而影響其它層

二、傳輸層協(xié)議

   目前主流的傳輸層協(xié)議有TCP和UDP。SCTP是TCP的改進(jìn)版,DCCP是一個(gè)用來(lái)取代UDP的新的非可靠傳輸協(xié)議

   1、UDP(User Data Protocol,用戶數(shù)據(jù)報(bào)協(xié)議):一種無(wú)連接的協(xié)議,提供面向事務(wù)的簡(jiǎn)單可靠信息傳送服務(wù),不建立會(huì)話,不對(duì)數(shù)據(jù)分段,不編號(hào)不排序,也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。但正因?yàn)閁DP協(xié)議的控制選項(xiàng)較少,在數(shù)據(jù)傳輸過(guò)程中延遲小、數(shù)據(jù)傳輸效率高,適合對(duì)可靠性要求不高的應(yīng)用程序,或者可以保障可靠性的應(yīng)用程序

     常用的UDP端口號(hào)有:DNS 53,TFTP 69,SNMP 161

   2、TCP(Transmission Control Protocol,傳輸控制協(xié)議):一種面向連接的、可靠、基于字節(jié)流的傳輸層通信協(xié)議。

     TCP實(shí)現(xiàn)可靠性的機(jī)制: 

        ①以通信雙方之間建立連接      

        ②TCP把數(shù)據(jù)流分割為適當(dāng)長(zhǎng)度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳輸單元(MTU)的限制)。

        ③TCP為了保證不發(fā)生丟包,就給每個(gè)報(bào)文段一個(gè)序號(hào),同時(shí)序號(hào)也保證了接收端的按序接收。TCP報(bào)文段的到達(dá)也可能會(huì)失序,如有必要,TCP將對(duì)收到的報(bào)文段進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層

        ④接收端對(duì)已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會(huì)被進(jìn)行重傳

        ⑤TCP用校驗(yàn)和函數(shù)來(lái)檢驗(yàn)報(bào)文段是否有錯(cuò)誤,在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和,接收端若發(fā)現(xiàn)校驗(yàn)和有差錯(cuò),將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段。

        ⑥TCP還能提供流量控制:緩沖區(qū)(發(fā)送緩沖區(qū)、接收緩沖區(qū))滑動(dòng)窗口

        ⑦在擁塞控制上,采用慢啟動(dòng)擁塞避免算法

TCP及socket通信原理

     ▲TCP在正式傳輸數(shù)據(jù)前需要經(jīng)過(guò)三次握手建立連接,其過(guò)程如下:        

         ①客戶端發(fā)送SYN(SEQ=x)報(bào)文給服務(wù)器端,進(jìn)入SYN_SEND狀態(tài)。

         ②服務(wù)器端收到SYN報(bào)文,回應(yīng)一個(gè)SYN(SEQ=y)ACK(ACK=x+1)報(bào)文,進(jìn)入SYN_RECV狀態(tài)。

         ③客戶端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=y+1)報(bào)文,進(jìn)入Established狀態(tài)。

     

     ▲在數(shù)據(jù)傳輸完畢后需要經(jīng)過(guò)四次握手終止連接,其過(guò)程如下:

         ①某個(gè)應(yīng)用進(jìn)程首先調(diào)用close(),稱該端執(zhí)行“主動(dòng)關(guān)閉”(active close)。該端的TCP于是發(fā)送一個(gè)FIN分節(jié)(文件結(jié)束符),表示數(shù)據(jù)發(fā)送完畢。

         ②接收到這個(gè)FIN的對(duì)端執(zhí)行 “被動(dòng)關(guān)閉”(passive close),這個(gè)FIN由TCP確認(rèn)。

         注意:FIN的接收也作為一個(gè)文件結(jié)束符(end-of-file)傳遞給接收端應(yīng)用進(jìn)程,放在已排隊(duì)等候該應(yīng)用進(jìn)程接收的任何其他數(shù)據(jù)之后,因?yàn)椋現(xiàn)IN的接收意味著接收端應(yīng)用進(jìn)程在相應(yīng)連接上再無(wú)額外數(shù)據(jù)可接收。

         ③一段時(shí)間后,接收到這個(gè)文件結(jié)束符的應(yīng)用進(jìn)程將調(diào)用close關(guān)閉它的套接字,這導(dǎo)致它的TCP也發(fā)送一個(gè)FIN。

         ④接收這個(gè)最終FIN的原發(fā)送端TCP(即執(zhí)行主動(dòng)關(guān)閉的那一端)確認(rèn)這個(gè)FIN。

      

      ▲TCP協(xié)議通過(guò)tcp狀態(tài)來(lái)標(biāo)記當(dāng)前處于通信過(guò)程的哪個(gè)階段:

         CLOSED, LISTEN, SYN_SENT(主動(dòng)打開(kāi)), SYN_RECV, ESTABLISHED, FIN_WAIT1, CLOSE_WAIT, FIN_WAIT2, LAST_ACK, TIME_WAIT, CLOSED

三、套接字

  1、套接字(socket):應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同時(shí)會(huì)多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。區(qū)分不同的應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,主要有三個(gè)參數(shù):通信的目標(biāo)IP地址、使用的傳輸層協(xié)議(TCP或UDP)、目標(biāo)端口號(hào),這種組合稱為套接字。

       session:ip:port<==>ip:port

       端口分類

          眾所周知的端口:0~1023,管理員才有權(quán)限使用,永久地分配給某應(yīng)用使用;

          注冊(cè)端口:1024~41951:只有一部分被注冊(cè),分配原則上非特別嚴(yán)格;

          動(dòng)態(tài)端口或私有端口:41952+

            /proc/sys/net/ipv4/ip_local_port_range:定義兩個(gè)數(shù)字,表示可以做為臨時(shí)端口的起始數(shù)字和結(jié)束數(shù)字

  2、套接字類型:

      tcp socket(流式)

      udp socket(數(shù)據(jù)報(bào)式)

      raw socket(不使用TCP或UDP協(xié)議,應(yīng)用層的應(yīng)用程序直接通達(dá)IP層)

  3、socket通信在domain中實(shí)現(xiàn),不同domain的socket地址格式不同在unix domain中是一個(gè)文件路徑名,在ipv4 domain中是ipv4地址加端口號(hào),在ipv6 domain中是ipv6地址加端口號(hào)     

      domain:

         Unix domain:基于socket機(jī)制實(shí)現(xiàn)同一主機(jī)不同進(jìn)程間通信的一種方式;AF_UNIX,AF_LOCAL

         IPv4 domain:AF_INET,基于socket機(jī)制借助于ipv4協(xié)議實(shí)現(xiàn)不同主機(jī)(也可是同一主機(jī))上的進(jìn)程間的通信

         IPv6 domain:AF_INET6

    ▲雖然IPv4 domain能實(shí)現(xiàn)不同或同一主機(jī)進(jìn)程間通信,但是對(duì)于同一主機(jī)進(jìn)程間的通信應(yīng)盡量使用Unix domain,socket在Unix domain中實(shí)現(xiàn)通信的方式就是在內(nèi)存中創(chuàng)建一個(gè)可讀寫(xiě)的文件作為進(jìn)程間交互的中介,這種方式繞過(guò)了網(wǎng)絡(luò)協(xié)議棧,節(jié)省了系統(tǒng)資源,提高了通信效率。

  4、tcp socket通信相關(guān)的系統(tǒng)調(diào)用

TCP及socket通信原理

       socket():創(chuàng)建一個(gè)新的socket

       bind():綁定于一個(gè)套接字地址上(服務(wù)器端會(huì)用到)

       listen():監(jiān)聽(tīng)套接字

       accept():接收連接請(qǐng)求

       connect():發(fā)起連接請(qǐng)求

       close():關(guān)閉連接

       read()和write():recv(), send(), recvfrom(), sendto()

網(wǎng)頁(yè)標(biāo)題:TCP及socket通信原理
本文鏈接:http://www.chinadenli.net/article44/peciee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄外貿(mào)網(wǎng)站建設(shè)網(wǎng)站營(yíng)銷品牌網(wǎng)站設(shè)計(jì)網(wǎng)頁(yè)設(shè)計(jì)公司關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)