0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

網(wǎng)絡(luò)測(cè)試小助手完成套接字的創(chuàng)建使用過(guò)程分析

冬至配餃子 ? 來(lái)源:多蘭多 ? 作者:Toranto ? 2022-08-18 18:16 ? 次閱讀

套接字

一、網(wǎng)絡(luò)中如何進(jìn)行通信

首要解決的問(wèn)題是如何標(biāo)識(shí)一個(gè)進(jìn)程,否則通信無(wú)從談起。

其實(shí)TCP、IP協(xié)議族已經(jīng)幫我們解決了這個(gè)問(wèn)題,網(wǎng)絡(luò)層的IP地址可以唯一標(biāo)識(shí)網(wǎng)絡(luò)中的主機(jī),傳輸層的“協(xié)議+端口”可以唯一標(biāo)識(shí)主機(jī)中的應(yīng)用程序(進(jìn)行)。

二、套接字

socket(簡(jiǎn)稱(chēng)套接字)是進(jìn)程間通信的一種方式。它與其他進(jìn)程間通信的一個(gè)主要不同是,它能實(shí)現(xiàn)不同主機(jī)間的進(jìn)程通信,我們網(wǎng)絡(luò)上各種各樣的服務(wù)大多是基于socket來(lái)完成通信的。例如我們每天瀏覽網(wǎng)頁(yè)、qq聊天、收發(fā)email等等。

socket方法有兩個(gè)參數(shù)

address family:可以選擇

AF_INET

(用于internet進(jìn)程間通信)或者

AF_UNIX

(用于同一臺(tái)機(jī)器進(jìn)程間通信),實(shí)際工作中常用AF_INET;② Type:套接字類(lèi)型,可以是

SOCK_STREAM

(流式套接字,主要用于TCP協(xié)議)或者

SOCK_DGRAM

(數(shù)據(jù)包套接字,主要用于UDP協(xié)議)

創(chuàng)建套接字:

poYBAGL-EAaADA0IAABS8pXYHro557.png

UDP協(xié)議

一、UDP協(xié)議介紹

UDP----用戶(hù)數(shù)據(jù)報(bào)協(xié)議,是一個(gè)無(wú)連接的簡(jiǎn)單地面向數(shù)據(jù)報(bào)的傳輸層協(xié)議。無(wú)連接指的是單方面的,就好比寄信和打電話(huà),寄出去的信件可能在中途丟失,但是打電話(huà)不會(huì),建立了連接就可以通話(huà),沒(méi)建立連接無(wú)法傳輸信息。

UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證他們能到達(dá)目的地。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶(hù)和服務(wù)器之間建立一個(gè)鏈接,且沒(méi)有超時(shí)重發(fā)等機(jī)制,故而傳輸速度很快。

UDP是一種面向無(wú)連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時(shí)間以及內(nèi)容的正確性都是不能保證的。

特點(diǎn)(了解):UDP是面向無(wú)連接的通訊協(xié)議,UDP數(shù)據(jù)包括目的端口號(hào)和源端口號(hào)信息,由于通訊不需要連接,所以可以實(shí)現(xiàn)廣播發(fā)送。UDP傳輸數(shù)據(jù)時(shí)有大小限制,每個(gè)被傳輸?shù)臄?shù)據(jù)報(bào)必須限定在64KB之內(nèi)。UDP是一個(gè)不可靠的協(xié)議,發(fā)送方所發(fā)送的數(shù)據(jù)報(bào)并不一定以相同的次序到達(dá)接收方。

適用情況:

UDP是面向消息的協(xié)議,通信時(shí)不需要建立連接,數(shù)據(jù)的傳輸自然是不可靠的,UDP一般用于多點(diǎn)通信和實(shí)時(shí)的數(shù)據(jù)業(yè)務(wù),比如:

語(yǔ)音廣播

視頻

qq

TFTP(簡(jiǎn)單文件傳送)

SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)

RIP(路由信息協(xié)議,如報(bào)告股票市場(chǎng),航空信息)

DNS(域名解析)

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

二、網(wǎng)絡(luò)調(diào)試助手

接下來(lái)我們需要借助網(wǎng)絡(luò)測(cè)試小助手來(lái)完成套接字的創(chuàng)建使用過(guò)程:

poYBAGL-ECuAPlZ1AAEQi6ylqrY127.png

三、示例

udp網(wǎng)絡(luò)程序-發(fā)送數(shù)據(jù):①創(chuàng)建套接字;②發(fā)送、接收數(shù)據(jù);③關(guān)閉套接字。

poYBAGL-EFaABl7DAAF7zfaGkDw643.png

我們點(diǎn)擊運(yùn)行程序之后,先不要輸入信息,打開(kāi)網(wǎng)絡(luò)調(diào)試助手,進(jìn)行連接。

poYBAGL-EG-AajpgAAEtZ-jjBcQ597.png

輸入你好!我們就可以在網(wǎng)絡(luò)測(cè)試助手上收到消息。

poYBAGL-EI-AERNfAABo2BZ6dNs883.pngpYYBAGL-EJSAJVSnAAE1YJLAmes967.png

這次在網(wǎng)絡(luò)測(cè)試助手上發(fā)送消息:你是GG還是MM?

poYBAGL-EMOAYlxXAAElglTeifI636.pngpoYBAGL-EMmAVHZBAAFNAUwuDmM770.pngpYYBAGL-EM-ANyxVAABILOaz0m8719.png

這是兩次print不同的表達(dá)結(jié)果。

pYYBAGL-EOWACGi1AACmi9EObno221.png

其實(shí),使用from socket import *會(huì)在創(chuàng)建套接字的時(shí)候使代碼顯得更加簡(jiǎn)潔凝練,因?yàn)樗鼘?dǎo)入了所有功能。

poYBAGL-EPaAK2pcAAAsPOY0or4678.png


四、UDP網(wǎng)絡(luò)通信過(guò)程

poYBAGL-EQuAMcrZAADEu2jY0C8666.png

和快遞原理是差不多的。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Socket
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    34611
  • SNMP
    +關(guān)注

    關(guān)注

    0

    文章

    82

    瀏覽量

    29695
  • UDP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    12670
  • TCPIP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    11912
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【MiCOKit試用體驗(yàn)】慶科MiCO系統(tǒng)篇(5)MiCO 套接

    ,簡(jiǎn)單的說(shuō)就是通信的兩方的一種約定,用套接中的相關(guān)函數(shù)來(lái)完成通信過(guò)程。Socket可以看成在兩個(gè)程序進(jìn)行通訊連接中的一個(gè)端點(diǎn),是連接應(yīng)用程序和網(wǎng)絡(luò)
    發(fā)表于 10-24 17:05

    UNIX域套接

    UNIX域套接用于在同一臺(tái)計(jì)算機(jī)上運(yùn)行的進(jìn)程之間的通信。雖然因特網(wǎng)域套接可用于同一目的,但UNIX域套接
    發(fā)表于 09-02 11:59

    命名UNIX域套接

    雖然socketpair函數(shù)能創(chuàng)建一對(duì)相互連接的套接,但是每一個(gè)套接都沒(méi)有名字。這意味著無(wú)關(guān)進(jìn)程不能使用它們。如果我們?cè)噲D綁定同一地址時(shí)
    發(fā)表于 09-02 14:45

    vrf套接通信

    應(yīng)用程序代碼的修訂版。我想>把這個(gè)結(jié)果帶回VEE程序。有沒(méi)有人這樣做過(guò)>已經(jīng)?我不確定,但我想我可能要在UNIX端創(chuàng)建一個(gè)套接端口>,因?yàn)槲也淮_定我是否正在尋求幫助。>>
    發(fā)表于 09-05 09:42

    端點(diǎn)和套接怎么配置

    我有3個(gè)端點(diǎn)2個(gè)散列端點(diǎn)和1個(gè)端點(diǎn)。我想實(shí)現(xiàn)一個(gè)SLaveFIFO接口。是否有一個(gè)消費(fèi)者的P-端口套接足以將數(shù)據(jù)從2個(gè)輸出端點(diǎn)傳輸出去,我是否應(yīng)該創(chuàng)建另一個(gè)消費(fèi)者P-端口套接
    發(fā)表于 02-12 14:00

    STM32例程能否與MFC網(wǎng)絡(luò)套接通信?

    如題。。想自己寫(xiě)一個(gè)PC上的MFC界面。不要求太高的實(shí)時(shí)性和過(guò)大過(guò)高的傳輸數(shù)據(jù)量,偶爾一次傳輸幾十節(jié)即可,不知道STM32例程能否與MFC網(wǎng)絡(luò)套接通信。如果可以就入手一套了,另外,
    發(fā)表于 08-02 04:36

    如何通過(guò)socket系統(tǒng)調(diào)用創(chuàng)建一個(gè)套接

    面試被問(wèn)到TCP/UDP的bind函數(shù)設(shè)計(jì),所以前來(lái)補(bǔ)一下套接部分的內(nèi)容套接:進(jìn)程間通信的方法:可以在同一臺(tái)機(jī)器或者網(wǎng)絡(luò)上不同計(jì)算機(jī)上的
    發(fā)表于 12-24 06:38

    一文讀懂RT-Thread的SAL套接抽象層

    信息,用于將創(chuàng)建的 Socket 套接綁定到指定的網(wǎng)卡對(duì)象。下面示例完成通過(guò)傳入的網(wǎng)卡名稱(chēng)綁定該網(wǎng)卡 IP 地址并和服務(wù)器進(jìn)行連接的過(guò)程
    發(fā)表于 04-08 15:44

    lpc54s018套接創(chuàng)建失敗的原因?

    我正在使用lpc54s018我正在嘗試創(chuàng)建套接編程但是我發(fā)現(xiàn)套接創(chuàng)建失敗所以請(qǐng)幫助我這是什么
    發(fā)表于 04-04 08:44

    如何在iMXRT1176上的LwIP中使用TCP套接?

    使用原始 API) 2) OS模式可以使用Socket API和Raw API 3) lwip_ping_freertos 示例使用套接 API 我的問(wèn)題是,在創(chuàng)建套接
    發(fā)表于 06-02 10:10

    Windows網(wǎng)絡(luò)編程的原始套接詳細(xì)說(shuō)明

    原始套接都是使用 S O C K _ R AW這個(gè)套接類(lèi)型來(lái)創(chuàng)建的,而且目前只有 Wi n s o c
    發(fā)表于 03-21 08:00 ?1次下載
    Windows<b class='flag-5'>網(wǎng)絡(luò)</b>編程的原始<b class='flag-5'>套接</b><b class='flag-5'>字</b>詳細(xì)說(shuō)明

    DN93-PCMCIA套接交換

    DN93-PCMCIA套接交換
    發(fā)表于 04-19 18:20 ?14次下載
    DN93-PCMCIA<b class='flag-5'>套接</b><b class='flag-5'>字</b>交換

    Socket套接的原理說(shuō)明

    和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱(chēng)為套接 (Socket)的接口,區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接。 生成套接
    的頭像 發(fā)表于 06-18 19:16 ?1765次閱讀
    Socket<b class='flag-5'>套接</b><b class='flag-5'>字</b>的原理說(shuō)明

    網(wǎng)絡(luò)系統(tǒng)調(diào)用網(wǎng)絡(luò)套接入口函數(shù)

    網(wǎng)絡(luò)套接入口函數(shù) //所有的網(wǎng)絡(luò)套接系統(tǒng)調(diào)用函數(shù)(socket bind listen co
    的頭像 發(fā)表于 07-24 11:02 ?422次閱讀

    套接socket包含哪些參數(shù)

    套接(Socket)是計(jì)算機(jī)網(wǎng)絡(luò)中最基本的通信抽象,它定義了兩個(gè)進(jìn)程間通信的端點(diǎn)。在TCP/IP協(xié)議棧中,套接是實(shí)現(xiàn)
    的頭像 發(fā)表于 08-16 11:02 ?275次閱讀