電腦網路基礎

来源:https://www.cnblogs.com/wangyueping/archive/2019/07/07/11136032.html
-Advertisement-
Play Games

電腦網路基礎 1. 什麼是互聯網協議 一系列統一的標準,這些標準稱之為互聯網協議,互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite)。 互聯網協議的功能:定義電腦如何接入internet,以及接入internet的電腦通信的標準。 2. osi ...


電腦網路基礎

  1. 什麼是互聯網協議

    一系列統一的標準,這些標準稱之為互聯網協議,互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite)。

    互聯網協議的功能:定義電腦如何接入internet,以及接入internet的電腦通信的標準。

  2. osi七層協議

    互聯網協議按照功能不同分為osi七層或tcp/ip五層或tcp/ip四層

    我們將應用層,表示層,會話層並作應用層,從tcp/ip五層協議的角度來闡述每層的由來與功能,搞清楚了每層的主要協議,就理解了整個互聯網通信的原理。

    • 物理層

      物理層的由來:孤立的電腦之間要想一起玩,就必須接入internet,言外之意就是電腦之間必須完成組網。

      物理層功能:主要是基於電器特性發送高低電壓(電信號),高電壓對應數字1,低電壓對應數字0

    • 數據鏈路層

      數據鏈路層由來:單純的電信號0和1沒有任何意義,必須規定電信號多少位一組,每組什麼意思

      數據鏈路層的功能:定義了電信號的分組方式

      • 乙太網協議

        早期的時候各個公司都有自己的分組方式,後來形成了統一的標準,即乙太網協議ethernet

        ethernet規定:一組電信號構成一個數據包,叫做‘幀。每一數據幀分成報頭head和數據data兩部分

        head包含:① 發送者/源地址 ② 接受者/目標地址 ③ 數據類型

        data包含:數據包的具體內容

      • mac地址

        head中包含的源和目標地址由來:ethernet規定接入internet的設備都必須具備網卡,發送端和接收端的地址便是指網卡的地址,即mac地址

        mac地址:每塊網卡出廠時都被燒制上一個世界唯一的mac地址,長度為48位2進位,通常由12位16進位數表示

      • arp協議

        arp協議:通過目標IP地址獲取目標mac地址的一個協議

        arp協議由來:電腦通信基本靠吼,即廣播的方式,所有上層的包到最後都要封裝上乙太網頭,然後通過乙太網協議發送,而通信是基於mac的廣播方式實現,電腦在發包時,獲取自身的mac是容易的,如何獲取目標主機的mac,就需要通過arp協議

        arp協議功能:廣播的方式發送數據包,獲取目標主機的mac地址

        協議工作方式:每台主機ip都是已知的

        例如:主機172.16.10.10/24訪問172.16.10.11/24

        一:首先通過IP地址和子網掩碼區分出自己所處的子網

        ​ 將子網掩碼和IP地址進行與(&)運算即可得出IP地址所處的網段

        二:分析172.16.10.10/24與172.16.10.11/24是否處於同一網路

        ​ 場景:同一子網 數據包地址:目標主機mac,目標主機IP

        ​ 場景:不同子網 數據包地址:網管mac,目標主機IP

        ​ (如果不是同一網路,那麼目標IP為172.16.10.11,通過arp獲取的是網關的mac)

        三:這個包會以廣播的方式在發送端所處的自網內傳輸,所有主機接收後拆開包,發現目標IP為自己的,就響應,返回自己的mac地址

      • 廣播

        有了mac地址,同一網路內的兩台主機就可以通信了(一臺主機通過arp協議獲取另外一臺主機的mac地址)

        ethernet採用最原始的方式,廣播的方式進行通信,即電腦通信基本靠吼

        伺服器1按照上圖的格式以廣播的方式給伺服器4發送乙太網包,然而伺服器234都會收到伺服器1發來的包,拆開後發現目標mac地址不是自己的,就會將其丟棄,若是發現目標mac是自己的,就會做出響應。

    • 網路層

      網路層由來:有了ethernet、mac地址、廣播的發送方式,世界上的電腦就可以彼此通信了,問題是世界範圍的互聯網是由一個個彼此隔離的小的區域網組成的,那麼如果所有的通信都採用乙太網的廣播方式,那麼一臺機器發送的包全世界都會收到,這就不僅僅是效率低的問題了,這會是一種災難。

      上圖結論:必須找出一種方法來區分哪些電腦屬於同一廣播域,哪些不是,如果是就採用廣播的方式發送,如果不是,就採用路由的方式(向不同廣播域/子網分發數據包),mac地址是無法區分的,它只跟廠商有關。

      網路層功能:引入一套新的地址用來區分不同的廣播域/子網,這套地址即網路地址

      • IP協議

        規定網路地址的協議叫IP協議,它定義的地址稱之為IP地址,廣泛採用的v4版本即ipv4,它規定網路地址由32位2進位表示,範圍0.0.0.0-255.255.255.255,一個IP地址通常寫成四段十進位數,例:192.168.1.1

      • IP地址

        IP地址分成兩部分

        1. 網路部分:標識子網
        2. 主機部分:標識主機

        註意:單純的IP地址段只是標識了IP地址的種類,從網路部分或主機部分都無法辨識一個IP所處的子網

        例:172.16.10.1與172.16.10.2並不能確定二者處於同一子網

      • 子網掩碼

        所謂”子網掩碼”,就是表示子網路特征的一個參數。它在形式上等同於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幫我們區分子網,乙太網層的mac幫我們找到主機,然後大家使用的都是應用程式,你的電腦上可能同時開啟QQ,暴風影音,等多個應用程式,

      那麼我們通過IP和mac找到了一臺特定的主機,如何標識這台主機上的應用程式,答案就是埠,埠即應用程式與網卡關聯的編號。

      傳輸層功能:建立埠到埠的通信

      補充:埠範圍0-65535,0-1023為系統占用埠

      • TCP協議

        可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網路的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。

      • UDP協議

        不可靠傳輸,”報頭”部分一共只有8個位元組,總長度不超過65,535位元組,正好放進一個IP數據包。

      • TCP與UDP的對比

        TCP:傳輸控制協議,提供的是面向連接、可靠的位元組流服務。當客戶和伺服器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重覆數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
        UDP:用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和伺服器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快

      • TCP的三次握手和四次揮手

        三次握手

        TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接:

        位碼即tcp標誌位,有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)

        Sequence number(順序號碼) Acknowledge number(確認號碼)

        第一次握手:主機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則連接建立成功。

        完成三次握手,主機A與主機B開始傳送數據。

        一個完整的三次握手也就是 請求---應答---再次確認

        四次揮手:

        由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

        (1)客戶端A發送一個FIN,用來關閉客戶A到伺服器B的數據傳送。

        (2)伺服器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。

        (3)伺服器B關閉與客戶端A的連接,發送一個FIN給客戶端A。

        (4)客戶端A發回ACK報文確認,並將確認序號設置為收到序號加1。

    • 應用層

      應用層由來:用戶使用的都是應用程式,均工作於應用層,互聯網是開放的,大家都可以開發自己的應用程式,數據多種多樣,必須規定好數據的組織形式

      應用層功能:規定應用程式的數據格式。

      例:TCP協議可以為各種各樣的程式傳遞數據,比如Email、WWW、FTP等等。那麼,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程式協議就構成了”應用層”。

  3. 每層運行的常見物理設備

  4. 每層運行的常見的協議

............


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

-Advertisement-
Play Games
更多相關文章
  • 首先,在C 中,多態的體現是什麼?虛函數、抽象方法、介面。廢話不多說,直接上代碼: 我們抽象出來基類,將其改造為抽象類和抽象方法,使其在子類中重寫各自的邏輯,而後具體的選擇(也就是條件語句)交給客戶端來處理。 就這麼簡單,細心的我們可以發現,這種多態的寫法好像策略模式,沒錯!設計模式中絕大數的模式都 ...
  • [TOC] 一、I/O模型介紹 為了更好地瞭解I/O模型,我們需要事先回顧下:同步、非同步、阻塞、非阻塞 同步(synchronous) I/O和非同步(asynchronous) I/O,阻塞(blocking) I/O和非阻塞(non blocking)I/O分別是什麼,到底有什麼區別?這個問題其實 ...
  • 一、新增 1、使用save() 2、使用createCommand 原生sql 3、使用createCommand insert 4、批量插入 二、刪除 1、使用delete() 2、使用deleteAll()批量刪除 3、使用createCommand delete() 4、使用createCom ...
  • 相似基因 題目 【題目描述】 大家都知道,基因可以看作一個鹼基對序列。它包含了4種核苷酸,簡記作A,C,G,T。生物學家正致力於尋找人類基因的功能,以利用於診斷疾病和發明藥物。 在一個人類基因工作組的任務中,生物學家研究的是:兩個基因的相似程度。因為這個研究對疾病的治療有著非同尋常的作用。 兩個基因 ...
  • 1、BeanFactory 介紹 1.1 首先什麼是Bean? 1、Bean在Spring技術中是基於組件 2、他是Spring容器管理的最基本最常見的單元。在spring的應用場合中,bean可以是數據源、java的普通類 3、其實例保存在Spring的容器中,這種方式也是spring的核心思想所 ...
  • 1、Spring主要用到兩種設計模式 1.1 工廠模式 Spring容器就是實例化和管理全部Bean的工廠。 工廠模式可以將Java對象的調用者從被調用者的實現邏輯中分離出來。 調用者只關心被調用者必須滿足的某種規則,這裡的規則我們可以看做是介面,而不必關心實例的具體實現過程,具體實現由Bean工廠 ...
  • float為什麼比int表示的範圍廣? 什麼是單精度和雙精度? float表示小數的時候為什麼會有精度丟失? 帶著這幾個問題,我們來探究下java中float類型在電腦的表示形式。 java中int占用4個位元組,float也是占用4個位元組,但是為什麼float表示的範圍要比int大呢,因為兩者在計 ...
  • emmm,沒有啥前言 玩過SpringBoot的都知道,SpringBoot啟動的時候,預設會在控制台列印SpringBoot字樣和當前版本。 可是腦洞奇大的程式員怎麼可能就這麼拘泥於正常banner呢? 怎麼騷怎麼來是吧~ 具體說明用法,我就不一一舉例了,網上有很多設置banner的方案。 我一般 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...