亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Socket通信過程原理及相關(guān)系統(tǒng)調(diào)用

        2015-07-19 06:13:26王進(jìn)文四川大學(xué)計(jì)算機(jī)學(xué)院四川成都610207
        中國新技術(shù)新產(chǎn)品 2015年7期
        關(guān)鍵詞:端口號服務(wù)器端IP地址

        王進(jìn)文(四川大學(xué)計(jì)算機(jī)學(xué)院,四川 成都 610207)

        Socket通信過程原理及相關(guān)系統(tǒng)調(diào)用

        王進(jìn)文
        (四川大學(xué)計(jì)算機(jī)學(xué)院,四川 成都 610207)

        通過介紹Socket的基本組成結(jié)構(gòu)及其發(fā)揮的作用,論述Socket通信的整個(gè)過程并用C語言加以簡要實(shí)現(xiàn),以闡明Socket通信過程原理及相關(guān)系統(tǒng)調(diào)用。

        Socket;網(wǎng)絡(luò)通信;進(jìn)程通信

        1 Socket基本組成結(jié)構(gòu)

        Socket是相同主機(jī)進(jìn)程之間或者不同主機(jī)進(jìn)程之間進(jìn)行通信的主流手段之一,兩臺(tái)計(jì)算機(jī)之間的網(wǎng)絡(luò)通信可以通過在各自的系統(tǒng)中創(chuàng)建一個(gè)Socket,進(jìn)而利用它來實(shí)現(xiàn)相互之間的通信。

        那Socket究竟是什么呢?一個(gè)基本的Socket就是由本機(jī)IP,本機(jī)進(jìn)程端口,目的IP,和目的進(jìn)程端口,以及輸入輸出緩沖組成的一個(gè)數(shù)據(jù)結(jié)構(gòu)。其中前四個(gè)屬性分別用來標(biāo)識(shí)本機(jī)信息和目的計(jì)算機(jī)的信息,輸入輸出緩沖用來暫存保存通信的數(shù)據(jù)。

        2 Socket通信連接步驟

        Socket連接建立之前主要進(jìn)行兩項(xiàng)工作,第一項(xiàng)是連接建立前的兩個(gè)Socket的初始化工作,第二個(gè)是兩臺(tái)計(jì)算機(jī)通信時(shí)的“三路握手”。下面詳細(xì)說明這兩個(gè)過程(假設(shè)兩臺(tái)通信的計(jì)算機(jī)為客戶端-服務(wù)器模型,調(diào)用中用到的參數(shù),請自行查看相關(guān)API):

        (1)兩個(gè)Socket的初始化。

        服務(wù)器端

        首先,用C語言通過系統(tǒng)調(diào)用socket()函數(shù)來創(chuàng)建套接口。通過以下程序段便可以建立一個(gè)用TCP的Socket:

        int listensockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)

        其次,通過系統(tǒng)調(diào)用int bind ()函數(shù)來初始化Socket中的本地IP地址和本地端口號。通過以下語句,便可以初始化服務(wù)器端的Socket:

        bind( listensockfd, (struct sockaddr*) &saServer, sizeof (saServer));

        最后,我們通過系統(tǒng)調(diào)用listen()函數(shù)來將已經(jīng)綁定了本機(jī)IP地址和程序端口號的Socket的狀態(tài)由主動(dòng)(positive)轉(zhuǎn)換為被動(dòng)(passive)(只有處于被動(dòng)的Socket才會(huì)接受對方的信息)。并調(diào)用accept()函數(shù)來獲取已經(jīng)準(zhǔn)備好的套接字準(zhǔn)備收取數(shù)據(jù)。通過以下程序段,便可以啟動(dòng)監(jiān)聽Socket,并返回Q1隊(duì)列中和客戶端“三路握手”完成的套接字,如圖1所示。

        listen( listensockfd, 5 );

        int acceptSocket = accept(listenSocketfd, NULL, NULL );

        客戶端

        通過Socket系統(tǒng)調(diào)用建立Socket,然后初始化客戶端的IP地址和端口號,并通過connect()函數(shù)將初始化好的IP地址和端口號的數(shù)據(jù)結(jié)構(gòu)綁定在新建的Socket上,與服務(wù)器端不同的是這個(gè)數(shù)據(jù)結(jié)構(gòu)是為了初始化客戶端的IP地址和進(jìn)程端口,如圖1所示。

        圖1

        (2)兩臺(tái)計(jì)算機(jī)通信時(shí)的“三路握手”

        第一次握手:客戶端調(diào)用connect()函數(shù)將目的地(服務(wù)器端)的IP地址和進(jìn)程端口初始化的同時(shí),給內(nèi)核運(yùn)輸層發(fā)出指令,使其將封裝好(其中包含完整的四元組)的數(shù)據(jù)包(同步包,下面簡稱SYN包),通過更底層的協(xié)議層向目的地(服務(wù)器端)傳送,以發(fā)出請求。

        第二次握手:當(dāng)目的地(服務(wù)器端)收到客戶端發(fā)送的SYN包時(shí),如果請求可以通過,服務(wù)器端也通過運(yùn)輸層封裝好一個(gè)包含通過請求的SYN+ACK包,否則封裝一個(gè)拒絕請求的SYN+NACK包發(fā)送給客戶端,于此同時(shí),服務(wù)器內(nèi)核自動(dòng)創(chuàng)建一個(gè)Socket,并將已將創(chuàng)建好的監(jiān)聽套接口的本地IP地址和進(jìn)程端口拷貝到新創(chuàng)建的Socket中的本地IP地址和進(jìn)程端口中,將第一次握手過程中的SYN包中的客戶端的IP地址和端口號拷貝在新創(chuàng)建的Socket中的目的地IP地址和端口號中,然后將新創(chuàng)建的Socket放入監(jiān)聽Socket中的Q0隊(duì)列(用于放置內(nèi)核為服務(wù)器和不同客戶端通信創(chuàng)建的未完成“三路握手”Socket)中。

        第三次握手:當(dāng)客戶端收到服務(wù)器端回應(yīng)的SYN+ACK包時(shí),客戶端需要再返回給服務(wù)器一個(gè)SYN包表示已經(jīng)收到SYN+ACK包,與此同時(shí),服務(wù)器將剛才放入Q0隊(duì)列的Socket放入監(jiān)聽套接口的Q1隊(duì)列中(用于放置內(nèi)核為服務(wù)器和不同客戶端通信創(chuàng)建的已經(jīng)完成“三路握手”Socket),而客戶端通過系統(tǒng)調(diào)用accept()正是獲取的Q1隊(duì)列中的套接字。如圖2所示。

        3 通過socke進(jìn)行通信

        服務(wù)器端通過系統(tǒng)調(diào)用recv()進(jìn)行數(shù)據(jù)的獲取,客戶端可以通過調(diào)用send()進(jìn)行數(shù)據(jù)的發(fā)送。

        以下便是整個(gè)Socket通信的流程圖,如圖2所示。

        圖2

        [1] Jesse Storimer. TCP Sockets編 程[M].北京:人民郵電出版社,2013.

        TP311

        A

        猜你喜歡
        端口號服務(wù)器端IP地址
        鐵路遠(yuǎn)動(dòng)系統(tǒng)幾種組網(wǎng)方式IP地址的申請和設(shè)置
        在Docker容器中安裝應(yīng)用程序
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        基于SNMP的IP地址管理系統(tǒng)開發(fā)與應(yīng)用
        黑龍江電力(2017年1期)2017-05-17 04:25:16
        淺談以java為基礎(chǔ)的Socket通信簡介及實(shí)現(xiàn)
        青春歲月(2017年5期)2017-04-20 18:34:23
        在Windows中安裝OpenVPN
        Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
        基于Android系統(tǒng)的互動(dòng)展示APP的研究與設(shè)計(jì)
        網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
        基于Struts的Web應(yīng)用系統(tǒng)數(shù)據(jù)驗(yàn)證
        欧美放荡的少妇| 亚洲一区二区懂色av| 婷婷久久av综合一区二区三区| 久久久久亚洲av无码a片| 欧美午夜刺激影院| 亚洲人成网站免费播放| 亚洲色图视频在线播放| 国产黄色一级大片一区二区| 国产精品女老熟女一区二区久久夜 | 亚洲色图专区在线视频| 日本精品少妇一区二区三区| 白又丰满大屁股bbbbb| 香蕉国产人午夜视频在线观看 | 日韩精品无码久久久久久 | 老熟妇嗷嗷叫91九色| 天堂视频在线观看一二区| 天天躁日日躁狠狠躁欧美老妇| 免费黄色电影在线观看| 漂亮的小少妇诱惑内射系列| 亚洲午夜精品第一区二区| 亚洲人成人无码www| 人人爽人人爽人人爽人人片av| 精品国产亚洲一区二区三区演员表 | 国产视频嗯啊啊啊| 久久精品国产亚洲av豆腐| 亚洲色一区二区三区四区| 国产免费av片在线观看| 青草网在线观看| 亚洲图文一区二区三区四区 | 911国产在线观看精品| 白白色日韩免费在线观看| 18禁免费无码无遮挡不卡网站| 撕开奶罩揉吮奶头视频| 中文岛国精品亚洲一区| 日韩成人高清不卡av| 亚洲 小说区 图片区 都市| 亚洲日韩精品无码专区网站| 日本道免费精品一区二区| 精品一区二区三区国产av| 免费大片黄国产在线观看| 搡老熟女老女人一区二区|