python認識網路編程

来源:https://www.cnblogs.com/shuaiyao666/archive/2022/04/01/16084934.html
-Advertisement-
Play Games

網路開發兩大架構 早期數據交互的格式是沒有網路的兩個文件之間的數據交互需要通過第三個文件a,b文件同時和c文件交互,a文件把數據先存放c文件中b文件從c文件取,反之亦然socket (套接字) 是一個收發數據的工具 有了網路之後a文件中的數據,通過網路協議,轉化101010...二進位進行發送a文件 ...


網路開發兩大架構

早期數據交互的格式是沒有網路的
兩個文件之間的數據交互需要通過第三個文件
a,b文件同時和c文件交互,
a文件把數據先存放c文件中
b文件從c文件取,反之亦然
socket (套接字) 是一個收發數據的工具

有了網路之後
a文件中的數據,通過網路協議,轉化101010...二進位進行發送
a文件藉助socket發送數據
b文件藉助socket接受數據

 

兩大架構

c/s 架構 :
  c => client (客戶端)
  王者榮耀 微信 qq wow dnf ...
  s => server (服務端)
  天河三號 (百億億次)

 

 

 

 

 

 

B/S 架構 :
  b => Brower (瀏覽器)
  谷歌,火狐,360,ie
  通過輸入網址,訪問對方的伺服器,對方伺服器響應之後,把數據返回,瀏覽器通過返回的數據,渲染頁面,看到最後的結果
  s => server (服務端)
  一旦開啟,永不關機(除非宕機)

 

 

 

 

 

在未來,更傾向於使用B/s架構,成為新的趨勢
小程式: 微信小程式, 支付寶小程式
(1) 省去複雜下載安裝環節,節省手機電腦的空間
(2) 因為手機帶來的便捷性,隨時隨地使用到想要的應用,提升用戶的滿意度

基礎概念

一臺主機有兩個重要標識:
(1)mac地址:標記一臺機器的物理地址 (不可變)
(2)ip 地址:#標記一臺機器的邏輯地址 (可變)

IP地址是指互聯網協議地址(英語:Internet Protocol Address,又譯為網際協議地址),是IP Address的縮寫。ip地址用來標記網路上的每一臺主機,方便在收發數據,網路請求時能夠找到響應;

ip地址分為兩種 ipv4 和 ipv6: 分類ipv4 和 ipv6:
  ipv4地址是一個32位的二進位數
  ipv6地址是一個128位的二進位數

  ipv4: 以4段點分十進位表示 X.X.X.X => 範圍
    0.0.0.0 ~ 255.255.255.255 地址範圍2^32-1
  ipv6 : 以8段冒分十六進位表示 X:X:X:X:X:X:X:X => 範圍
    0:0:0:0:0:0:0:0 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF地址範圍2^128-1

  ip地址的最後一位0或者255 兩個數字不能用,一般最後一位0表達的是網段,255代表廣播地址

網段 : 網段的作用,主要用來劃分同一區域里的某些機器是否能夠互相通信。在一個網段里可以不同過網際網路,直接對話
判別的依據:如果IP地址和子網掩碼相與得到的值相同就是同一網段

內網 : 以下地址為預留地址,永遠不會被當做公網ip來分配
  192.168.0.0 - 192.168.255.255
  172.16.0.0 - 172.31.255.255
  10.0.0.0 - 10.255.255.255

外網 :
  在任何地方都可以訪問的就是外網(排除防火牆的因素)

子網掩碼:區分網段和主機
  255.255.255.0 / 255.255.0.0 / 255.0.0.0
  ip1:192.168.10.12 ip2:192.168.1.16

埠:"埠"是英文port的意譯,是具體某個程式與外界通訊的出口。 取值範圍:0~65535
     使用時至少8000以上          訪問地址加埠:192.168.2.1:8000

區域網:在同一區域內由多台電腦互聯形成通訊。【具有可重覆的內網ip】
廣域網:在不同區域內有多台電腦互聯形成通訊。【具有唯一的公網ip】
交換機:對同一網段的不同機器之間進行數據轉發的設備 [每一臺機器和交換機相連,形成通信]
路由器:對不同網段的不同機器之間進行數據轉發的設備 [每一個區域網和路由器相連,形成通信]

arp協議:每台主機都有arp緩存表 ,主要作用通過ip找mac的一個協議規則
  【實現方式:通過交換機一次廣播,一次單播找到的】

 

區域網模型

區域網內,各個主機的通訊

 

 

 

 

廣域網模型

 

 

 

 

 

 

網路的概念

網段的作用:
  主要用來劃分同一區域里的某些機器是否能夠互相通信。
  在一個網段里可以不同過網際網路,直接對話
判別的依據:
  如果IP地址和子網掩碼相與得到的值相同就是同一網段

 

"""
邏輯與
全真則真,一假則假
邏輯或
一真則真,全假則假
"""

ip1: 192.168,11.251
子網掩碼:255.255.255.0
11000000 10101000 00001011 11111011
11111111 11111111 11111111 00000000
11000000 10101000 00001011 00000000 => 192.168.11.0 (網段)

ip2: 192.168,12.35
子網掩碼:255.255.255.0
11000000 10101000 00001100 00100011
11111111 11111111 11111111 00000000
11000000 10101000 00001100 00000000 => 192.168.12.0 (網段)


ip1: 192.168,11.251
子網掩碼:255.255.0.0
11000000 10101000 00001011 11111011
11111111 11111111 00000000 00000000
11000000 10101000 00000000 00000000 => 192.168.0.0 (網段)

ip2: 192.168,12.35
子網掩碼:255.255.0.0
11000000 10101000 00001011 11111011
11111111 11111111 00000000 00000000
11000000 10101000 00000000 00000000 => 192.168.0.0 (網段)
下麵的網路相同,意味著可以互相通信;

 

埠:具體某個程式與外界通訊的出口   取值範圍:0~65535

192.168.2.1:8000 訪問這個世界上任何一個電腦里的任何一個軟體
自定義埠時,最好命名8000以上的埠號
https://blog.csdn.net/l_smalltiger/article/details/81951824


20 : FTP文件傳輸協議(預設數據口)
21 : FTP文件傳輸協議(控制)
22 : SSH遠程登錄協議
25 : SMTP伺服器所開放的埠,用於發送郵件
80 : http用於網頁瀏覽,木馬Executor開放此埠
443: 基於TLS/SSL的網頁瀏覽埠,能提供加密和通過安全埠傳輸的另一種HTTP => HTTPS
3306:MySQL開放此埠

 

osi 網路七層模型

應用層 (應用層,表示層,會話層)
  封裝數據:
    根據不同的協議,封裝不同格式的數據
    http (超文本傳輸協議)
    HTTPS (加密傳輸的超文本傳輸協議)
    FTP (文件傳輸協議)
    SMTP (調子郵件傳輸協議)

傳輸層:
  封裝埠:
    指定傳輸協議(TCP協議/UDP協議)

網路層:
  封裝ip:
    ipv4版本 / ipv6

數據鏈路層:
  封裝mac地址:
    指定mac地址(arp協議[ip->mac] / rarp協議[mac->ip])

物理層:
  打成數據包,變成二進位的位元組流,通過網路進行傳輸

 

 

 

 

交換機與路由器 , 發送數據包流程

交換機: 從下到上拆2層,拆到數據鏈路層
路由器: 從下到上拆3層,拆到網路層(得到對應的網段)

arp協議: 通過ip -> mac
rarp協議: 通過mac -> ip
arp協議整體是通過: 一次廣播 + 一次單播 實現

arp協議的完整過程:
  電腦a發現目標主機沒有mac,先發送arp廣播包,把mac標記成全F的廣播地址
  交換機接受到arp的廣播包,進行從下到上拆包,拆2層,拆到數據鏈路層看到全F廣播地址,開始廣播
  把這個廣播包發送給每一臺主機
  每台主機得到廣播包後,都開始拆包,如果該數據包找尋的主機不是自己,自動捨棄
  路由器得到arp廣播包後,從下到上拆包,拆3層,拆到網路層,得到網段信息
  通過路由器的對照信息表,找到網段對應的網關(介面)
  對應網關的這台交換機得到arp廣播包後,從下到上拆包,拆2層,發現全F廣播地址進行廣播
  資料庫主機收到廣播包後,依次從下到上拆包,發現自己是目標要找的那台主機,
  把自己的ip->mac對照信息封裝,變成arp響應包,發送給對應的交換機
  交換機得到arp響應包之後,依次進行單播,返回給最終的原主機
  在回來的過程中,所有得到過相應arp廣播包的主機都會自動更新自己的arp解析表,方便下次使用

 

TCP/UDP協議:

TCP(Transmission Control Protocol)一種面向連接的、可靠的、傳輸層通信協議(比如:打電話)
優點:可靠,穩定,傳輸完整穩定,不限制數據大小
缺點:慢,效率低,占用系統資源高,一發一收都需要對方確認
應用:Web瀏覽器,電子郵件,文件傳輸,大量數據傳輸的場景


# udp
UDP(User Datagram Protocol)一種無連接的,不可靠的傳輸層通信協議(比如:發簡訊)
優點:速度快,可以多人同時聊天,耗費資源少,不需要建立連接
缺點:不穩定,不能保證每次數據都能接收到
應用:IP電話,實時視頻會議,聊天軟體,少量數據傳輸的場景


# TCP 三次握手
  客戶端發送一個請求消息,與服務端建立連接
  服務端接受這個請求,發出響應消息,回應客戶端,也要與客戶端a建立連接(看下a是否同意)
  客戶端接受服務端的響應消息之後,發送回覆消息(表達同意,到此客戶端與服務端建立連接成功)

 

 

 

 

# TCP 發送數據
  每次發送一次數據,都會對應一個回執消息,如果發送方沒有接受到回執消息,那麼該數據包在發送一次;


# TCP 四次揮手
  客戶端向服務端發送一個斷開連接請求(代表客戶端沒有數據給服務端)
  服務端接受請求,發出響應
  等到服務端所有數據發送完畢之後
  服務端向客戶端發送斷開連接請求
  客戶端接受請求,發出響應

  等到2msl,msl(最大報文段生存時間)這麼長時間之後
  客戶端與服務端徹底斷開連接

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基於大家都期望的更美好的未來世界,數字管家必定會為實現更便捷、更具幸福感的生活體驗而不斷努力,期待作為開發者的你加入併為之貢獻一臂之力。 ...
  • 在涉及團購、外賣、快遞、家政、物流、搬家等生活服務類的App、小程式中,填寫收貨地址是用戶高頻使用的功能。這一功能通常採取讓用戶手動填寫的解決方案,例如上下拉動選擇浙江省-->杭州市-->西湖區-->西溪街道,再切換到姓名輸入框輸入姓名-->電話輸入框輸入電話等一系列的操作。從中我們不難發現手動輸入 ...
  • 平時想記錄的東西太多了,關於日常感知,莫明其妙的小想法、隨筆,這些發到公眾號又不太合適。 索性擼起袖子加油乾。埋頭苦幹了一周多 ...
  • 前言 元宇宙正在如火如荼地發展,大有引領未來潮流之勢。對於我們這麼專業的(web 前端)團隊來說,元宇宙是一個大 (wan) 顯 (quan) 身 (bu) 手 (dong) 的領域,因此團隊在這方面投入了很多人力進行預研和總結,請隨本文一起踏入元宇宙的神秘世界。 元宇宙與 3D 元宇宙,或稱為後設 ...
  • 一、冒泡排序 原理:相鄰兩元素之間兩兩比較,比較出大值進行賦值互換,再依次與相鄰的元素比較,層層遞進。#互換元素位置,相互賦值。 時間複雜度:最好O(n),最差O(n^2) 1、比較相鄰的兩個元素,如果前一個比後一個大,則交換位置。2、比較完第一輪的時候,最後一個元素是最大的元素。3、這時候最後一個 ...
  • 橋接模式是什麼 橋接模式:橋接是一種結構型設計模式, 可將業務邏輯或一個大類拆分為不同的層次結構, 從而能獨立地進行開發。 為什麼用橋接模式 對於兩個獨立變化的維度,使用橋接模式再適合不過了. 橋接模式怎麼實現 這裡是將computer和printer分成兩層,用介面的方式把強耦合轉化為弱耦合。這兩 ...
  • 我在之前一段時間做過網路通信的系列文章,但是文章還是偏散,沒有一個整體脈絡,本篇就以知識地圖的形式來進行梳理。 知識地圖是一種知識導航系統,並顯示不同的知識存儲之間重要的動態聯繫。本篇主要就是從更高的視角將之前的文章的結構思路展現出來。文章結構的思路實際上也是達到架構師程度要掌握的網路通信知識學習路 ...
  • 觀察者模式又叫做發佈-訂閱模式,屬於行為型模式;觀察者模式通過定義一種一對多得依賴關係,讓多個觀察者對象同時監聽某一個主題對象,這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使他們能夠自動更新自己。 觀察者模式的UML類圖如下: 如上圖所示,觀察者模式主要涉及到抽象主題角色、具體主題角色、抽 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...