python基礎一:網路通訊資料傳輸

coldplay.xixi
發布: 2021-02-19 10:03:16
轉載
2709 人瀏覽過

python基礎一:網路通訊資料傳輸

免費學習推薦:python教學(影片)

python實作網路通訊資料傳輸(基礎知識(一))

  • # 前言
  • 基礎知識學習
    • 一、同步非同步
    • # 二、 什麼是socket
    • 三、socket套接字的分類
      • 1、串流格式套接字SOCK_STREAM
      • 2、資料封包格式套接字(SOCK_DGRAM)
    • 四、IP位址、MAC位址、連接埠位址
  • 結束語

前言

#我不是通訊資訊專業的,但最近接觸了一些這方面的知識感覺挺有意思就學習了一下,並將學習結果記錄在這裡,以便給更多人學習,要是能得到大佬的指點就美滋滋啦! ! !

基礎知識學習

一、同步非同步

  • 同步就是整個處理過程順序執行,當各個過程都執行完畢,並回傳結果。是一種線性執行的方式,執行的流程不能跨越。一般用於流程性比較強的程序,例如使用者登錄,需要對使用者驗證完成後才能登入系統。
    (發送方發一個,接收方接收一個,是同步的。)
  • #非同步則只是發送了呼叫的指令,呼叫者無需等待被呼叫的方法完全執行完畢;而是繼續執行下面的流程。是一種並行處理的方式,不必等待一個程式執行完,可以執行其它的任務,例如頁面資料載入過程,不需要等所有資料取得後再顯示頁面。
    (發送方發送數據,接收方有一個快取區,可以按照自己的規律去接受,當然發送方也可按照自己的規則去發送,兩者是異步的)

二、 什麼是socket

  • #socket 的原意是“插座”,在電腦通訊領域,socket被翻譯為“套接字”,它是計算機之間進行通信的一種約定或一種方式。透過 socket 這種約定,電腦之間建立網路連線。
  • 為了方便理解,我們可以類比插座,我們把插頭插到插座上就能從電網獲得電力供應,同樣,為了與遠端電腦進行資料傳輸,需要連接到因特網,而socket 就是用來連接到因特網的工具。
  • 與UNIX/Linux 不同的是,Windows 會區分socket 和文件,Windows 就把socket 當做一個網路連線來對待,因此需要呼叫專門針對socket 而設計的資料傳輸函數,針對普通檔案的輸入輸出函數就無效了。

三、socket套接字的分類

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

1、流格式套接字SOCK_STREAM

  • #有以下幾個特徵:
    資料在傳輸過程中不會消失;
    資料是依照順序傳輸的;
    資料的傳送和接收是異步的。
  • 它使用了 TCP 協定(The Transmission Control Protocol,傳輸控制協定),TCP 協定會控制你的資料按照順序到達並且沒有錯誤。
    強調高品質。

2、資料報格式套接字(SOCK_DGRAM)

  • 電腦只管傳輸數據,不作資料校驗,如果資料在傳輸中損壞,或沒有到達另一台計算機,是沒有辦法補救的。也就是說,數據錯了就錯了,無法重傳。因為資料報套接字所做的校驗工作少,所以在傳輸效率方面比流格式套接字高。
  • 它有以下特徵:
    強調快速傳輸而非傳輸順序;
    傳輸的資料可能遺失也可能損毀;
    限制每次傳輸的資料大小;
    資料的發送和接收是同步的。
    資料封包套接字也使用 IP 協定作路由,使用 UDP 協定(User Datagram Protocol,使用者資料報協定)。
  • 注意: SOCK_DGRAM 沒有想像中的糟糕,不會頻繁的遺失數據,資料錯誤只是小機率事件。

四、IP位址、MAC位址、連接埠位址

  • IP位址:是Internet Protocol Address 的縮寫,翻譯為「網路協定位址」。目前大部分軟體使用 IPv4 位址,但 IPv6 也正在被人們接受,尤其是在教育網中,已經大量使用。
    對於IPV4,一個電腦一個IP位址是不切實際的,所以一般是一個區域網路一個IP位址。路由器會根據 IP 位址找到對方的地裡位置,路由器有非常有效率且有智慧的演算法,很快就會找到目標區域網路。
  • MAC位址:是實體位址,一個區域網路位址有多個電腦的MAC位址,封包中除了會附帶對方的IP 位址,也會附帶對方的MAC 位址,當封包達到區域網路以後,路由器/交換機會根據封包中的MAC 位址找到對應的電腦
  • 連接埠位址:一台電腦可以同時提供多種網路服務,例如Web 服務(網站)、FTP 服務(檔案傳輸服務)、SMTP 服務(郵件信箱服務)等,只有IP 位址和MAC 位址,電腦雖然可以正確接收到封包,但是卻不知道要將封包交給哪個網路程式來處理,所以通訊失敗。
    為了區分不同的網路程序,電腦會為每個網路程式指派一個獨一無二的連接埠號碼(Port Number)。連接埠(Port)是一個虛擬的、邏輯上的概念。可以將連接埠理解為一扇門,資料通過這道門流入流出,每道門有不同的編號,就是連接埠號碼。如下圖所示:
    python基礎一:網路通訊資料傳輸
  • 補充:今天剛剛看了下 字串埠和連接埠 的概念:
    串列埠是I/O通訊的接口,是硬體範疇,因為使用了串列的訊號通訊而簡稱串口。
    連接埠(指一般的PC機作業系統中,單晶片不算)只是一個16位元的數字標識,用來在網路通訊中標識不同的通訊進程,是作業系統定義的,就是說沒有作業系統的話也沒有連接埠的概念

結束語

最近學習了挺多有關通訊的東西,希望拿出來跟大家分享一下,本文只是接下來幾篇中的開頭,做些基礎準備,接下來還準備發些相關知識最後會準備幾個例子供大家參考! ! !
欲知後事如何,請聽下回分解!

免費學習推薦:python影片教學

以上是python基礎一:網路通訊資料傳輸的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!