socket通信原理是什么?讓我們一起來(lái)了解下。
Socket指套接字,就是對(duì)網(wǎng)絡(luò)中不同主機(jī)上的應(yīng)用進(jìn)程之間進(jìn)行雙向通信的端點(diǎn)的抽象。一個(gè)套接字就是網(wǎng)絡(luò)上進(jìn)程通信的一端,提供了應(yīng)用層進(jìn)程利用網(wǎng)絡(luò)協(xié)議交換數(shù)據(jù)的機(jī)制。從所處的地位來(lái)講,套接字上聯(lián)應(yīng)用進(jìn)程,下聯(lián)網(wǎng)絡(luò)協(xié)議棧,是應(yīng)用程序通過(guò)網(wǎng)絡(luò)協(xié)議進(jìn)行通信的接口,是應(yīng)用程序與網(wǎng)絡(luò)協(xié)議棧進(jìn)行交互的接口。
Socket保證了不同計(jì)算機(jī)之間的通信,也就是網(wǎng)絡(luò)通信。對(duì)于網(wǎng)站,通信模型是服務(wù)器與客戶(hù)端之間的通信。兩端都建立了一個(gè)Socket對(duì)象,然后通過(guò)Socket對(duì)象對(duì)數(shù)據(jù)進(jìn)行傳輸。通常服務(wù)器處于一個(gè)無(wú)限循環(huán),等待客戶(hù)端的連接。
套接字是通信的基石,是支持TCP/IP協(xié)議的路通信的基本操作單元。可以將套接字看作不同主機(jī)間的進(jìn)程進(jìn)行雙間通信的端點(diǎn),它構(gòu)成了單個(gè)主機(jī)內(nèi)及整個(gè)網(wǎng)絡(luò)間的編程界面。套接字存在于通信域中,通信域是為了處理一般的線(xiàn)程通過(guò)套接字通信而引進(jìn)的一種抽象概念。套接字通常和同一個(gè)域中的套接字交換數(shù)據(jù),各種進(jìn)程使用這個(gè)相同的域互相之間用Internet協(xié)議簇來(lái)進(jìn)行通信,套接字還有以下類(lèi)型:
1、流套接字
流套接字用于提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù)。該服務(wù)將保證數(shù)據(jù)能夠?qū)崿F(xiàn)無(wú)差錯(cuò)、無(wú)重復(fù)送,并按順序接收。流套接字之所以能夠?qū)崿F(xiàn)可靠的數(shù)據(jù)服務(wù),原因在于其使用了傳輸控制協(xié)議,即TCP協(xié)議。
2、數(shù)據(jù)報(bào)套接字
數(shù)據(jù)報(bào)套接字提供一種無(wú)連接的服務(wù)。該服務(wù)并不能保證數(shù)據(jù)傳輸?shù)目煽啃?數(shù)據(jù)有可能在傳輸過(guò)程中丟失或出現(xiàn)數(shù)據(jù)重復(fù),且無(wú)法保證順序地接收到數(shù)據(jù)。數(shù)據(jù)報(bào)套接字使用UDP協(xié)議進(jìn)行數(shù)據(jù)的傳輸。由于數(shù)據(jù)報(bào)套接字不能保證數(shù)據(jù)傳輸?shù)目煽啃裕瑢?duì)于有可能出現(xiàn)的數(shù)據(jù)丟失情況,需要在程序中做相應(yīng)的處理 。
3、原始套接字
原始套接字與標(biāo)準(zhǔn)套接字(標(biāo)準(zhǔn)套接字指的是前面介紹的流套接字和數(shù)據(jù)報(bào)套接字)的區(qū)別在于:原始套接字可以讀寫(xiě)內(nèi)核沒(méi)有處理的IP數(shù)據(jù)包,而流套接字只能讀取TCP協(xié)議的數(shù)據(jù),數(shù)據(jù)報(bào)套接字只能讀取UDP協(xié)議的數(shù)據(jù)。因此,如果要訪(fǎng)問(wèn)其他協(xié)議發(fā)送的數(shù)據(jù)必須使用原始套接。
今天的分享就是這些,希望能幫助大家。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com