淺談Python中TCP和UDP等網(wǎng)絡(luò)編程協(xié)議

最近在學(xué)習(xí)python編程,自己稍微整理了一下這兩天的學(xué)習(xí)心得



一、什么是網(wǎng)絡(luò)編程協(xié)議

? ? ? ?首先網(wǎng)絡(luò)編程協(xié)議的目的是為了方便使用與管理骤星,避免出現(xiàn)網(wǎng)絡(luò)擁堵。倘若沒(méi)有固定協(xié)議爆哑,就有可能會(huì)出現(xiàn)洞难,如下圖的情況,完全無(wú)法進(jìn)行溝通揭朝,放在網(wǎng)絡(luò)上就會(huì)出現(xiàn)網(wǎng)絡(luò)堵塞队贱,所以我們必須制定一些方案和協(xié)議來(lái)統(tǒng)一。

溝通不便

二萝勤、分層模型

? ?1) 網(wǎng)絡(luò)分層架構(gòu)

? ? ? ? ? ??? ?為了減少協(xié)議設(shè)計(jì)的復(fù)雜性露筒,大多數(shù)網(wǎng)絡(luò)模型均采用分層的方式來(lái)組織。每一層都有自己的功能敌卓,就像建筑物一樣慎式,每一層都靠下一層支持。每一層利用下一層提供的服務(wù)來(lái)為上一層提供服務(wù)趟径,本層服務(wù)的實(shí)現(xiàn)細(xì)節(jié)對(duì)上層屏蔽瘪吏。

分層模式

越下面的層,越靠近硬件蜗巧,越上面的層掌眠,越接近用戶。主要四層模式為:應(yīng)用層幕屹,運(yùn)輸層蓝丙,網(wǎng)絡(luò)層,鏈路層望拖。

2)鏈路層

? ? 鏈路層指定的就是mac地址渺尘,每臺(tái)電腦出廠時(shí)配置的網(wǎng)卡對(duì)應(yīng)地址都會(huì)不同,這個(gè)是一開(kāi)始就決定好的说敏,無(wú)法改變鸥跟。

3)網(wǎng)絡(luò)層

? ? 網(wǎng)絡(luò)層主要指的就是ip地址,通過(guò)用戶指的ip地址進(jìn)行相對(duì)應(yīng)的訪問(wèn)操作(ip由來(lái)等細(xì)節(jié)不做細(xì)講,自行百度)

4)運(yùn)輸層

? ? 通過(guò)每個(gè)應(yīng)用不同的端口號(hào)進(jìn)行傳輸医咨,端口號(hào)范圍是從0到65535枫匾,每個(gè)端口都對(duì)應(yīng)電腦上不同的進(jìn)程,windows用戶可以在命令提示符中輸入netstat -ano看到拟淮,在本地地址冒號(hào)后面干茉,即可看見(jiàn),Linux中輸入ps -auo即可惩歉,一個(gè)端口號(hào)只能服務(wù)一個(gè)進(jìn)程等脂。其中80端口分配給HTTP服務(wù),21端口分配給FTP服務(wù)撑蚌。就類似固定電話上遥,10010,10086等。

windows查看進(jìn)程端口

5) 應(yīng)用層

? ? 經(jīng)過(guò)鏈路層争涌,網(wǎng)絡(luò)層粉楚,傳輸層,最后就是通過(guò)前面是三個(gè)來(lái)確認(rèn)到最后需要傳輸?shù)降膽?yīng)用中去


傳輸示意圖

三亮垫、UDP

1)udp簡(jiǎn)介

? ??????UDP是 User Datagram Protocol 的簡(jiǎn)稱模软, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議饮潦,在網(wǎng)絡(luò)中用于處理數(shù)據(jù)包燃异,是一種無(wú)連接的協(xié)議。UDP不提供可靠性的傳輸继蜡,它只是把應(yīng)用程序傳給 IP 層的數(shù)據(jù)報(bào)發(fā)送出去回俐,但是并不能保證它們能到達(dá)目的地。由于 UDP 在傳輸數(shù)據(jù)報(bào)前不用在客戶和服務(wù)器之間建立一個(gè)連接稀并,且沒(méi)有超時(shí)重發(fā)等機(jī)制仅颇,故而傳輸速度很快。

2)udp通信模型

? ? 主要客戶端通過(guò)sendto(msg, (ip,port))訪問(wèn)碘举,并發(fā)送消息忘瓦,但不會(huì)確認(rèn)是否到達(dá),recvfrom()用來(lái)接收消息引颈,并且會(huì)堵塞耕皮,如果一直沒(méi)有消息送來(lái),則會(huì)一直堵塞下去蝙场。服務(wù)器通過(guò)bind((ip,port))綁定ip地址和端口明场,注意是元組,.close用來(lái)關(guān)閉連接。(注意李丰,網(wǎng)路傳輸中都是通過(guò)字節(jié)的方式進(jìn)行傳輸,所以再接收和發(fā)送時(shí)都要主要轉(zhuǎn)碼和解碼)

udp通信模型


四逼泣、TCP

1)tcp簡(jiǎn)介

????TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的趴泌、可靠的舟舒、基于字節(jié)流的傳輸層通信協(xié)議。TCP通信需要經(jīng)過(guò)創(chuàng)建連接嗜憔、數(shù)據(jù)傳送秃励、終止連接三個(gè)步驟。TCP通信模型中吉捶,在通信開(kāi)始之前夺鲜,一定要先建立相關(guān)的鏈接,才能發(fā)送數(shù)據(jù)呐舔,類似于生活中打電話币励。

2)tcp通信模型

? ? tcp客服端:通過(guò)connect((ip, port))來(lái)請(qǐng)求連接,send()進(jìn)行發(fā)送消息珊拼,recv()進(jìn)行接受消息

????tcp服務(wù)器: 通過(guò)bind((ip, port))綁定ip和端口食呻,ip不寫(xiě)則代表默認(rèn)本機(jī)所有地址,listen()控制客服端的連接數(shù)量澎现,accept()等待阻塞仅胞,一直到客戶端的到來(lái),recv()接受消息剑辫,send()發(fā)送消息干旧。在做多用戶聊天時(shí)一定要注意accept()的位置,因?yàn)閱尉€程每次有客戶端連接都會(huì)把上次的連接斷開(kāi)妹蔽,這里涉及到了多線程椎眯,目前正在學(xué)習(xí)中。讹开。盅视。

tcp傳輸模型

五、TCP和UDP的優(yōu)缺點(diǎn)

1)tcp的優(yōu)點(diǎn)

? ? ? ? 1.1?TCP采用發(fā)送應(yīng)答機(jī)制

????????????????????TCP發(fā)送的每個(gè)報(bào)文段都必須得到接收方的應(yīng)答才認(rèn)為這個(gè)TCP報(bào)文段傳輸成功旦万。

? ? ? ? 1.2?超時(shí)重傳

????????????????????????發(fā)送端發(fā)出一個(gè)報(bào)文段之后就啟動(dòng)定時(shí)器闹击,如果在定時(shí)時(shí)間內(nèi)沒(méi)有收到應(yīng)答就重新發(fā)送這個(gè)報(bào)文段。TCP為了保證不發(fā)生丟包成艘,就給每個(gè)包一個(gè)序號(hào)赏半,同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK)淆两;如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn)断箫,那么對(duì)應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會(huì)被進(jìn)行重傳。

? ? ? ? ? ?1.3??錯(cuò)誤校驗(yàn)

????????????????????????????TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤秋冰;在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和仲义。

? ? ? ? ? ? 1.4??流量控制和阻塞管理


????????????????????????????????流量控制用來(lái)避免主機(jī)發(fā)送得過(guò)快而使接收方來(lái)不及完全收下。

2)udp的優(yōu)點(diǎn)

????????傳輸速度快,傳輸穩(wěn)定埃撵,避免丟包赵颅,相對(duì)而言,udp會(huì)更加的安全一些

3)tcp不同與udp

????面向連接(確認(rèn)有創(chuàng)建三方交握暂刘,連接已創(chuàng)建才作傳輸饺谬。)

????有序數(shù)據(jù)傳輸

????重發(fā)丟失的數(shù)據(jù)包

????舍棄重復(fù)的數(shù)據(jù)包

????無(wú)差錯(cuò)的數(shù)據(jù)傳輸

????阻塞/流量控制

4) 優(yōu)劣

? ? udp在傳輸方面比tcp更勝一籌,但是不能保證穩(wěn)定到達(dá)用戶谣拣,tcp傳輸慢募寨,但是能保證消息傳輸?shù)接脩簦侨菀讈G包森缠,導(dǎo)致數(shù)據(jù)被抓包



以上就是個(gè)人這兩天學(xué)習(xí)udp和tcp的一些看法拔鹰,還有很多不足的的地方,希望諒解辅鲸,如有不足格郁,歡迎留言。我也是學(xué)習(xí)python沒(méi)多久独悴,來(lái)和大家一起分享一下例书,希望和大家一起進(jìn)步。還有tcp的三次握手刻炒,四次揮手决采,就沒(méi)在此處提了,有需求的朋友可以去百度一下或者谷歌一下坟奥。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末树瞭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爱谁,更是在濱河造成了極大的恐慌晒喷,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件访敌,死亡現(xiàn)場(chǎng)離奇詭異凉敲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)寺旺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)爷抓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人阻塑,你說(shuō)我怎么就攤上這事蓝撇。” “怎么了陈莽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵渤昌,是天一觀的道長(zhǎng)虽抄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)耘沼,這世上最難降的妖魔是什么极颓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮群嗤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兵琳。我一直安慰自己狂秘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布躯肌。 她就那樣靜靜地躺著者春,像睡著了一般。 火紅的嫁衣襯著肌膚如雪清女。 梳的紋絲不亂的頭發(fā)上钱烟,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音嫡丙,去河邊找鬼拴袭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛曙博,可吹牛的內(nèi)容都是我干的拥刻。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼父泳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼般哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起惠窄,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蒸眠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后杆融,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體楞卡,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年擒贸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臀晃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡介劫,死狀恐怖徽惋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情座韵,我是刑警寧澤险绘,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布踢京,位于F島的核電站,受9級(jí)特大地震影響宦棺,放射性物質(zhì)發(fā)生泄漏瓣距。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一代咸、第九天 我趴在偏房一處隱蔽的房頂上張望蹈丸。 院中可真熱鬧,春花似錦呐芥、人聲如沸逻杖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荸百。三九已至,卻和暖如春滨攻,著一層夾襖步出監(jiān)牢的瞬間够话,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工光绕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留女嘲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓奇钞,卻偏偏與公主長(zhǎng)得像澡为,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子景埃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 1.這篇文章不是本人原創(chuàng)的媒至,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,053評(píng)論 6 174
  • 個(gè)人認(rèn)為谷徙,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記拒啰,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 網(wǎng)絡(luò)編程 網(wǎng)絡(luò)編程對(duì)于很多的初學(xué)者來(lái)說(shuō),都是很向往的一種編程技能完慧,但是很多的初學(xué)者卻因?yàn)楹荛L(zhǎng)一段時(shí)間無(wú)法進(jìn)入網(wǎng)絡(luò)編...
    程序員歐陽(yáng)閱讀 2,010評(píng)論 1 37
  • 計(jì)算機(jī)網(wǎng)絡(luò)概述 網(wǎng)絡(luò)編程的實(shí)質(zhì)就是兩個(gè)(或多個(gè))設(shè)備(例如計(jì)算機(jī))之間的數(shù)據(jù)傳輸谋旦。 按照計(jì)算機(jī)網(wǎng)絡(luò)的定義,通過(guò)一定...
    蛋炒飯_By閱讀 1,215評(píng)論 0 10
  • 同樣的屈尼,本文篇幅也比較長(zhǎng)册着,先來(lái)一張思維導(dǎo)圖,帶大家過(guò)一遍脾歧。 一甲捏、 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 二、 TCP/IP 基礎(chǔ)...
    滌生_Woo閱讀 64,974評(píng)論 38 1,038