互聯網協議

来源:https://www.cnblogs.com/Maxs-message/archive/2022/07/26/16520538.html
-Advertisement-
Play Games

互聯網協議 1.C/S B/S 架構 client 基於網路通信 server browser 基於網路通信 server server端必須滿足的條件: 1. 穩定運行(網路. 硬體. 操作系統. 服務端軟體) 2. 服務端必須綁定一個固定的地址 2.什麼是互聯網 兩大要素: 1. 底層的物理鏈接 ...


互聯網協議


1.C/S B/S 架構

client ---基於網路通信--- server
browser ---基於網路通信--- server

server端必須滿足的條件:
    1. 穩定運行(網路. 硬體. 操作系統. 服務端軟體)
    2. 服務端必須綁定一個固定的地址

2.什麼是互聯網

兩大要素:
1. 底層的物理鏈接介質. 為通信鋪路
2. 一套統一的互聯網通信標準 --> 互聯網通信協議
互聯網協議就是電腦界的英語

3. 網路通信過程(ios五層協議)

	物理層: 發送電信號. 將傳入的信息通過高低電頻的方式進行傳輸 -> 高電頻(1) 低電頻(0)
        數據由大量的1010101011100101傳輸. 其中head包括16個位元組(發送者6. 接受者6. 數據類型6). data至少包括64個位元組

    數據鏈路層: 分組. 主要是靠ethernet網通過廣播的方式傳遞信息(乙太網協議有報頭和數據).規定每台電腦都配有一個mac地址(物理地址)
        且只能在一個區域網內可以通過mac地址傳輸信息. 互聯網由眾多區域網組成. 各區域網之間通過各種設備鏈接

    網路層: IP協議規定每台電腦都有一套ip地址(點分十進位組成). ip地址和ip子網掩碼的按位與可以定位當前地址的區域網地址也就是子網地址.
        所以想要進行網路通信: 第一件事就是拿到對象的ip地址和ip子網掩碼來計算出子網地址.
            1. 如果一樣 -> 在一個區域網內 -> 基於mac地址通信
            2. 如果不一樣 -> 就通過ip地址定位到對方的區域網. 然後通過mac地址進行通信
        arp協議可以使ip地址解析出對應的mac地址. 這樣基本一個ip地址就可以定位一個電腦. 通常使用ping 192.168.11.181
        arp是怎麼獲取mac地址的:
            1. 在同一個區域網中. 直接通過廣播的方法發送一個通信攜帶目標ip的地址. 收到自己ip地址的電腦會將mac地址返回給發送的電腦
            2. 不在同一個區域網中. 電腦發送arp協議給網關(相當於是每一個區域網的管理者. 每個班級的班主任).
            網關通過路由協議傳遞給該區域網的對應ip地址. 並將自己的mac地址按照原路返回

    傳輸層: 基於TCP/UDP協議. 賦予每一應用軟體一個埠(port).

    應用層: 基於HTTP/FTP/mail協議對軟體進行包裝

標識地址的方式:
    ip地址和mac地址就可以定位唯一一臺電腦
    ip+mac+port可以定位電腦唯一一個基於互聯網通信的軟體
    網路通信中: 發送網路信息的一端一直在打包信息. 接收的一端一直在拆包.
    其各種層級操作都是由操作系統去調用的. 所以應用層在將數據交給操作系統的時候應用層數據就已經發送完畢. 後面的他都控制不了了

    url(Universal Resource Locator)是統一資源定位符. 用來定位全世界唯一的資源. 其預設埠是80. 瀏覽器會自動補全省略
    url中的功能變數名稱對應一個ip地址.
    瀏覽器訪問url的過程:
        1. 瀏覽器接收用戶操作產生一個url地址.
        1. 先將url的功能變數名稱提交給DNS伺服器. 然後會收到一個ip+port.
        2. 然後會根據這個ip地址和埠定位到唯一的電腦軟體.
        3. 然後通過url中攜帶的path找到計算中想要的文件
        4. 伺服器將文件返回給客戶端

    電腦之間通過交換機傳遞信息. 但是一個包發送給目標電腦後. 不會按照原來的方法繼續發送廣播. 其原因是交換機存在一個mac地址學習.
    來解決重覆發廣播的問題. 其中會存一張mac地址表. 將每一次通信的雙方記錄下來. 長期下來所有的mac地址都會被學習到交換機中

4.tcp協議

三次握手建立鏈接
四次握手斷開鏈接

面試常問問題:
1. 為何建立鏈接需要三次而斷開需要四次
    答案: 建立鏈接的時候沒有真正的數據傳輸. 所以中間兩步可以合成一步.
    斷開連接的時候由於有數據傳輸. 如果客戶端數據先傳輸完就客戶端先斷. 但是服務端數據可能還沒有傳輸完成. 所以不能同時發請求. 有四次
2. 為何tcp協議是可靠協議而udp是不可靠協議
    因為udp協議發送請求不等待對方響應直接把緩存刪除掉. tcp會等待響應之後再將緩存刪除
    tcp協議的優點: 安全可靠  udp協議: 速度快
3. tcp協議建立鏈接與斷開鏈接的狀態信息及其表示意義

5.半連接池(backlog)

限制的是同一時刻的請求.而非連接數

6.DDos攻擊(Distributed denial of service attack)簡述

​ 就是基於上文tcp協議的好人性質(所有外部發送的請求都會接收並返回). 攻擊者製造大量請求發送給伺服器. 造成了伺服器產生大量的堆積請求. 有的網站的併發量不夠. 真正的用戶就訪問不進來了.相當於很多假的請求擋在伺服器門口. 導致伺服器產生宕機這種的情況就是ddos攻擊. ddos攻擊半連接池的增大對他的效果是微乎其微的

​ 一般網站收到這種攻擊伺服器就會跟著倒霉. 有的就會直接被商家解約. 然後網站被迫下線之後去別的地方買伺服器也買不著. 導致這個網站就消失了. 但是為什麼天貓. 淘寶就不會倒閉. 伺服器併發流量強大隻是原因之一. 另外一個就是有國家撐腰. 可以查到攻擊源進而來躲避

本文來自博客園,作者:{Max},僅供學習和參考


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

-Advertisement-
Play Games
更多相關文章
  • 條件控制語句及表達式 運算符及表達式 1.()前面不能直接用++ console.log(++(a--)); //() 不能和++ 一起使用 2.str 與 Number值比較(字元串比較時會自動變為Number值) console.log('123A'>213);//false 自動轉為numbe ...
  • 條件控制語句及表達式 運算符及表達式 ()前面不能直接寫++ console.log(++(a));//()不能和++一起使用 字元串和數值進行比較(字元串會自動轉為數值) console.log(1>2)//false console.log('123'>213);//flase 自動轉為numb ...
  • 前段時間在用Promise.all執行一個非常大批量的操作時遇到一個奇怪的問題。 這個Promise.all需要遍歷一個指定目錄中的所有文件,並以非同步的方式讀取文件內容併進行後續操作。由於目錄中的文件數目比較多(大約8000+),Promise.all在執行的過程中有許多文件讀取失敗,但是如果指定一 ...
  • 1 多人語音聊天功能介紹 本文展示瞭如何使用 ZEGO Express SDK 構造多人音視頻通話場景,即實現多對多實時音視頻聊天互動。用戶可在房間內與其餘用戶進行實時音視頻通話,互相推拉流。該場景可用於多人實時音視頻聊天、多人視頻會議等。 2 Web端實現多人語音聊天準備工作 在應用多人音視頻通話 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 微信支付介紹 微信公眾號程式或微信小程式項目中基本都要有微信支付。支付場景基本就是點擊支付,然後手機底部拉起輸入微信支付密碼彈窗,密碼輸入正確後,支付完成。但是無論是微信小程式或微信公眾號程式都是在後端調用微信api介面進行統一下單,將接 ...
  • 需求: el-form 每行顯示兩列,底部按鈕居中 問題: 以前的解決辦法是: el-col, el-row。但是這裡只有一個 el-form-item 的 label 數據是已知的,其餘項都是迴圈得到的,數量不固定,因此不能採用 el-col 方式。 嘗試 嘗試過 item 左浮動,flex,底部 ...
  • 需求 1 :設置初始高亮 子組件: 父組件 需求 2 :高亮行的變化,需要把數據傳遞到兄弟組件中 解決辦法:EventBus 參考鏈接: http://t.csdn.cn/iwOJc main.js 中: 子組件 1 : 子組件 2 : 需求 3 :子組件把高亮行的 index 和表格總條數傳遞給父 ...
  • 從ES6開始增加了Promise類型,稱為了主導性的非同步編程機制。 期約Promise是一個有狀態的對象,可能處於如下三種狀態之一: 待定(pending) 兌現(fulfilled,或被稱為“解決”,resolved) 拒絕(rejected) pending是期約的最初始狀態。在這個狀態下,pr ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...