python基礎知識之二:網路通訊資料傳輸

coldplay.xixi
發布: 2021-02-20 09:43:39
轉載
2606 人瀏覽過

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

python基礎知識之二:網路通訊資料傳輸

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

  • # 前言
  • 基礎知識學習
    • 一、OSI 模型
    • 二、TCP、IP協定族:
    • 三、python中字串的編碼方式
  • 結束語

前言

第二彈來了!今天還是上些基礎知識吧,紮實的基礎才是深入學習的不二法門! ! !

基礎學習

# 一、OSI 模型

############################
  • OSI 模型把網路通訊的工作分成7 層,從下到上分別是物理層、資料鏈結層、網路層、傳輸層、會話層、表示層和應用層
    OSI 只是存在於概念和理論上的一種模型,它的缺點是分層太多,增加了網路工作的複雜性,所以沒有大規模應用。後來人們對OSI 進行了簡化,合併了一些層,最後只保留了4 層,從下到上分別是接口層、網絡層、傳輸層和應用層,這就是大名鼎鼎的TCP/IP 模型
  • 這個網路模型究竟是做什麼呢?簡而言之就是進行資料封裝的。
  • 資料封裝原理: 我們平常使用的程式(軟體)一般都是透過應用層來存取網路的,程式產生的資料會一層一層往下傳輸,直到最後的網路介面層,就透過網路線送到網路上去了。資料每往下走一層,就會被這一層的協定增加一層包裝,等到送到網路上時,已經比原始資料多了四層包裝。整個數據封裝的過程就像俄羅斯娃娃。當另一台電腦接收到資料包時,會從網路介面層再一層一層往上傳輸,每傳輸一層就拆開一層包裝,直到最後的應用層,就得到了最原始的數據,這才是程式要使用的數據。為資料加包裝的過程,其實就是在資料的頭部增加一個標誌(一個資料區塊),表示資料經過了這一層,我已經處理過了。將資料拆包裝的過程正好相反,就是去掉資料頭部的標誌,讓它逐漸現出原形。
    python基礎知識之二:網路通訊資料傳輸
    (OSI 七層網路模型與TCP/IP 四層網路模型的比較)
  • ##兩台電腦進行通訊時,必須遵守以下原則 (1) 必須是
    同一層次進行通信,例如,A 電腦的應用層和B 電腦的傳輸層就不能通信,因為它們不在一個層次,資料的拆包會遇到問題。 (2) 每一層的功能都必須相同,也就是擁有
    完全相同的網路模型。如果網路模型都不同,那不就亂套了,誰都不認識誰。 資料只能逐層傳輸,不能躍層。
    (3) 每一層可以使用下層提供的服務,並
    向上層提供服務

二、TCP、IP協定族:##常用到的socket 程式設計是基於TCP 和UDP 協定的,它們的層級關係如下圖所示:


python基礎知識之二:網路通訊資料傳輸

#三、python中字串的編碼方式

python中要把字串的編碼方式轉換成utf-8的形式!

  • 同樣一個數,你可以選不同的方式來表示它,選用什麼方案,就是對Unicode 的一種編碼方法(utf-8是Unicode編碼方式的一種具體實現)。
  • Python 內部使用Unicode 來表示字串,所以想要print什麼漢字(英文字母和數字的Unicode和utf-8的編碼是一樣的)的就要保證是Unicode的編碼方式,如果是「utf-8」的編碼方式(輸出就是一堆二進位代碼,一個漢字的utf-8編碼為三個字節,也就是三段二進位表示,如下圖),可以用.decode(“utf-8”)來解碼。而在儲存到硬碟或送到網路上(用到socket等和通訊有關的),需要轉成 UTF-8。
    python基礎知識之二:網路通訊資料傳輸
    (utf-8編碼在python裡的輸出結果)
  • #為什麼在內部不繼續使用UTF-8,那樣不就不用轉換了嗎?這個就涉及 UTF-8 的一個缺點:計算字串長度和查找子字串非常沒效率。在使用UCS2 的時候,要想知道這個字串有多長,只要看一下它佔了幾個字節,然後除個2 就可以了,而UTF-8 的話,就需要一個字符一個字符的數出來。在做子字串搜尋的時候,因為不知道下一個字元佔幾個字節,所以那些高效率的搜尋演算法也都不靈了。

結束語

#下次我會拿出一些簡單的例子,以幫助大家理解和實際操作。最後希望大家看完,順手點一個小小的讚,給點鼓勵吧,一篇寫出來兩個多小時過去了,沒有任何利益的行為,只是為了知識共享,共同學習,一起成長! ! ! (偷偷說,我看完別人的文章也不點贊,這不是好習慣,我馬上改的,嗚嗚)

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

#

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

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