【CSDN软件工程师能力认证学习精选】Python网络编程之初识
CSDN軟件工程師能力認證(以下簡稱C系列認證)是由中國軟件開發者網CSDN制定并推出的一個能力認證標準。C系列認證歷經近一年的實際線下調研、考察、迭代、測試,并梳理出軟件工程師開發過程中所需的各項技術技能,結合企業招聘需求和人才應聘痛點,基于公開、透明、公正的原則,甑別人才時確保真實業務場景、全部上機實操、所有過程留痕、存檔不可篡改。
我們每天將都會精選CSDN站內技術文章供大家學習,幫助大家系統化學習IT技術。
引言
Internet和internet
Internet:(因特網)是一個專用名詞,指當前全球最大的、開放的、由眾多網絡相互連接而成的特定的計算機網絡。
internet:(互聯網或互連網)是一個通用名詞,泛指由多個計算機網絡互聯而成的虛擬網絡。
本頁博客主要會介紹一些計算機網絡的基本定義,網絡的體系結構等,旨在學習計算機網絡的基本概念,為接下來的網絡編程打下良好的基礎。之前在大三大四考研期間學過計算機網絡,但是時間太久了很多已經都忘了,因此這篇博客也是對我自己知識的一次梳理,主要參考用書是謝希仁的《計算機網絡》與961計算機考研相關復習資料,簡單總結,不足之處,請各位看官指正。
計算機網絡學習的核心內容就是網絡協議的學習。網絡協議是為計算機網絡中進行數據交換而建立的規則、標準或者說是約定的集合。因為不同用戶的數據終端可能采取的字符集是不同的,兩者需要進行通信,必須要在一定的標準上進行。
計算機網絡是用通信線路和通信設備將分布在不同地點的多臺自治計算機系統互相連接起來,按照共同的網絡協議,共享硬件、軟件,最終實現資源共享的系統。
早期計算機
一條網線實現了簡單的數據共享。
局域網交換機
交換機:一種工作于底層(數據鏈路層)且簡單的能夠將光電信號轉發的網絡設備,能夠滿足局域范圍內信息傳輸和資源共享的需要的設備。
局域網:指在某一區域內由多臺計算機互聯成的計算機組。
網絡結構
不同主機之間通過交換機和路由器組成局域網,然后層層往上組成越來越大的網絡群,每一臺主機都有對應的地址,以確保他在網絡體系中的身份,這就是互聯網的基本組成。
路由器:(Router)是連接因特網中各局域網、廣域網的設備,它會根據信道的情況自動選擇和設定路由,以最佳路徑,按前后順序發送信號。
網絡傳輸
視頻基帶傳輸
概念:通過同軸電纜非平衡地對0-6MHz的視頻基帶信號不做任何處理的傳輸,是傳統電視的傳輸方式。
特點:短距離信號損失小,價格便宜,穩定;信號隨著距離增加衰減較大,受環境影響大,不能長距離傳輸。
光纖傳輸
概念:通過光導纖維利用光學傳輸原理中的不同頻率可攜帶信號傳輸光信號,一般用做局域網之間長距離傳輸。
特點:傳輸距離遠,衰減小,抗干擾性好,傳輸信號量大;造價高,難擴容,維修成本高,即使是2018年的8月,家庭運用也很少。
網絡傳輸
概念:采用MPEG2/4、H.264音視頻壓縮格式傳輸監控信號,是解決城域間遠距離、點位極其分散的監控傳輸方式。
特點:只要有Internet網絡的地方,安裝上遠程監控軟件就可監看和控制:受網絡帶寬和速度的限制,動畫有延遲。
微波傳輸
概念:采用調頻調制或調幅調制的辦法,將信息搭載到高頻載波上以高頻電波在空中傳輸。
特點:綜合成本低,性能更穩定,成本低;受干擾大,信號衰弱塊。
雙絞線傳輸
概念:由兩根具有絕緣保護層的銅導線組成,通過絞合之以增加抗干擾性來傳輸信號。也就是我們家庭中常用的網線。
特點:布線方便,抗干擾性強,價格低廉,實時傳輸。不能遠距離傳輸,不宜野外傳輸。
網絡廣播方式
單播
概念:主機之間“一對一”的通訊模式,網絡中的交換機和路由器對數據只進行轉發不進行復制。就好像是兩人之間的對話一樣。
優點:
- 及時響應客戶機的請求。
- 對每個客戶不通的請求發送不通的數據,容易實現個性化服務。
缺點:
- 數據流量大,傳輸時間慢。
- 網絡主干負荷大,容易阻塞。
廣播
概念:主機之間“一對所有”的通訊模式,網絡對其中每一臺主機發出的信號都進行無條件復制并轉發,所有主機都可以接收到所有信息的一種方式。就像你小學的廣播指導做體操一樣。
優點:
- 網絡設備簡單,維護簡單,布網成本低廉
- 服務器流量負載極低。
缺點:
- 無法針對用戶提供更多個性化服務。
- 不能再Internet上傳輸
組播
主機之間“一對一組”的通訊模式,也就是加入了同一個組的主機可以接受到此組內的所有數據,網絡中的交換機和路由器只向有需求者復制并轉發其所需數據。
優點:
- 具備廣播所具備的優點,節省了服務器的負載。
- 所以其提供的服務可以非常豐富。
- 能在Internet上傳輸。
缺點:
- 沒有糾錯機制,丟包錯包后難以彌補。
- 在客戶認證、QOS等方面還需要完善。
網絡性能指標
1. 速率(網速):主機在數字通信上傳送數據的速率(bit(比特:數據量的單位,二進制數據,一個比特是一個二進制數字,0或者1)/s)。
1 Byte(B) = 8 bit? ? 1 KB = 1024 B? ? 1MB = 1024 KB? ? 1GB = 1024 MB? ? 1 TB = 1024 GB? ? 1 PB = 1024 TB? ? 1 EB = 1024 PB...
2. 帶寬:本意是指某個信號具有的頻帶寬度,在計算機網絡中,帶寬指網絡的通信線路傳送數據的能力(單位時間內從網絡中的某一個點到另外一個點所能通過的“最高數據率”,帶寬的單位為bit/s),一條通信鏈路,帶寬越寬,最高數據率也越高。
3.?吞吐量:單位時間內通過某個網絡(通信線路、接口)的數據量,吞吐量受制于帶寬或者網絡的額定速率。
4.?時延:數據從網絡的一端發送數據幀(所謂數據幀(Data frame),就是數據鏈路層的協議數據單元,它包括三部分:幀頭,數據部分,幀尾。其中,幀頭和幀尾包含一些必要的控制信息,比如同步信息、地址信息、差錯控制信息等;數據部分則包含網絡層傳下來的數據,比如IP數據包。)到另一端所需要的時間。
- 發送時延:(主機或者路由器發送數據幀所需要的時間,公式:發送時延=數據幀長度/發送速率)。
- 傳播時延:(電磁波在信道中傳播一定的距離需要花費的時間,公式:傳播時延:信道長度/電磁波在信道上的傳播速率)。
- 處理時延:主機或者路由器接受到分組時要花費一定的時間去處理。?
- 排隊時延:分組在網絡傳輸時,進入路由器后要在輸入隊列中排隊等待處理,路由器確定轉發接口后,還要在輸出隊列中排隊等待轉發,這就是排隊時延。
總時延 = 發送時延 + 傳播時延 + 處理時延 + 排隊時延
5. 利用率:信道利用率(某信道有百分之幾的時間是被利用的即有數據通過)。網絡利用率(全網絡的信道利用率的加權平均值)。信道或者網絡利用率過高會產生非常大的時延。
6. 往返時間RTT:從數據的發送開始,到發送方接收到來自接收方的一種的性能指標。
7.?時延帶寬:傳播時延*帶寬,表示一條鏈路上傳播的所有比特(以比特為單位)。
IP地址
IP地址:指互聯網協議地址(英語:Internet Protocol Address,又譯為網際協議地址),是IP Address的縮寫。IP地址是IP協議提供的一種統一的地址格式,它為互聯網上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。
IP地址是一個32位的二進制數,通常被分割為4個“8位二進制數”(也就是4個字節),IPV4就是有4段數字,每一段最大不超過255,對于全球的網絡地址來說,分配肯定是不夠的,所以全球IPv4位址在2011年2月3日IPv4位地址分配完畢。為了解決IPV4分配完這個問題,國際組織擬通過IPv6重新定義地址空間。IPv6采用128位地址長度。
如:
IPV4地址:192.168.1.1 轉化為二進制數為:
IPV4:11000000?10101000 00000001 00000001
IPV6地址:21DA:0000:0000:0000:02AA:000F:FE08:9C5A
- 02AA可以簡寫成2AA,叫做前導零壓縮法。
- 如果連續幾個位段都是0,可以簡寫為::,叫做雙冒號表示法。
簡約IPV6:21DA::2AA:F:FE08:9C5A
二進制IPV6表示為:0010000111011010 0000000000000000 0000000000000000 0000000000000000 0000001010101010 0000000000001111?1111111000001000?1001110001011010
IPV6號稱能為全球每一粒沙子標上記號,再也不用擔心不夠使用的問題。
端口
我們知道,一臺擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那么問題來了,主機是怎樣區分不同的網絡服務呢?舉個栗子,For Example,當你和你的朋友聊QQ的時候,你把一條信息發送給對方,為什么那條消息能顯示到對方電腦上的QQ對話框,而不是顯示到微信的對話框??顯然不只有一個ip地址是不行的,因為IP 地址與網絡服務的關系是一對多的關系。實際上是通過“IP地址+端口號”來區分不同的服務的。ip找到對應主機,端口找到主機中某一個服務。
子網掩碼
所謂”子網掩碼”,就是表示子網絡特征的一個參數。它在形式上等同于IP地址,也是一個32位二進制數字,它的網絡部分全部為1,主機部分全部為0。比如,IP地址172.16.10.1,如果已知網絡部分是前24位,主機部分是后8位,那么子網絡掩碼就是11111111.11111111.11111111.00000000,寫成十進制就是255.255.255.0。
知道”子網掩碼”,我們就能判斷,任意兩個IP地址是否處在同一個子網絡。方法是將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都為1,運算結果為1,否則為0),然后比較結果是否相同,如果是的話,就表明它們在同一個子網絡中,否則就不是。?
如題:已知IP地址172.16.10.1和172.16.10.2的子網掩碼都是255.255.255.0,請問它們是否在同一個子網絡?
172.16.10.1:10101100.00010000.00001010.000000001
255255.255.255.0:11111111.11111111.11111111.00000000
AND運算得網絡地址結果:10101100.00010000.00001010.000000001->172.16.10.0
172.16.10.2:10101100.00010000.00001010.000000010
255255.255.255.0:11111111.11111111.11111111.00000000
AND運算得網絡地址結果:10101100.00010000.00001010.000000001->172.16.10.0
結果:它們在同一子網絡。
計算機網絡模型
物理層
主要定義物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地后在轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的數據叫做比特。
數據鏈路層
定義了如何讓格式化數據以進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保數據的可靠傳輸。
網絡層
在位于不同地理位置的網絡中的兩個主機系統之間提供連接和路徑選擇。Internet的發展使得從世界各站點訪問信息的用戶數大大增加,而網絡層正是管理這種連接的層。
運輸層
定義了一些傳輸數據的協議和端口號(WWW端口80等),如:?
TCP(transmission control protocol –傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據) 。
UDP(user datagram protocol–用戶數據報協議,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的)。 主要是將從下層接收的數據進行分段和傳輸,到達目的地址后再進行重組。常常把這一層數據叫做段。
會話層
通過運輸層(端口號:傳輸端口與接收端口)建立數據傳輸的通路。主要在你的系統之間發起會話或者接受會話請求(設備之間需要互相認識可以是IP也可以是MAC或者是主機名)。
表示層
可確保一個系統的應用層所發送的信息可以被另一個系統的應用層讀取。例如,PC程序與另一臺計算機進行通信,其中一臺計算機使用擴展二一十進制交換碼(EBCDIC),而另一臺則使用美國信息交換標準碼(ASCII)來表示相同的字符。如有必要,表示層會通過使用一種通格式來實現多種數據格式之間的轉換。
應用層
是最靠近用戶的OSI層。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。
五層模型常見物理設備
TCP與UDP協議
在引入這個問題之前,我們先研究以下通信方式:
單工通信:是指消息只能單方向傳輸的工作方式。發送端與接收端也是固定的,即發送端只能發送信息,不能接收信息。信號是單方向的。
半雙工通信:可以實現雙向的通信,但不能在兩個方向上同時進行,必須輪流交替地進行。發送端和接收端可以相互轉化,但是同一時刻,信息只能往一個方向傳輸。
全雙工通信:在通信的任意時刻,線路上存在A到B和B到A的雙向信號傳輸,允許數據同時在兩個方向上傳輸,又稱為雙向同時通信,即通信的雙方可以同時發送和接收數據。
TCP---傳輸控制協議
提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。 ,TCP協議提供了完善的錯誤控制和流量控制,能夠確保數據正常傳輸,是一個面向連接的協議,TCP 將在兩個應用程序之間建立一個全雙工的通信。
TCP協議特點:
- 建立連接通道。
- 數據大小不限制。
- 速度慢,但是可靠性高。
TCP協議三次握手與四次揮手
TCP是因特網中的傳輸層協議,使用三次握手協議建立連接。當主動方發出SYN連接請求后,等待對方回答SYN+ACK[1],并最終對對方的 SYN 執行 ACK 確認。這種建立連接的方法可以防止產生錯誤的連接。| SYN(synchronous) | 建立聯機 |
| PSH(push) | 傳送 |
| ACK(acknowledgement) | 確認 |
| FIN(finish) | 結束 |
| RST(reset) | 重置 |
| URG(urgent) | 緊急 |
| seq(sequence number) | 順序號碼 |
TCP三次握手過程:
專業版:
第一次握手:主機A發送位碼為syn=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求建立聯機。
第二次握手:主機B收到請求后要確認聯機信息,向A發送ack number=(主機A的seq+1),syn=1,ack=1,隨機產生seq=7654321的包。
第三次握手:主機A收到后檢查ack number是否正確,即第一次發送的seq number+1,以及位碼ack是否為1,若正確,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到后確認seq值與ack=1則連接建立成功。
逗比版:
Step1 高富帥發信息給女神:約嗎?
Step2 女神發信息回復高富帥:可以約。然后準備資源。
Step3 高富帥確認女神發來可以約,回復:我準備好了,老地方。并準備資源。
- 三次握手只能是客戶機發出請求
TCP四次揮手過程:
專業版
第一次揮手:當主機A的應用程序通知TCP數據已經發送完畢時,TCP向主機B發送一個帶有FIN附加標記的報文段。
第二次揮手:主機B收到這個FIN報文段之后,并不立即用FIN報文段回復主機A,而是先向主機A發送一個確認序號ACK,同時通知自己相應的應用程序:對方要求關閉連接(先發送ACK的目的是為了防止在這段時間內,對方重傳FIN報文段)。
第三次揮手:主機B的應用程序告訴TCP:我要徹底的關閉連接,TCP向主機A送一個FIN報文段。
第四次揮手:主機A收到這個FIN報文段后,向主機B發送一個ACK表示連接徹底釋放。
逗比版:
高富帥想換女朋友了:
Step1 高富帥發信息給女神:我們分手吧!
Step2 女神聽后,覺得很傷心,于是發了一個:哦,給我點時間我緩一下。
Step3 女神難受,盡量處理和高富帥的點點滴滴,但是最后不得不接受這個現實,最后回信息:我同意分手。
Step4 高富帥收到信息后,迅速忘記了女神,丟掉關于她的一切。
- 當然,四次揮手可以是服務器或者主機A先發出請求,和三次握手不一樣。
UDP---用戶數據報協議
是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。
UDP協議特點:
- 面向無連接,可靠性較低。
- 不保證數據的安全性。
- 傳播速度很快。
參考
?
關于CSDN軟件工程師能力認證
????? CSDN軟件工程師能力認證(以下簡稱C系列認證)是由中國軟件開發者網CSDN制定并推出的一個能力認證標準。C系列認證歷經近一年的實際線下調研、考察、迭代、測試,并梳理出軟件工程師開發過程中所需的各項技術技能,結合企業招聘需求和人才應聘痛點,基于公開、透明、公正的原則,甑別人才時確保真實業務場景、全部上機實操、所有過程留痕、存檔不可篡改。C系列認證的宗旨是讓一流的技術人才憑真才實學進大廠拿高薪,同時為企業節約大量招聘與培養成本,使命是提升高校大學生的技術能力,為行業提供人才儲備,為國家數字化戰略貢獻力量。
?
了解詳情可點擊:CSDN軟件工程師能力認證介紹
?
本文出處:https://blog.csdn.net/qq_33567641/article/details/81669278?ops_request_misc=&request_id=&biz_id=102&utm_term=python%20網絡編程&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-7-81669278.pc_search_result_before_js&spm=1018.2226.3001.4187
總結
以上是生活随笔為你收集整理的【CSDN软件工程师能力认证学习精选】Python网络编程之初识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [轉]Flash/Flex监听浏览器的关
- 下一篇: (转载)DevExpress ASPxG