#8 Python網絡編程(一)

前言

語言是用來交流的,人類語言使人與人交流,編程語言使人與機器交流,那麼問題來了,機器如何與機器交流。你是否疑惑過:為什麼我們可以使用瀏覽器查資料、為什麼我們可以使用聊天軟件聊天、為什麼我們可以通過網絡傳輸文件.etc。會與機器交流的人是少部分的,正是這少部分人讓幾乎所有人方便的使用網絡,對於這所有人來說,他們想要聊天,只需要打開一個聊天窗口,輸入文字,然後發送即可,他們並不會關注其背後的具體過程,因為背後的過程是複雜的,是由少部分人完成的。通過這本次系列的學習,你將成為少部分人!

一、網絡編程概念

1.1 網絡編程概念

網絡編程聽起來很高大上,但其實質就是進程之間的通信。再說的直白點,就是軟件間的通信,可以是同一計算機的同一軟件、同一計算機的不同軟件、不同計算機的不同軟件、不同計算機的同一軟件。(看到這裏,應該大概明白了進程就是軟件了哇)

二、網絡編程先修知識

2.1 計算機網絡五層協議體繫結構

為了介紹網絡原理,通常習慣將計算機網絡分為五層協議體繫結構,從下至上分別為:物理層、數據鏈路層、網絡層、運輸層、應用層。

《#8 Python網絡編程(一)》

2.1.1 應用層

應用層是體繫結構的最高層。直接為用戶的應用進程提供服務,主要任務是通過應用進程間的交互來完成特定的網絡應用。應用層協議定義的是應用進程間通信和交互的規則。

應用層的協議很多,例如大家熟知的HTTP協議、DNS、SMTP協議、FTP等等

『防抄襲:讀者請忽略這段文字,文章作者是博客園的MinuteSheep

2.1.2 運輸層

運輸層的主要任務是負責向兩台主機中進程之間的通信提供通用的數據傳輸服務。

運輸層主要有以下兩種協議:

傳輸控制協議TCP(Transmission Control Protool)—— 提供面向連接的、可靠的數據傳輸服務

用戶數據協議UDP(User Datagram Protool)—— 提供無連接的、盡最大努力的數據傳輸服務

2.1.3 網絡層

網絡層負責為分組交換網上的不同主機提供通信服務。

網絡層最常用的協議為IP(Internet Protool)協議

2.1.4 數據鏈路層

兩台主機之間的數據傳輸,總是在一段一段的鏈路上傳送的,這就需要使用專門的鏈路層協議。

2.1.5 物理層

物理層主要的任務是傳送比特流。

2.2 圖解數據在各層之間的傳遞過程

《#8 Python網絡編程(一)》

上圖是從《計算機網絡》(第七版,謝希仁)掃描下來的,這幅圖显示了整個計算機網絡體系的傳遞過程。

假定主機1的應用進程AP1向主機2的應用進程AP2傳送數據。AP1先將其數據交給本主機的第5層(應用層)。第5層加上必要的控制信息H5就變成了下一層的數據單元。第4層(運輸層)收到這個數據單元后,加上本層的控制信息H4,在交給第3層(網絡層),成為第3層的數據單元。一次類推,不過到了第2層(數據鏈路層)后,控制信息被分為兩部分,分別加到本層數據單元的首部(H2)和尾部(T2);而第1層(物理層)由於是比特流的傳送,所以不在加上控制信息。

當這串的比特流離開主機1經網絡的物理媒體傳送到路由器時,就從路由器的第1層依次上升到第3層。每層都根據控制信息進行必要的操作,然後將控制信息剝去,將該層剩下的數據單元上交給更高的一層。當分組上升到了第3層時,就根據首部中的目的地址查找路由器中的轉發表,找出轉發分組的接口,然後往下傳送到第2層,加上新的首部和尾部后,再到最下面的第1層,然後在物理媒體上把每-個比特發送出去。

當這一串的比特流離開路由器到達目的站主機2時,就從主機2的第1層按照上面講過的方式,依次上升到第5層。最後,把應用進程AP1發送的數據交給目的站的應用進程AP2。

『防抄襲:讀者請忽略這段文字,文章作者是博客園的MinuteSheep

2.3 TCP/IP簡介

了解了上面五層網絡體繫結構之後,兩台主機之間想要通信,那麼最重要的問題就是:要給誰發?怎麼發?發送的信息是否可以沒有任何錯誤的到達?

2.3.1 IP協議

為了解決要給誰發?怎麼發的問題,IP協議就誕生了。

  • 為每一台計算機做了標識,這個標識就是IP地址,例如233.233.233.233,有了這個標識,就可以知道給誰發送了
  • IP協議負責將數據從一台主機發送到另一台主機。發送方式是將數據劃分為一段一段的,以IP包的形式發出去

2.3.2 TCP協議

發是能發了,但是能不能無差錯的送到對方手中,又成了一個難題,TCP的誕生解決了這個問題:

  • TCP是建立在IP協議之上的
  • TCP通過3次握手的方式建立連接,然後對IP包進行編號,保證每個IP包可以順利發送到對方手中,如果有一個包出現差錯,就重新發送這個包

《#8 Python網絡編程(一)》

 上圖就是TCP建立連接(三次握手🤝)和建立連接后發送數據的過程,了解即可。

小結

有了這些基本的網絡知識以後,下一步就要正式進行網絡編程了,下次見!

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *