網路編程的基礎知識

来源:https://www.cnblogs.com/wy9264/archive/2019/03/04/10472742.html
-Advertisement-
Play Games

協議 可理解為規則,是數據傳輸和數據解釋的規則。 TCP協議註重數據的傳輸,http協議註重數據的解釋 傳輸層:常見協議有TCP/UDP協議 應用層:常見協議有HTTP協議,FTP協議。 網路層:常見協議有ARP協議,RARP協議。 網路介面層:常見協議有ARP協議,RAPP協議。 HTTP 超文本 ...


協議                                                                                                                                     

可理解為規則,是數據傳輸和數據解釋的規則。

TCP協議註重數據的傳輸,http協議註重數據的解釋

傳輸層:常見協議有TCP/UDP協議

應用層:常見協議有HTTP協議,FTP協議。

網路層:常見協議有ARP協議,RARP協議。

網路介面層:常見協議有ARP協議,RAPP協議。

HTTP 超文本傳輸協議(Hyper Text Transfer Protocol)是互聯網上應用最為廣泛的協議。

FTP文件傳輸協議(File Transfer Protocol) 

TCP(Transmission Control Protocol:傳輸控制協議;面向連接,可靠傳輸

UDP(User Datagram Protocol):用戶數據報協議;面向無連接,不可靠傳輸

IP(Internet Protocol):Internet協議,負責TCP/IP主機間提供數據報服務,進行數據封裝並產生協議頭,TCP與UDP協議的基礎。

ICMP(Internet Control Message Protocol):Internet控制報文協議。ICMP協議其實是IP協議的的附屬協議,IP協議用它來與其它主機或路由器交換錯誤報文和其它的一些網路情況,在ICMP包中攜帶了控制信息和故障恢覆信息。

ARP(Address Resolution Protocol)協議:正向地址解析協議, 通過已知的IP,尋找對應的MAC地址。 

RARP(Reverse Address Resolution Protocol):逆向地址解析協議,通過MAC地址確定IP地址。

C/S和B/S模式                                                                                                                                          

        C/S模式:傳統的網路應用設計模式,客戶機(client)/伺服器(server)模式,需要在通訊兩端各自部署客戶機和伺服器來完成數據通信。建立在區域網的基礎上

        B/S模式:瀏覽器(Browser)/伺服器(Server)模式,只需在一端部署伺服器,而另外一端使用每台PC都預設配置的瀏覽器即完成的數據的傳輸,建立在廣域網的基礎上的. 

        C/S優點:1.協議選用靈活。2.緩存數據   如大型游戲,QQ    缺點:開發工作量較大,調試困難

        B/S優點:跨平臺,開發工作量較小 如QQ農場

OSI七層模型                                                                                                                  

各層功能定義         這裡我們只對OSI各層進行功能上的大概闡述,不詳細深究,因為每一層實際都是一個複雜的層。後面我也會根據個人方向展開部分層的深入學習。這裡我們就大概瞭解一下。我們從最頂層——應用層 開始介紹。整個過程以公司A和公司B的一次商業報價單發送為例子進行講解。 <1>    應用層         OSI參考模型中最靠近用戶的一層,是為電腦用戶提供應用介面,也為用戶直接提供各種網路服務。我們常見應用層的網路服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等。         實際公司A的老闆就是我們所述的用戶,而他要發送的商業報價單,就是應用層提供的一種網路服務,當然,老闆也可以選擇其他服務,比如說,發一份商業合同,發一份詢價單,等等。 <2>    表示層           表示層提供各種用於應用層數據的編碼和轉換功能,確保一個系統的應用層發送的數據能被另一個系統的應用層識別。如果必要,該層可提供一種標準表示形式,用於將電腦內部的多種數據格式轉換成通信中採用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。         由於公司A和公司B是不同國家的公司,他們之間的商定統一用英語作為交流的語言,所以此時表示層(公司的文秘),就是將應用層的傳遞信息轉翻譯成英語。同時為了防止別的公司看到,公司A的人也會對這份報價單做一些加密的處理。這就是表示的作用,將應用層的數據轉換翻譯等。 <3>    會話層         會話層就是負責建立、管理和終止表示層實體之間的通信會話。該層的通信由不同設備中的應用程式之間的服務請求和響應組成。               會話層的同事拿到表示層的同事轉換後資料,(會話層的同事類似公司的外聯部),會話層的同事那裡可能會掌握本公司與其他好多公司的聯繫方式,這裡公司就是實際傳遞過程中的實體。他們要管理本公司與外界好多公司的聯繫會話。當接收到表示層的數據後,會話層將會建立並記錄本次會話,他首先要找到公司B的地址信息,然後將整份資料放進信封,並寫上地址和聯繫方式。準備將資料寄出。等到確定公司B接收到此份報價單後,此次會話就算結束了,外聯部的同事就會終止此次會話。 <4>   傳輸層         傳輸層建立了主機端到端的鏈接,傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。我們通常說的,TCP UDP就是在這一層。埠號既是這裡的“端”。         傳輸層就相當於公司中的負責快遞郵件收發的人,公司自己的投遞員,他們負責將上一層的要寄出的資料投遞到快遞公司或郵局。 <5>   網路層
       本層通過IP定址來建立兩個節點之間的連接,為源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。就是通常說的IP層。這一層就是我們經常說的IP協議層。IP協議是Internet的基礎。         網路層就相當於快遞公司龐大的快遞網路,全國不同的集散中心,比如說,從深圳發往北京的順豐快遞(陸運為例啊,空運好像直接就飛到北京了),首先要到順豐的深圳集散中心,從深圳集散中心再送到武漢集散中心,從武漢集散中心再寄到北京順義集散中心。這個每個集散中心,就相當於網路中的一個IP節點。 <6>   數據鏈路層          將比特組合成位元組,再將位元組組合成幀,使用鏈路層地址 (乙太網使用MAC地址)來訪問介質,併進行差錯檢測。

     數據鏈路層又分為2個子層:邏輯鏈路控制子層(LLC)和媒體訪問控制子層(MAC)。

        MAC子層處理CSMA/CD演算法、數據出錯校驗、成幀等;LLC子層定義了一些欄位使上次協議能共用數據鏈路層。 在實際使用中,LLC子層並非必需的。

        這個沒找到合適的例子

<7>  物理層     

        實際最終信號的傳輸是通過物理層實現的。通過物理介質傳輸比特流。規定了電平、速度和電纜針腳。常用設備有(各種物理設備)集線器、中繼器、數據機、網線、雙絞線、同軸電纜。這些都是物理層的傳輸介質。          快遞寄送過程中的交通工具,就相當於我們的物理層,例如汽車,火車,飛機,船。 轉載:https://www.cnblogs.com/qishui/p/5428938.html MAC地址                                                                                                                                

      MAC(Media Access Control或者Medium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬體地址,用來定義網路設備的位置。在OSI模型中,第三層網路層負責 IP地址,第二層數據鏈路層則負責 MAC地址。因此一個主機會有一個MAC地址,而每個網路位置會有一個專屬於它的IP地址。

       MAC地址是網卡決定的,是固定的

 

 

 

 TTL:生命周期 單位:每一跳

NAT(Network Address Translation)網路地址轉換,其功能是將企業內部自行定義的非法IP地址轉換為Internet公網上可識別的合法IP地址。NAT技術能較好解決現階段IPV4地址短缺的問題。

 打洞機制                                                                                                                                                                  

       我們假設兩個扣扣A,B,他們通信需要通過騰訊的伺服器。也就是A發送消息給B的話,需要通過騰訊伺服器進行一次轉發,才到B那裡。但像視頻通話這要實時性要求比較高的通信,再用這種方式就不能保證他們通信的實時性,如果能想一個辦法讓他們直接通信,這樣實時性就會高很多。但是我們所知的路由器是有一個保護機制的(對於陌生的IP第一次發送過來的數據包,會進行屏蔽或丟棄,主要是為了防止網路的惡意攻擊),A跟B想進行通信的話所攜帶數據包的IP就必須是熟悉的,所以說這個時候就需要在兩個路由器之間打一個洞,而這件事情上騰訊就參與進來了。
        簡單來說在我們登入扣扣的時候,就會訪問騰訊伺服器,而騰訊伺服器也會回一個數據包,這個數據包會攜帶騰訊伺服器公網的IP,相對於來說伺服器的公網IP在A、B那裡都是熟悉的IP(就是為了防止陌生IP屏蔽),而伺服器藉助公網IP幫助A、B完成打洞(打洞就是實現一種通路),當它把這個洞打好以後A、B就可以實時通信。打洞是由伺服器來完成的,最終的目的就是為了提高數據傳輸的效率。

公網IP-公:直接訪問

公網IP-私網IP:NAT映射

私網IP-公:NAT映射

私-私:NAT映射,打洞機制


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

-Advertisement-
Play Games
更多相關文章
  • asp.net core 自定義認證方式 請求頭認證 Intro 最近開始真正的實踐了一些網關的東西,最近寫幾篇文章分享一下我的實踐以及遇到的問題。 本文主要介紹網關後面的服務如何進行認證。 解決思路 網關可以做一部分的認證和授權,服務內部有時候也會需要用戶的信息,這時該怎麼辦呢,我們使用的是 JW ...
  • 通過 Azure Pipelines 實現持續集成之docker容器化 Intro Azure DevOps Pipeline 現在對於公開的項目完全免費,這對於開源項目來講無疑是個巨大的好消息,在 Github 的 Marketplace 里有個 Azure Pipeline,就是微軟的 Azur ...
  • 關於Asp.Net的生命周期的文章,很多很多,不管是管道生命周期,還是頁面生命周期,圖文並茂的文章並不少,我就不說了,我只是在複習這些知識點的時候,想具體知道一個頁面的Page_Load方法到底是怎麼被調用,被執行的,為什麼訪問一個網址,就可以直接在Page_Load中斷點調試了。所以,寫了幾句代碼 ...
  • vscode近來深受的開發人員的喜愛。在下的前端同事們也紛紛使用vscode。在下就想了我等後端程式員也可以用vscode寫C#代碼。畢竟是從宇宙第一IDE Visual Studio衍生的不是。 就先從控制台開始。 1.首先要安裝.net core sdk https://www.microsof ...
  • 生產環境中我們往往會遇到以多個郵箱別名結尾的情況,如何快速導出當前域用戶郵箱以某欄位或尾碼結尾的用戶列表信息變得尤為重要,本例簡單彙總下如何通過Powershell快速篩選出當前郵箱信息包含azureyun.com的用戶列表並導出。實例如下:Get-ADUser -Filter * -SearchB... ...
  • 小技巧一例,批量刪除Visual Studio code或notepad++註解信息,便於讀取有效代碼或文本信息,具體操作如下:Visual Studio Code批量刪除註解行信息:在VS Code中我們可以通過Ctrl+h快捷鍵調出替換界面,在替換查找界面輸入空行對應的正則表達式^#.*並Alt... ...
  • 查看路由表 永久添加路由 重啟網路生效 ...
  • Windows 下Filebeat排錯Case實例一份,請查收。問題描述:Windows Server下Filebeat Agent服務無法正常啟動,導致網路數據打點無法正常進行,影響大範圍用戶網路使用等;報錯信息如下:查看對應log文件,日誌信息如下:2019-03-04T11:38:14+08:... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...