美國(guó)獨(dú)立服務(wù)器的TCP協(xié)議是TCP/IP協(xié)議族其中一個(gè)重要的協(xié)議,對(duì)比美國(guó)獨(dú)立服務(wù)器TCP協(xié)議介紹IP協(xié)議,TCP協(xié)議更靠近應(yīng)用層,因此在應(yīng)用程序中具有更強(qiáng)的可操作性,美國(guó)獨(dú)立服務(wù)器TCP協(xié)議介紹一些重要的 socket選項(xiàng)都與TCP協(xié)議相關(guān),本文小編就來(lái)介紹下美國(guó)獨(dú)立服務(wù)器的TCP協(xié)議。
美國(guó)獨(dú)立服務(wù)器的傳輸層協(xié)議主要有兩個(gè):TCP協(xié)議和UDP協(xié)議。使用TCP協(xié)議通信的雙方必須先建立連接,然后才能開(kāi)始數(shù)據(jù)的讀寫(xiě)。雙方都必須為該連接分配必要的內(nèi)核資源,以管理連接的狀態(tài)和連接上數(shù)據(jù)的傳輸。美國(guó)獨(dú)立服務(wù)器TCP連接是雙方的數(shù)據(jù)讀寫(xiě)可以通過(guò)一個(gè)連接進(jìn)行,完成數(shù)據(jù)交換之后,通信雙方都必須斷開(kāi)連接以釋放系統(tǒng)資源。
TCP協(xié)議的這種連接是一對(duì)一的,所以基于廣播和多播,目標(biāo)是多個(gè)美國(guó)獨(dú)立服務(wù)器TCP協(xié)議地址的應(yīng)用程序不能使用TCP服務(wù)。而無(wú)連接協(xié)議UDP則非常適合于廣播和多播。
節(jié)流服務(wù)和數(shù)據(jù)報(bào)服務(wù)的區(qū)別會(huì)對(duì)應(yīng)到美國(guó)獨(dú)立服務(wù)器實(shí)際編程中,體現(xiàn)為通信雙方是否必須執(zhí)行相同次數(shù)的讀、寫(xiě)操作。當(dāng)發(fā)送端應(yīng)用程序連續(xù)執(zhí)行多次寫(xiě)操作時(shí),TCP模塊先將這些數(shù)據(jù)放入TCP發(fā)送緩沖區(qū)中。當(dāng)TCP模塊真正開(kāi)始發(fā)送數(shù)據(jù)時(shí),發(fā)送緩沖區(qū)中這些等待發(fā)送的數(shù)據(jù)可能被封裝成一個(gè)或多個(gè)TCP報(bào)文段發(fā)出。因此,TCP模塊發(fā)送出的TCP報(bào)文段的個(gè)數(shù)和應(yīng)用程序執(zhí)行的寫(xiě)操作次數(shù)之間沒(méi)有固定的數(shù)量關(guān)系。
當(dāng)美國(guó)獨(dú)立服務(wù)器接收端收到一個(gè)或多個(gè)TCP報(bào)文段后,TCP模塊將它們攜帶的應(yīng)用程序數(shù)據(jù)按照TCP報(bào)文段的序號(hào)依次放入TCP接收緩沖區(qū)中,并通知應(yīng)用程序讀取數(shù)據(jù)。接收端應(yīng)用程序可以一次性將TCP接收緩沖區(qū)中的數(shù)據(jù)全部讀出,也可以分多次讀取,這取決于用戶指定的應(yīng)用程序讀緩沖區(qū)的大小。因此,應(yīng)用程序執(zhí)行的讀操作次數(shù)和TCP模塊接收到的TCP報(bào)文段個(gè)數(shù)之間也沒(méi)有固定的數(shù)量關(guān)系。
綜上所述,發(fā)送端執(zhí)行的寫(xiě)操作次數(shù)和接收端執(zhí)行的讀操作次數(shù)之間沒(méi)有任何數(shù)量關(guān)系,這就是字節(jié)流的概念:應(yīng)用程序?qū)?shù)據(jù)的發(fā)送和接收是沒(méi)有邊界限制的。UDP則不然。發(fā)送端應(yīng)用程序每執(zhí)行一次寫(xiě)操作UDP模塊就將其封裝成一個(gè)UDP數(shù)據(jù)報(bào)并發(fā)送之。接收端必須及時(shí)針對(duì)每一個(gè)UDP數(shù)據(jù)報(bào)執(zhí)行讀操作,否則就會(huì)丟包。并且如果美國(guó)獨(dú)立服務(wù)器果用戶沒(méi)有指定足夠的應(yīng)用程序緩沖區(qū)來(lái)讀取UDP數(shù)據(jù),則UDP數(shù)據(jù)將被截?cái)唷?/p>
美國(guó)獨(dú)立服務(wù)器TCP傳輸是可靠的,TCP協(xié)議采用發(fā)送應(yīng)答機(jī)制,即發(fā)送端發(fā)送的每個(gè)TCP報(bào)文段都必須得到接收方的應(yīng)答,才認(rèn)為這個(gè)TCP報(bào)文段傳輸成功。其次,TCP協(xié)議采用超時(shí)重傳機(jī)制,發(fā)送端在發(fā)送出一個(gè)TCP報(bào)文段之后啟動(dòng)定時(shí)器,如果在定時(shí)時(shí)間內(nèi)未收到應(yīng)答,它將重發(fā)該報(bào)文段。最后,因?yàn)門(mén)CP報(bào)文段最終是以IP數(shù)據(jù)報(bào)發(fā)送的,而IP數(shù)據(jù)報(bào)到達(dá)接收端可能亂序、重復(fù),所以TCP協(xié)議還會(huì)對(duì)接收到的TCP報(bào)文段重排、整理,再交付給應(yīng)用層。