Python_TCP/IP簡介

本篇將開始介紹Python的網絡編程,更多內容請參考:Python學習指南html

自從互聯網誕生以來,如今基本上全部的程序都是網絡程序,不多有單機版的程序了。編程

計算機網絡就是把各個計算機鏈接在一塊兒,讓網絡中的計算機能夠互相通訊。網絡編程就是如何在程序中實現兩臺計算機的通訊。瀏覽器

舉個例子,當你使用瀏覽器訪問新浪網時,你的計算機就和新浪網的某臺服務器經過互聯網鏈接起來了,而後,新浪的服務器把網頁內容做爲數據經過互聯網傳輸到你的電腦上了。服務器

因爲你的電腦上可能不止瀏覽器,還有QQ、Skype、Dropbox、網易雲音樂等,不一樣的程序鏈接的別的計算機也不一樣,因此,更確切地說,網絡通訊是兩臺計算機上的兩個進程之間的通訊。好比,瀏覽器進程和新浪服務器上的某個Web服務器進程在通訊,而QQ進程是和騰訊的某個服務器上的某個進程在通訊。網絡

網絡編程對全部開發語言都是同樣的,Python也不例外。用Python進行網絡編程,就是在Python程序自己這個進程內,鏈接別的服務器進程的通訊端口進行通訊。tcp

本章咱們將詳細介紹Python網絡編程的概念和最主要的兩種網絡類型的編程。學習

TCP/IP簡介

雖然你們對互聯網很熟悉,可是計算機網絡的出現比互聯網要早得多。ui

計算機爲了聯網,就必須規定通訊協議,早期的計算機網絡,都是由各廠商本身規定一套協議,IBM、Apple和Microsoft都有各自的網絡協議,互不兼容,這就比如一羣人有的說英語,有的說中文,有的說德語,說同一種語言的人能夠互相交流,不一樣的語言之間就不行了。操作系統

爲了把全世界的全部不一樣類型的計算機都鏈接起來,就必須規定一套全球通用的協議,爲了實現互聯網這個目標,互聯網協議簇(Internet Protocol Suite)就是通用協議標準。Internet是由inter和net兩個單詞組合起來的,原意就是鏈接「網絡」的網絡,有了Internet,任何私有網絡,只要支持這個協議,就能夠聯入互聯網。計算機網絡

由於互聯網協議包含了上百種協議標準,可是最重要的兩個協議是TCP和IP協議,因此,你們把互聯網的協議簡稱TCP/IP協議。

通訊的時候,雙方必須知道對方的標識,比如發郵件必須知道對方的郵件地址。互聯網上每一個計算機的惟一標識就是IP地址,相似123.123.123.123。若是一臺計算機同時接入到兩個或更多的網絡,好比路由器,它就會有兩個或多個IP地址,因此,IP地址對應的其實是計算機的網絡接口,一般是網卡。

IP協議負責把數據從一臺計算機經過網絡發送到另外一臺計算機。數據被分割成一小塊一小塊,而後經過IP包發送出去。因爲互聯網鏈路複雜,兩臺計算機之間常常有多條線路,所以,路由器就負責決定如何把一個IP包轉發出去。IP包的特色是按塊發送,途徑多個路由,但不保證能到達,也不保證順序到達。
ip轉包過程

TCP協議則是創建在IP協議之上的。TCP協議負責在兩臺計算機之間創建可靠鏈接,保證數據包按順序到達。TCP協議會經過握手創建鏈接,而後,對每一個IP包編號,確保對方按順序收到,若是包丟掉了,就自動重發。

許多經常使用的更高級的協議都是創建在TCP協議基礎上的,好比用於瀏覽器的HTTP協議、發送郵件的SMTP協議等。

一個IP包除了包含要傳輸的數據外,還包含源IP地址和目標IP地址,源端口和目標端口。

端口有什麼做用?在兩臺計算機通訊時,只發IP地址是不夠的,由於同一臺計算機上跑着多個網絡程序。一個IP包來了以後,究竟是交給瀏覽器仍是QQ,就須要端口號來區分。每一個網絡程序都向操做系統申請惟一的端口號,這樣,兩個進程在兩臺計算機之間創建網絡鏈接就須要各自的IP地址和各自的端口號。

一個進程也可能同時與多個計算機創建連接,所以它會申請不少端口。

瞭解了TCP/IP協議的基本概念,IP地址和端口的概念,咱們就能夠開始進行網絡編程了。

相關文章
相關標籤/搜索