python 網(wǎng)絡編程

1 UDP

1什么是網(wǎng)絡

·網(wǎng)絡就是一種輔助雙方或者多方能夠連接在一起的工具

·如果沒有網(wǎng)絡可想單機的世界是多么的孤單

?2使用網(wǎng)絡的目的

就是為了聯(lián)通多方然后進行通信用的焦人,即把數(shù)據(jù)從一方傳遞給另外一方

前面的學習編寫的程序都是單機的,即不能和其他電腦上的程序進行通信

為了讓在不同的電腦上運行的軟件嗦锐,之間能夠互相傳遞數(shù)據(jù)碳默,就需要借助網(wǎng)絡的功能

3總結

·使用網(wǎng)絡能夠把多方鏈接在一起该抒,然后可以進行數(shù)據(jù)傳遞

·所謂的網(wǎng)絡編程就是频伤,讓在不同的電腦上的軟件能夠進行數(shù)據(jù)傳遞剂买,即進程之間的通信

2 tcp/ip 簡介

作為新時代標桿的我們,已經(jīng)離不開手機婚肆、離不開網(wǎng)絡较性,對于互聯(lián)網(wǎng)大家可能耳熟能詳秸抚,但是計算機網(wǎng)絡的出現(xiàn)比互聯(lián)網(wǎng)要早很多

1什么是協(xié)議

有的說英語吭敢,有的說中文,有的說德語暮芭,說同一種語言的人可以交流畜晰,不同的語言之間就不行了

為了解決不同種族人之間的語言溝通障礙,現(xiàn)規(guī)定國際通用語言是英語匾效,這就是一個規(guī)定舷蟀,這就是協(xié)議

2計算機網(wǎng)絡溝通用什么

現(xiàn)在的生活中,不同的計算機只需要能夠聯(lián)網(wǎng)(有線無線都可以)那么就可以相互進行傳遞數(shù)據(jù)面哼。

那么不同種類之間的計算機到底是怎么進行數(shù)據(jù)傳遞的呢野宜?

就像說不同語言的人溝通一樣,只要有一種大家都認可都遵守的協(xié)議即可魔策,那么這個計算機都遵守的網(wǎng)絡通信協(xié)議叫做TCP/IP協(xié)議

3TCP/IP協(xié)議(族)

早期的計算機網(wǎng)絡匈子,都是由各廠商自己規(guī)定一套協(xié)議,IBM闯袒、Apple和Microsoft都有各自的網(wǎng)絡協(xié)議虎敦,互不兼容

為了把全世界的所有不同類型的計算機都連接起來,就必須規(guī)定一套全球通用的協(xié)議政敢,為了實現(xiàn)互聯(lián)網(wǎng)這個目標其徙,互聯(lián)網(wǎng)協(xié)議簇(Internet Protocol Suite)就是通用協(xié)議標準。

因為互聯(lián)網(wǎng)協(xié)議包含了上百種協(xié)議標準喷户,但是最重要的兩個協(xié)議是TCP和IP協(xié)議唾那,所以蕾管,大家把互聯(lián)網(wǎng)的協(xié)議簡稱TCP/IP協(xié)議

常用的網(wǎng)絡協(xié)議如下圖所示:


網(wǎng)際層也稱為:網(wǎng)絡層

網(wǎng)絡接口層也稱為:鏈路層

3 端口


?

1什么是端口


那么TCP/IP協(xié)議中的端口指的是什么呢粘优?

端口就好一個房子的門亏推,是出入這間房子的必經(jīng)之路颜懊。


如果一個進程需要收發(fā)網(wǎng)絡數(shù)據(jù),那么就需要有這樣的端口

在linux系統(tǒng)中避诽,端口可以有65536(2的16次方)個之多龟虎!

既然有這么多,操作系統(tǒng)為了統(tǒng)一管理沙庐,所以進行了編號鲤妥,這就是端口號

2端口號

端口是通過端口號來標記的,端口號只有整數(shù)轨功,范圍是從0到65535

3端口是怎樣分配的

端口號不是隨意使用的旭斥,而是按照一定的規(guī)定進行分配。

端口的分類標準有好幾種古涧,我們這里不做詳細講解垂券,只介紹一下知名端口和動態(tài)端口

4知名端口(Well Known Ports)

知名端口是眾所周知的端口號,范圍從0到1023

80端口分配給HTTP服務

21端口分配給FTP服務

可以理解為羡滑,一些常用的功能使用的號碼是估計的菇爪,好比電話號碼110、10086柒昏、10010一樣

一般情況下凳宙,如果一個程序需要使用知名端口的需要有root權限

5動態(tài)端口(Dynamic Ports)

動態(tài)端口的范圍是從1024到65535

之所以稱為動態(tài)端口,是因為它一般不固定分配某種服務职祷,而是動態(tài)分配氏涩。

動態(tài)分配是指當一個系統(tǒng)進程或應用程序進程需要網(wǎng)絡通信時,它向主機申請一個端口有梆,主機從可用的端口號中分配一個供它使用是尖。

當這個進程關閉時,同時也就釋放了所占用的端口號泥耀。?

6怎么查看端口

用“netstat-an”查看端口狀態(tài)

7總結

端口有什么用呢饺汹?我們知道,一臺擁有IP地址的主機可以提供許多服務痰催,比如HTTP(萬維網(wǎng)服務)兜辞、FTP(文件傳輸)、SMTP(電子郵件)等夸溶,這些服務完全可以通過1個IP地址來實現(xiàn)逸吵。那么,主機是怎樣區(qū)分不同的網(wǎng)絡服務呢缝裁?顯然不能只靠IP地址扫皱,因為IP地址與網(wǎng)絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區(qū)分不同的服務的。 需要注意的是啸罢,端口并不是一一對應的。比如你的電腦作為客戶機訪問一臺WWW服務器時胎食,WWW服務器使用“80”端口與你的電腦通信扰才,但你的電腦則可能使用“3457”這樣的端口。

4 ip地址

1什么是地址

地址就是用來標記地點的

21.ip地址的作用


ip地址:用來在網(wǎng)絡中標記一臺電腦的一串數(shù)字厕怜,比如192.168.1.1衩匣;在本地局域網(wǎng)上是惟一的。

3ip地址的分類

每一個IP地址包括兩部分:網(wǎng)絡地址和主機地址

4A類IP地址

一個A類IP地址由1字節(jié)的網(wǎng)絡地址和3字節(jié)主機地址組成粥航,網(wǎng)絡地址的最高位必須是“0”琅捏,

地址范圍1.0.0.1-126.255.255.254

二進制表示為:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

可用的A類網(wǎng)絡有126個,每個網(wǎng)絡能容納1677214個主機

5B類IP地址

一個B類IP地址由2個字節(jié)的網(wǎng)絡地址和2個字節(jié)的主機地址組成递雀,網(wǎng)絡地址的最高位必須是“10”柄延,

地址范圍128.1.0.1-191.255.255.254

二進制表示為:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110

可用的B類網(wǎng)絡有16384個,每個網(wǎng)絡能容納65534主機

6 C類IP地址

一個C類IP地址由3字節(jié)的網(wǎng)絡地址和1字節(jié)的主機地址組成缀程,網(wǎng)絡地址的最高位必須是“110”

范圍192.0.1.1-223.255.255.254

二進制表示為: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

C類網(wǎng)絡可達2097152個搜吧,每個網(wǎng)絡能容納254個主機

7?D類地址用于多點廣播

D類IP地址第一個字節(jié)以“1110”開始,它是一個專門保留的地址杨凑。

它并不指向特定的網(wǎng)絡滤奈,目前這一類地址被用在多點廣播(Multicast)中

多點廣播地址用來一次尋址一組計算機

地址范圍224.0.0.1-239.255.255.254

8 E類IP地址

以“1111”開始,為將來使用保留

E類地址保留撩满,僅作實驗和開發(fā)用

9?私有ip

在這么多網(wǎng)絡IP中蜒程,國際規(guī)定有一部分IP地址是用于我們的局域網(wǎng)使用,也就

是屬于私網(wǎng)IP伺帘,不在公網(wǎng)中使用的昭躺,它們的范圍是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

10 測試

IP地址127.0.0.1~127.255.255.255用于回路測試,

如:127.0.0.1可以代表本機IP地址曼追,用http://127.0.0.1就可以測試本機中配置的Web服務器窍仰。

5 子網(wǎng)掩碼

要想理解什么是子網(wǎng)掩碼,就不能不了解IP地址的構成礼殊【运保互聯(lián)網(wǎng)是由許多小型網(wǎng)絡構成的,每個網(wǎng)絡上都有許多主機晶伦,這樣便構成了一個有層次的結構碟狞。IP地址在設計時就考慮到地址分配的層次特點,將每個IP地址都分割成網(wǎng)絡號和主機號兩部分婚陪,以便于IP地址的尋址操作族沃。

IP地址的網(wǎng)絡號和主機號各是多少位呢?

如果不指定,就不知道哪些位是網(wǎng)絡號脆淹、哪些是主機號常空,這就需要通過子網(wǎng)掩碼來實現(xiàn)。

子網(wǎng)掩碼不能單獨存在盖溺,它必須結合IP地址一起使用漓糙。

子網(wǎng)掩碼只有一個作用,就是將某個IP地址劃分成網(wǎng)絡地址和主機地址兩部分子網(wǎng)掩碼的設定必須遵循一定的規(guī)則烘嘱。

與IP地址相同昆禽,子網(wǎng)掩碼的長度也是32位,

·左邊是網(wǎng)絡位蝇庭,用二進制數(shù)字“1”表示醉鳖;

·右邊是主機位,用二進制數(shù)字“0”表示哮内。

假設IP地址為“192.168.1.1”子網(wǎng)掩碼為“255.255.255.0”盗棵。

其中,“1”有24個牍蜂,代表與此相對應的IP地址左邊24位是網(wǎng)絡號漾根;

“0”有8個,代表與此相對應的IP地址右邊8位是主機號鲫竞。

這樣辐怕,子網(wǎng)掩碼就確定了一個IP地址的32位二進制數(shù)字中哪些是網(wǎng)絡號、哪些是主機號从绘。

這對于采用TCP/IP協(xié)議的網(wǎng)絡來說非常重要寄疏,只有通過子網(wǎng)掩碼,才能表明一臺主機所在的子網(wǎng)與其他子網(wǎng)的關系僵井,使網(wǎng)絡正常工作陕截。

最常用的兩種子網(wǎng)掩碼

子網(wǎng)掩碼是“255.255.255.0”的網(wǎng)絡:

最后面一個數(shù)字可以在0~255范圍內(nèi)任意變化,因此可以提供256個IP地址批什。

但是實際可用的IP地址數(shù)量是256-2农曲,即254個,因為主機號不能全是“0”或全是“1”驻债。

主機號全為0乳规,表示網(wǎng)絡號

主機號全為1,表示網(wǎng)絡廣播

注意

如果將子網(wǎng)掩碼設置過大合呐,也就是說子網(wǎng)范圍擴大暮的,那么,根據(jù)子網(wǎng)尋徑規(guī)則淌实,很可能發(fā)往和本地主機不在同一子網(wǎng)內(nèi)的目標主機的數(shù)據(jù)冻辩,會因為錯誤的判斷而認為目標主機是在同一子網(wǎng)內(nèi)猖腕,那么,數(shù)據(jù)包將在本子網(wǎng)內(nèi)循環(huán)恨闪,直到超時并拋棄倘感,使數(shù)據(jù)不能正確到達目標主機,導致網(wǎng)絡傳輸錯誤咙咽;如果將子網(wǎng)掩碼設置得過小侠仇,那么就會將本來屬于同一子網(wǎng)內(nèi)的機器之間的通信當做是跨子網(wǎng)傳輸,數(shù)據(jù)包都交給缺省網(wǎng)關處理犁珠,這樣勢必增加缺省網(wǎng)關(文章下方有解釋)的負擔,造成網(wǎng)絡效率下降互亮。因此犁享,子網(wǎng)掩碼應該根據(jù)網(wǎng)絡的規(guī)模進行設置。如果一個網(wǎng)絡的規(guī)模不超過254臺電腦豹休,采用“255.255.255.0”作為子網(wǎng)掩碼就可以了炊昆,現(xiàn)在大多數(shù)局域網(wǎng)都不會超過這個數(shù)字,因此“255.255.255.0”是最常用的IP地址子網(wǎng)掩碼威根;假如在一所大學具有1500多臺電腦凤巨,這種規(guī)模的局域網(wǎng)可以使用“255.255.0.0”。

6 socket簡介

socket套接字

1.本地的進程間通信(IPC)有很多種方式洛搀,例如

·隊列

·同步(互斥鎖敢茁、條件變量等)

2.網(wǎng)絡中進程之間如何通信

首要解決的問題是如何唯一標識一個進程,否則通信無從談起留美!

在本地可以通過進程PID來唯一標識一個進程彰檬,但是在網(wǎng)絡中這是行不通的。

其實TCP/IP協(xié)議族已經(jīng)幫我們解決了這個問題谎砾,網(wǎng)絡層的“ip地址”可以唯一標識網(wǎng)絡中的主機逢倍,而傳輸層的“協(xié)議+端口”可以唯一標識主機中的應用程序(進程)。

這樣利用ip地址景图,協(xié)議较雕,端口就可以標識網(wǎng)絡的進程了,網(wǎng)絡中的進程通信就可以利用這個標志與其它進程進行交互

3.什么是socket

socket(簡稱套接字)是進程間通信的一種方式挚币,它與其他進程間通信的一個主要不同是:

它能實現(xiàn)不同主機間的進程間通信亮蒋,我們網(wǎng)絡上各種各樣的服務大多都是基于Socket來完成通信的

例如我們每天瀏覽網(wǎng)頁、QQ聊天忘晤、收發(fā)email等等

4.創(chuàng)建socket

在Python中 使用socket模塊的函數(shù)socket就可以完成:

socket.socket(AddressFamily, Type)

說明:

函數(shù)socket.socket創(chuàng)建一個socket宛蚓,返回該socket的描述符,該函數(shù)帶有兩個參數(shù):

·Address Family:可以選擇AF_INET(用于Internet進程間通信) 或者AF_UNIX(用于同一臺機器進程間通信),實際工作中常用AF_INET

·Type:套接字類型设塔,可以是SOCK_STREAM(流式套接字凄吏,主要用于TCP協(xié)議)或者SOCK_DGRAM(數(shù)據(jù)報套接字远舅,主要用于UDP協(xié)議)

UDP 是User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)報協(xié)議痕钢,是OSI(Open System Interconnection图柏,開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務任连。

TCP:Transmission Control Protocol 傳輸控制協(xié)議TCP是一種面向連接(連接導向)的蚤吹、可靠的、基于字節(jié)流的運輸層(Transport layer)通信協(xié)議随抠,由IETF的RFC 793說明(specified)裁着。在簡化的計算機網(wǎng)絡OSI模型中,它完成第四層傳輸層所指定的功能拱她,UDP是同一層內(nèi)另一個重要的傳輸協(xié)議二驰。

創(chuàng)建一個tcp socket(tcp套接字)

創(chuàng)建一個udp socket(udp套接字)


7 UDP介紹

UDP ---用戶數(shù)據(jù)報協(xié)議,是一個無連接的簡單的面向數(shù)據(jù)報的運輸層協(xié)議秉沼。UDP不提供可靠性桶雀,它只是把應用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地唬复。由于UDP在傳輸數(shù)據(jù)報前不用在客戶和服務器之間建立一個連接矗积,且沒有超時重發(fā)等機制,故而傳輸速度很快敞咧。

UDP是一種面向無連接的協(xié)議棘捣,每個數(shù)據(jù)報都是一個獨立的信息,包括完整的源地址或目的地址休建,它在網(wǎng)絡上以任何可能的路徑傳往目的地柱锹,因此能否到達目的地,到達目的地的時間以及內(nèi)容的正確性都是不能被保證的丰包。

UDP特點:

UDP是面向無連接的通訊協(xié)議禁熏,UDP數(shù)據(jù)包括目的端口號和源端口號信息,由于通訊不需要連接邑彪,所以可以實現(xiàn)廣播發(fā)送瞧毙。UDP傳輸數(shù)據(jù)時有大小限制,每個被傳輸?shù)臄?shù)據(jù)報必須限定在64KB之內(nèi)寄症。UDP是一個不可靠的協(xié)議宙彪,發(fā)送方所發(fā)送的數(shù)據(jù)報并不一定以相同的次序到達接收方。

【適用情況】

UDP是面向消息的協(xié)議有巧,通信時不需要建立連接释漆,數(shù)據(jù)的傳輸自然是不可靠的,UDP一般用于多點通信和實時的數(shù)據(jù)業(yè)務篮迎,比如

·語音廣播

·視頻

·QQ

·TFTP(簡單文件傳送)

·SNMP(簡單網(wǎng)絡管理協(xié)議)

·RIP(路由信息協(xié)議男图,如報告股票市場示姿,航空信息)

·DNS(域名解釋)

注重速度流暢

UDP操作簡單,而且僅需要較少的監(jiān)護逊笆,因此通常用于局域網(wǎng)高可靠性的分散系統(tǒng)中client/server應用程序栈戳。例如視頻會議系統(tǒng),并不要求音頻視頻數(shù)據(jù)絕對的正確难裆,只要保證連貫性就可以了子檀,這種情況下顯然使用UDP會更合理一些。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乃戈,一起剝皮案震驚了整個濱河市褂痰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌症虑,老刑警劉巖脐恩,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侦讨,居然都是意外死亡,警方通過查閱死者的電腦和手機苟翻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門韵卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崇猫,你說我怎么就攤上這事沈条。” “怎么了诅炉?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵蜡歹,是天一觀的道長。 經(jīng)常有香客問我涕烧,道長月而,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任议纯,我火速辦了婚禮父款,結果婚禮上,老公的妹妹穿的比我還像新娘瞻凤。我一直安慰自己憨攒,他們只是感情好,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布阀参。 她就那樣靜靜地躺著肝集,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛛壳。 梳的紋絲不亂的頭發(fā)上杏瞻,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天所刀,我揣著相機與錄音,去河邊找鬼伐憾。 笑死勉痴,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的树肃。 我是一名探鬼主播蒸矛,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胸嘴!你這毒婦竟也來了雏掠?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤劣像,失蹤者是張志新(化名)和其女友劉穎乡话,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耳奕,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡绑青,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屋群。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闸婴。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芍躏,靈堂內(nèi)的尸體忽然破棺而出邪乍,到底是詐尸還是另有隱情,我是刑警寧澤对竣,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布庇楞,位于F島的核電站,受9級特大地震影響否纬,放射性物質發(fā)生泄漏吕晌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一临燃、第九天 我趴在偏房一處隱蔽的房頂上張望聂使。 院中可真熱鬧,春花似錦谬俄、人聲如沸柏靶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屎蜓。三九已至,卻和暖如春钥勋,著一層夾襖步出監(jiān)牢的瞬間炬转,已是汗流浹背辆苔。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扼劈,地道東北人驻啤。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像荐吵,于是被迫代替她去往敵國和親骑冗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容