您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python實現網絡通信數據傳輸的示例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
前言
基礎知識學習
1、流格式套接字SOCK_STREAM
2、數據報格式套接字(SOCK_DGRAM)
一、同步異步
二、 什么是 socket
三、socket套接字的分類
四、IP地址、MAC地址、端口地址
結束語
我不是通信信息專業的,但是最近接觸了一些這方面的知識感覺挺有意思就學習了一下,并將學習結果記錄在這里,以便給更多人學習,要是能得到大佬的指點就美滋滋啦!!!
同步就是整個處理過程順序執行,當各個過程都執行完畢,并返回結果。是一種線性執行的方式,執行的流程不能跨越。一般用于流程性比較強的程序,比如用戶登錄,需要對用戶驗證完成后才能登錄系統。
(發送方發一個,接收方接收一個,是同步的。)
異步則是只是發送了調用的指令,調用者無需等待被調用的方法完全執行完畢;而是繼續執行下面的流程。是一種并行處理的方式,不必等待一個程序執行完,可以執行其它的任務,比如頁面數據加載過程,不需要等所有數據獲取后再顯示頁面。
(發送方發送數據,接收方有一個緩存區,可以按照自己的規律去接受,當然發送方也可按照自己的規律去發送,兩者是異步的)
socket 的原意是“插座”,在計算機通信領域,socket 被翻譯為“套接字”,它是計算機之間進行通信的一種約定或一種方式。通過 socket 這種約定,計算機之間建立網絡連接。
為了方便理解,我們可以類比插座,我們把插頭插到插座上就能從電網獲得電力供應,同樣,為了與遠程計算機進行數據傳輸,需要連接到因特網,而 socket 就是用來連接到因特網的工具。
與 UNIX/Linux 不同的是,Windows 會區分 socket 和文件,Windows 就把 socket 當做一個網絡連接來對待,因此需要調用專門針對 socket 而設計的數據傳輸函數,針對普通文件的輸入輸出函數就無效了。
主要常用兩種是流格式套接字(SOCK_STREAM)和數據報格式套接字(SOCK_DGRAM)。
有以下幾個特征:
數據在傳輸過程中不會消失;
數據是按照順序傳輸的;
數據的發送和接收是異步的。
它使用了 TCP 協議(The Transmission Control Protocol,傳輸控制協議),TCP 協議會控制你的數據按照順序到達并且沒有錯誤。
強調高質量。
計算機只管傳輸數據,不作數據校驗,如果數據在傳輸中損壞,或者沒有到達另一臺計算機,是沒有辦法補救的。也就是說,數據錯了就錯了,無法重傳。因為數據報套接字所做的校驗工作少,所以在傳輸效率方面比流格式套接字要高。
它有以下特征:
強調快速傳輸而非傳輸順序;
傳輸的數據可能丟失也可能損毀;
限制每次傳輸的數據大小;
數據的發送和接收是同步的。
數據報套接字也使用 IP 協議作路由,使用 UDP 協議(User Datagram Protocol,用戶數據報協議)。
注意: SOCK_DGRAM 沒有想象中的糟糕,不會頻繁的丟失數據,數據錯誤只是小概率事件。
IP地址:是 Internet Protocol Address 的縮寫,譯為“網際協議地址”。目前大部分軟件使用 IPv4 地址,但 IPv6 也正在被人們接受,尤其是在教育網中,已經大量使用。
對于IPV4,一個計算機一個IP地址是不現實的,所以一般是一個局域網一個IP地址。路由器會根據 IP 地址找到對方的地里位置,路由器有非常高效和智能的算法,很快就會找到目標局域網。
MAC地址:是物理地址,一個局域網地址有多個計算機的MAC地址,數據包中除了會附帶對方的 IP 地址,還會附帶對方的 MAC 地址,當數據包達到局域網以后,路由器/交換機會根據數據包中的 MAC 地址找到對應的計算機
端口地址:一臺計算機可以同時提供多種網絡服務,例如 Web 服務(網站)、FTP 服務(文件傳輸服務)、SMTP 服務(郵箱服務)等,僅有 IP 地址和 MAC 地址,計算機雖然可以正確接收到數據包,但是卻不知道要將數據包交給哪個網絡程序來處理,所以通信失敗。
為了區分不同的網絡程序,計算機會為每個網絡程序分配一個獨一無二的端口號(Port Number)。端口(Port)是一個虛擬的、邏輯上的概念。可以將端口理解為一道門,數據通過這道門流入流出,每道門有不同的編號,就是端口號。如下圖所示:
補充:今天剛剛看了下 串口和端口 的概念:
串口是I/O通訊的接口,是硬件范疇,因為使用了串行的信號通訊而簡稱串口。
端口(指一般的PC機操作系統中,單片機不算)只是一個16位的數字標識,用來在網絡通訊中標識不同的通訊進程,是操作系統定義的,就是說沒有操作系統的話也沒有端口的概念
感謝各位的閱讀!關于“python實現網絡通信數據傳輸的示例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。