溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python實(shí)現(xiàn)網(wǎng)絡(luò)通信數(shù)據(jù)傳輸?shù)氖纠?/h1>
發(fā)布時間:2021-02-19 11:16:49 來源:億速云 閱讀:364 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)python實(shí)現(xiàn)網(wǎng)絡(luò)通信數(shù)據(jù)傳輸?shù)氖纠膬?nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

python實(shí)現(xiàn)網(wǎng)絡(luò)通信數(shù)據(jù)傳輸

  • 前言

  • 基礎(chǔ)知識學(xué)習(xí)


    • 1、流格式套接字SOCK_STREAM

    • 2、數(shù)據(jù)報格式套接字(SOCK_DGRAM)

    • 一、同步異步

    • 二、 什么是 socket

    • 三、socket套接字的分類


    • 四、IP地址、MAC地址、端口地址

  • 結(jié)束語

前言

我不是通信信息專業(yè)的,但是最近接觸了一些這方面的知識感覺挺有意思就學(xué)習(xí)了一下,并將學(xué)習(xí)結(jié)果記錄在這里,以便給更多人學(xué)習(xí),要是能得到大佬的指點(diǎn)就美滋滋啦?。?!

基礎(chǔ)知識學(xué)習(xí)

一、同步異步

  • 同步就是整個處理過程順序執(zhí)行,當(dāng)各個過程都執(zhí)行完畢,并返回結(jié)果。是一種線性執(zhí)行的方式,執(zhí)行的流程不能跨越。一般用于流程性比較強(qiáng)的程序,比如用戶登錄,需要對用戶驗(yàn)證完成后才能登錄系統(tǒng)。
    (發(fā)送方發(fā)一個,接收方接收一個,是同步的。)

  • 異步則是只是發(fā)送了調(diào)用的指令,調(diào)用者無需等待被調(diào)用的方法完全執(zhí)行完畢;而是繼續(xù)執(zhí)行下面的流程。是一種并行處理的方式,不必等待一個程序執(zhí)行完,可以執(zhí)行其它的任務(wù),比如頁面數(shù)據(jù)加載過程,不需要等所有數(shù)據(jù)獲取后再顯示頁面。
    (發(fā)送方發(fā)送數(shù)據(jù),接收方有一個緩存區(qū),可以按照自己的規(guī)律去接受,當(dāng)然發(fā)送方也可按照自己的規(guī)律去發(fā)送,兩者是異步的)

二、 什么是 socket

  • socket 的原意是“插座”,在計算機(jī)通信領(lǐng)域,socket 被翻譯為“套接字”,它是計算機(jī)之間進(jìn)行通信的一種約定或一種方式。通過 socket 這種約定,計算機(jī)之間建立網(wǎng)絡(luò)連接。

  • 為了方便理解,我們可以類比插座,我們把插頭插到插座上就能從電網(wǎng)獲得電力供應(yīng),同樣,為了與遠(yuǎn)程計算機(jī)進(jìn)行數(shù)據(jù)傳輸,需要連接到因特網(wǎng),而 socket 就是用來連接到因特網(wǎng)的工具。

  • 與 UNIX/Linux 不同的是,Windows 會區(qū)分 socket 和文件,Windows 就把 socket 當(dāng)做一個網(wǎng)絡(luò)連接來對待,因此需要調(diào)用專門針對 socket 而設(shè)計的數(shù)據(jù)傳輸函數(shù),針對普通文件的輸入輸出函數(shù)就無效了。

三、socket套接字的分類

主要常用兩種是流格式套接字(SOCK_STREAM)和數(shù)據(jù)報格式套接字(SOCK_DGRAM)。

1、流格式套接字SOCK_STREAM

  • 有以下幾個特征:
    數(shù)據(jù)在傳輸過程中不會消失;
    數(shù)據(jù)是按照順序傳輸?shù)模?br/> 數(shù)據(jù)的發(fā)送和接收是異步的。

  • 它使用了 TCP 協(xié)議(The Transmission Control Protocol,傳輸控制協(xié)議),TCP 協(xié)議會控制你的數(shù)據(jù)按照順序到達(dá)并且沒有錯誤。
    強(qiáng)調(diào)高質(zhì)量。

2、數(shù)據(jù)報格式套接字(SOCK_DGRAM)

  • 計算機(jī)只管傳輸數(shù)據(jù),不作數(shù)據(jù)校驗(yàn),如果數(shù)據(jù)在傳輸中損壞,或者沒有到達(dá)另一臺計算機(jī),是沒有辦法補(bǔ)救的。也就是說,數(shù)據(jù)錯了就錯了,無法重傳。因?yàn)閿?shù)據(jù)報套接字所做的校驗(yàn)工作少,所以在傳輸效率方面比流格式套接字要高。

  • 它有以下特征:
    強(qiáng)調(diào)快速傳輸而非傳輸順序;
    傳輸?shù)臄?shù)據(jù)可能丟失也可能損毀;
    限制每次傳輸?shù)臄?shù)據(jù)大??;
    數(shù)據(jù)的發(fā)送和接收是同步的。
    數(shù)據(jù)報套接字也使用 IP 協(xié)議作路由,使用 UDP 協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)。

  • 注意: SOCK_DGRAM 沒有想象中的糟糕,不會頻繁的丟失數(shù)據(jù),數(shù)據(jù)錯誤只是小概率事件。

四、IP地址、MAC地址、端口地址

  • IP地址:是 Internet Protocol Address 的縮寫,譯為“網(wǎng)際協(xié)議地址”。目前大部分軟件使用 IPv4 地址,但 IPv6 也正在被人們接受,尤其是在教育網(wǎng)中,已經(jīng)大量使用。
    對于IPV4,一個計算機(jī)一個IP地址是不現(xiàn)實(shí)的,所以一般是一個局域網(wǎng)一個IP地址。路由器會根據(jù) IP 地址找到對方的地里位置,路由器有非常高效和智能的算法,很快就會找到目標(biāo)局域網(wǎng)。

  • MAC地址:是物理地址,一個局域網(wǎng)地址有多個計算機(jī)的MAC地址,數(shù)據(jù)包中除了會附帶對方的 IP 地址,還會附帶對方的 MAC 地址,當(dāng)數(shù)據(jù)包達(dá)到局域網(wǎng)以后,路由器/交換機(jī)會根據(jù)數(shù)據(jù)包中的 MAC 地址找到對應(yīng)的計算機(jī)

  • 端口地址:一臺計算機(jī)可以同時提供多種網(wǎng)絡(luò)服務(wù),例如 Web 服務(wù)(網(wǎng)站)、FTP 服務(wù)(文件傳輸服務(wù))、SMTP 服務(wù)(郵箱服務(wù))等,僅有 IP 地址和 MAC 地址,計算機(jī)雖然可以正確接收到數(shù)據(jù)包,但是卻不知道要將數(shù)據(jù)包交給哪個網(wǎng)絡(luò)程序來處理,所以通信失敗。
    為了區(qū)分不同的網(wǎng)絡(luò)程序,計算機(jī)會為每個網(wǎng)絡(luò)程序分配一個獨(dú)一無二的端口號(Port Number)。端口(Port)是一個虛擬的、邏輯上的概念??梢詫⒍丝诶斫鉃橐坏篱T,數(shù)據(jù)通過這道門流入流出,每道門有不同的編號,就是端口號。如下圖所示:
    python實(shí)現(xiàn)網(wǎng)絡(luò)通信數(shù)據(jù)傳輸?shù)氖纠?></p></li><li><p><input type=補(bǔ)充:今天剛剛看了下 串口和端口 的概念:
    串口是I/O通訊的接口,是硬件范疇,因?yàn)槭褂昧舜械男盘柾ㄓ嵍喎Q串口。
    端口(指一般的PC機(jī)操作系統(tǒng)中,單片機(jī)不算)只是一個16位的數(shù)字標(biāo)識,用來在網(wǎng)絡(luò)通訊中標(biāo)識不同的通訊進(jìn)程,是操作系統(tǒng)定義的,就是說沒有操作系統(tǒng)的話也沒有端口的概念

感謝各位的閱讀!關(guān)于“python實(shí)現(xiàn)網(wǎng)絡(luò)通信數(shù)據(jù)傳輸?shù)氖纠边@篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI