網路編程的基礎知識

来源: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...