天天看點

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

目錄

1 計算機網絡概述

1.1 網絡概念

1.2 資料交換方式

1.3 網絡分類

1.4 網絡的性能名額

1.5 網絡體系結構

1. 概念

2. OSI參考模型

3 網絡層

4 傳輸層

5 會話層

6 表示層

7 應用層

3. TCP/IP參考模型

4. 5層參考模型

5層結構

資料封裝

2. 應用層

2.1 體系結構

1. 客戶機/伺服器結構(Client/Server)

2. P2P結構(peer-to-peer)

3. 混合結構

2.2 程序間通信

1. Socket

2. 尋址

3. 應用層協定

2.3 Web應用

1. HTTP協定

2. Cookie

3. Web緩存/代理伺服器技術

2.4 Email應用

1. 郵件用戶端 (user agent)

2. 郵件伺服器 (mail server)

3. SMTP協定(Simple Mail Transfer Protocol)

4. 郵件通路協定

2.5 DNS應用

1.DNS服務

2.分布式層次式資料庫

4. DNS記錄和消息格式

2.6 P2P應用

1. BitTorrent

2. 索引設計

2.7 Socket程式設計

1. Socket API

2. API調用流程

2.8 CDN

3. 傳輸層

3.1 傳輸層服務

1. 多路複用/分用

2.可靠資料傳輸機制

3. 流量控制機制

4. 擁塞控制機制

3.2 Internet傳輸層協定

1. UDP

2. TCP

4. 網絡層

4.1 網絡層服務

1. 轉發

2. 路由

3. 連接配接建立

4. 網絡層服務模型

4.2 虛電路網絡

4.3 資料報網絡

4.4 IPv4協定

1. IP資料報格式

2. IP分片

3. IP編址(addressing)

4. CIDR

5. 路由聚合

4.5 DHCP協定

4.6 NAT

4.7 ICMP協定

4.8 IPv6協定

4.9 路由算法

4.10 Internet路由

1. RIP協定

2. OSPF

3.BGP協定

4.11 SDN控制平面

4.12 網絡管理與SNMP

5. 資料鍊路層

5.1 差錯檢測和糾正比特

1. 奇偶校驗碼

2. Internet校驗和

3. 循環備援校驗碼

5.2 多路通路控制(MAC)協定

1. 信道劃分(channel partitioning)MAC協定

2. 随機通路(random access)MAC協定

3. 輪轉(taking turns)MAC協定

5.3 ARP協定

1. MAC位址

2. 位址解析協定

5.4 以太網

以太網幀結構

交換機

VLANs

1 計算機網絡概述

接口與協定的差別

接口規定了運作在一個端系統上的程式請求網際網路基礎設施向運作在另一個端系統上的特定目的地程式傳遞資料的方式

協定定義了在兩個或多個通信實體之間交換的封包的格式和順序,以及封包發送/或接收一條封包或其他事件所采取的動作。

TCP/IP隻是一個協定棧,就像作業系統的運作機制一樣,必須要具體實作,同時還要提供對外的操作接口。這個就像作業系統會提供标準的程式設計接口,比如win32程式設計接口一樣,TCP/IP也要提供可供程式員做網絡開發所用的接口,這就是Socket程式設計接口。

1.1 網絡概念

  • 網絡:許多計算機連在一起
  • 網際網路: internet 許多網絡連在一起
  • 網際網路: Internet 全求最大的網際網路

1.2 資料交換方式

  • 電路交換(Circuit Switching) 實時性、建立專用路線
  • 封包交換(Message Switching)封包一般比分組長、封包交換的時延較長
  • 分組交換(Packet Switching)高效、迅速 時延高
    • 路由器存儲轉發功能
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

1.3 網絡分類

按作用範圍分:

新的了解,不單單從網絡覆寫的範圍來區分廣域網、區域網路

使用了廣域網技術即廣域網

使用了區域網路技術即區域網路

  • 區域網路:自己花錢購買裝置、自己維護、帶寬固定(100M,1000M),距離一般在100m以内
  • 廣域網:花錢買服務、花錢買帶寬

1.4 網絡的性能名額

  • 速率:數字信道上傳送資料位數的速率
  • 帶寬:數字信道能傳送的最高速率 (b/s)
  • 吞吐量(Throughput):發送端與接收端之間傳送資料速率(b/s) 瓶頸鍊路
  • 時延:
    • 發送(傳輸)時延(transmission delay)=分組長度(bit)/鍊路帶寬(bit/s)分組長度(bit)/鍊路帶寬(bit/s)
    • 傳播時延(propagation delay)=實體鍊路長度(m)/信号在信道上的傳播速率(m/s)實體鍊路長度(m)/信号在信道上的傳播速率(m/s)
    • 處理時延:差錯檢測、确定輸對外連結路,一般<msec
    • 排隊時延 :分組在路由器緩存中排隊産生,等待輸對外連結路可用
      • 丢包:分組到達速率超出輸對外連結路容量時,超出部分丢棄
  • 時延帶寬積=傳播時延×帶寬傳播時延×帶寬 ;又稱以比特為機關的鍊路長度
  • RTT(Round-Trip Time)往返時間
  • 使用率:
    • 信道使用率
    • 網絡使用率:信道使用率權重平均值

1.5 網絡體系結構

優點:子產品化的分層易于系統的更新、維護,任何一層服務的改變對于系統其他層都是透明的

1. 概念

  • 實體(Entity):交換資訊的硬體或軟體程序
  • 協定(Protocol):控制兩個對等通信的規則
  • 服務(Service):下層向上層提供服務,上層需要下層提供的服務來實作本層的功能
  • 服務通路點(SAP):相鄰兩層實體間交換資訊的地方

2. OSI參考模型

(Reference Model)

1 實體層

  1. 編碼方式
    • 單/雙極性不歸零碼
    • 單/雙極性歸零碼 (缺點:無法判斷結束信号)
    • 曼切斯特編碼
    • 差分曼切斯特編碼(抗幹擾更強)
  2. 傳輸模式
    • 單工(Simplex)
    • 半雙工(half-duplex)
    • 全雙工(full-duplex)
  3. 接口特性
    • 機械、電氣、功能、規程特性
  4. 比特同步
    • 時鐘同步

2 資料鍊路層

  1. 負責結點-結點(node-to-node)資料傳輸
  2. 組幀(Framing)
  3. 實體尋址(Physical addressing)
  4. 流量控制(Flow control)
    • 避免淹沒接收端
  5. 差錯控制(Error control)
    • 檢測并重傳損壞或丢失幀,并避免重複幀
  6. 通路(接入)控制(Access control)
    • 在任一給定時刻決定哪個裝置擁有鍊路(實體媒體控制使用權)

3 網絡層

  1. 負責源主機到目的主機資料分組(packet)傳遞:跨越多個網絡
  2. 邏輯尋址(Logical addressing):全局唯一,IP位址
  3. 路由(Routing):路徑選擇
  4. 分組轉發

4 傳輸層

  1. 負責源-目的(端-端)(程序間)完整封包傳輸
  2. 封包分段與重組
  3. SAP尋址
    • 確定将完整封包送出給正确程序,如端口号
  4. 連接配接控制
  5. 流量控制
  6. 差錯控制

5 會話層

  1. 對話控制(dialog controlling)
    • 建立、維護
  2. 同步(synchronization)
    • 在資料流中插入“同步點”
  3. 最“薄”的一層

6 表示層

  1. 處理兩個系統間交換資訊的文法與語義(syntax and semantics)問題
  2. 資料表示轉化
    • 轉換為主機獨立的編碼
  3. 加密/解密
  4. 壓縮/解壓縮

7 應用層

  1. 支援使用者通過使用者代理(如浏覽器)或網絡接口使用網絡(服務)
  2. 典型應用層服務
    • 檔案傳輸(FTP)
    • 電子郵件(SMTP)
    • Web(HTTP)
    • ......

通信過程

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

資料封裝

  • 增加控制資訊:構造協定資料單元(PDU)
    • 位址(Address):辨別發送端/接收端
    • 差錯檢測碼(Error-detecting code)
    • 協定控制(Protocol control):實作協定功能的附加資訊
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

網絡排錯

從底層到高層

實體層安全

資料鍊路層安全 :ADSL、 無線AP

網絡層安全

應用層安全:SQL注入漏洞、上傳漏洞

3. TCP/IP參考模型

實際網絡的運作方式

IP over Everything

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

4. 5層參考模型

綜合OSI和TCP/IP的優點

5層結構

  1. 應用層: 通過應用程序間的互動來完成特定網絡應用。應用層協定定義的是應用程序間通信和互動的規則。

    FTP, SMTP, HTTP

  2. 傳輸層: 運輸層的任務是負責為兩個主機中程序之間的通信提供通用的資料傳輸服務。應用程序利用該服務傳送應用層封包 :

    TCP, UDP

  3. 網絡層: 網絡層為分組交換網上不同主機提供通信服務。網絡層将運輸層産生的封包段或使用者資料報封裝成分組和包進行傳送

    IP協定、路由協定等

  4. 鍊路層: 兩台主機間的資料傳輸,總是一段一段在資料鍊路上傳送的,這就需要使用專門的鍊路層協定。在兩個相鄰節點間的鍊路上傳送幀,每一幀包括資料和必要的控制資訊(如同步資訊,位址資訊,差錯控制等)。相鄰網絡元素(主機、交換機、路由器等)的資料傳輸

    以太網(Ethernet)、802.11 (WiFi)、 PPP

  5. 實體層:比特傳輸

資料封裝

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

2. 應用層

2.1 體系結構

1. 客戶機/伺服器結構(Client/Server)

  • 伺服器

    24小時不間斷提供服務

    永久性通路位址/域名

    利用大量伺服器實作可擴充性

  • 客戶機

    使用伺服器提供的服務

    間歇性接入網絡

    可能使用動态IP位址

    不會與其他客戶機直接通信

2. P2P結構(peer-to-peer)

  • 沒有永遠線上的伺服器
  • 任意端系統/節點之間可以直接通訊
  • 節點間歇性接入網絡
  • 節點可能改變IP位址

高度可伸縮,難以管理

3. 混合結構

綜合以上兩者的優點,規避缺點。如Napster

2.2 程序間通信

1. Socket

客戶機程序:發起通信的程序

伺服器程序:等待通信請求的程序

  • 同一主機上的程序通信有程序間通信機制,由作業系統提供:管道、消息隊列、共享記憶體、信号量
  • 不同主機間的程序通信:使用套接字(Socket),也稱為網絡程式設計的API

2. 尋址

  • IP位址
  • 端口号/Port number
    • 為主機上每個需要通信的程序配置設定一個端口号

3. 應用層協定

  • 網絡應用需遵循應用層協定
  • 公開協定 :由RFC(Request For Comments)定義
  • 私有協定 : 多數P2P共享檔案應用
  • 消息類型(type)
  • 消息文法(syntax)
  • 字段語義(semantics)
  • 規則(rules)

2.3 Web應用

1. HTTP協定

  • C/S結構
  • 請求(指令)/響應互動模式
  • 使用TCP傳輸服務
    • 伺服器在80端口等待客戶請求
    • 浏覽器發起TCP連接配接請求
    • 伺服器接受TCP連接配接
    • 交換HTTP消息
    • 關閉TCP連接配接
  • 無狀态(stateless)
    • 伺服器不維護任何有關用戶端過去所發請求的資訊
  • 1.0version 非持久性連接配接
    • 每次傳輸一個對象
    • 任何格式的内容都可以發送,這使得網際網路不僅可以傳輸文字,還能傳輸圖像、視訊、二進制等檔案
    • 有GET、POST、HEAD請求指令
    • 響應時間 :2RTT+檔案發送時間
      計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 1.1version 持久性連接配接
    • 每次可傳輸多個對象
    • 支援長連接配接(persistent connection)和請求的流水線(pipelining),connection字段預設keep-alive
    • 錯誤通知的管理:新增了24個錯誤狀态碼
    • 帶寬優化及網絡連接配接的使用:增加range頭域,允許隻請求資源的某個部分
    • 新增方法:PUT、 PATCH、 OPTIONS、 DELETE
  • 請求消息
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 響應消息
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 2.0 version 提升性能
    • 多路複用,允許同時通過單一的HTTP/2連接配接發起多重的請求-響應消息
    • 二進制分幀,文本表示形式多樣,需要考慮較多場景,二進制比文本更友善健壯
    • header壓縮,通訊雙方各自cache一份header fields表避免重複header傳輸
    • 服務端推送
  • 3.0 version QUIC實作機制
    • 基于UDP協定
    • 快速重新開機會話(支援手機網絡切換),使用uuid來辨別每一次連接配接,網絡環境變化但uuid不變就不需要握手
  • 與HTTPS的差別
    • https需要到CA申請證書
    • http運作在tcp上,所有傳輸的資料都是明文的,https運作在SSL/TLS之上,所有傳輸的内容都經過加密
    • http預設端口為80,後者是443
  • HTTPS工作流程

    第一步:客戶使用https的URL通路Web伺服器,要求與Web伺服器建立SSL連接配接。

    第二步:Web伺服器收到用戶端請求後,會将網站的證書資訊(證書中包含公鑰)傳送一份給用戶端。

    第三步:用戶端的浏覽器與Web伺服器開始協商SSL連接配接的安全等級,也就是資訊加密的等級。

    第四步:用戶端的浏覽器根據雙方同意的安全等級,建立會話密鑰(随機産生),然後利用網站的公鑰将會話密鑰加密,并傳送給網站。

    第五步:Web伺服器利用自己的私鑰解密出會話密鑰。

    第六步:Web伺服器利用會話密鑰加密與用戶端之間的通信。

    Q: 使用者通路一個網站的時候背後的過程與步驟是怎樣的?

    A: 基本流程:

    利用DNS協定進行域名解析 --> 建立tcp協定三次握手過程 --> 用戶端發出通路網站相應頁面請求(發出http協定請求封包) --> 服務端發出相應通路頁面的響應資訊(發出http響應封包) --> 斷開tcp協定四次揮手過程

    1. DNS查詢順序:Hosts表-->本地DNS緩存-->上層DNS(疊代、泛洪)
    2. 在本機與目标伺服器之間的路由過程,包括IP協定、ARP協定、OSPF協定、BGP協定
    3. 拿到響應消息了還需要浏覽器進行解析渲染

2. Cookie

記錄使用者狀态,有隐私問題

  • 響應消息cookie頭部行
  • 請求消息cookie頭部行
  • 儲存在用戶端主機上的cookie檔案,由浏覽器管理
  • Web伺服器背景資料庫

3. Web緩存/代理伺服器技術

一般由ISP架設

  • 在不通路伺服器的前提下滿足用戶端的HTTP請求
  • 縮短客戶請求的響應時間
  • 減少機構/組織的流量
  • 在大範圍内實作有效的内容分發(CDN)

條件性GET方法更新緩存的資料,解決一緻性問題

2.4 Email應用

1. 郵件用戶端 (user agent)

2. 郵件伺服器 (mail server)

  • 郵箱:儲存發給該使用者的Email
  • 消息隊列(message queue):存儲等待發送的Email

3. SMTP協定(Simple Mail Transfer Protocol)

  • 用戶端:發送消息的伺服器
  • 服務端:接受消息的伺服器
  • 使用TCP進行Email消息的可靠傳輸
  • 端口25
  • 傳輸三個階段
    • 握手
    • 消息傳輸
    • 關閉
  • 指令/響應互動模式
    • 指令command :ASCII文本
    • 響應 response:狀态代碼和語句

//先去qq郵箱打開smtp,擷取授權碼 //輸入需要進行base64加密 c:telnet smtp.qq.com 25 s:220 xxx.qq.com c:helo host //打招呼 s:250 xxx.qq.com c:AUTH LOGIN //登入認證 s:334 VXNbWU6 //輸入賬号 c:MTA3MxcS5jb20= s:334 UGFc3d6 //輸入授權碼 c:dWdwaXF5Y3ZzraWhQ== s:235 Authentication successful c:mail from: <[email protected]> //來自 s:250 OK c:rcpt to: <[email protected]> //發往 s:250 OK c:data s:354 End data with <CR><LF>.<CR><LF>. c:here is what i want to send c:. s:250 OK: queued as. c:quit s:221 bye

  • MIME:多媒體郵件擴充,在頭部行增加擴充

4. 郵件通路協定

用于從伺服器擷取郵件

  • POP: Post Office Protocol

    較簡單,認證授權和下載下傳

    無狀态

  • IMAP: Internet Mail Access Protocol

    更多功能,更複雜

    有狀态

  • HTTP

2.5 DNS應用

1.DNS服務

Domain Name System

解決Internet上主機/路由器的識别問題

  • 域名向IP位址的翻譯
  • 主機名稱
  • 郵件伺服器别名
  • 負載均衡:Web伺服器

    多個IP位址對應一個名字

2.分布式層次式資料庫

  1. 解決的問題:
    • 單點失敗問題
    • 流量問題
    • 距離問題
    • 維護性問題
  2. 根域名伺服器
    • 不知道映射通路權威域名伺服器
    • 全球13個
  3. 頂級域名伺服器(TLD, top-level domain)
    • com, org,net, edu等
  4. 權威域名伺服器(Authoritative)
    • 組織的域名解析伺服器
  5. 本地域名解析伺服器
    • 不嚴格屬于層級體系發
    • 每個ISP有一個
    • 主機進行查詢發送給本地進行代理
    • 疊代查詢:代理進行多次詢問
    • 遞歸查詢:代理詢問一次讓其他伺服器去找

4. DNS記錄和消息格式

1.DNS記錄

資源記錄(RR,resource records)

format:(name, value, type, ttl)

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

2.DNS協定與消息

查詢(query)和回複(relpy)消息

消息格式相同

同時使用TCP(區域傳輸時)和UDP(域名解析時)

2.6 P2P應用

檔案分發比C/S架構快

1. BitTorrent

  • 檔案分為chunk
    • 擷取:稀缺優先、定期查詢鄰居持有的chunk清單
    • 發送:tit-for-tat
  • 節點可自由加入和離開

Q:為什麼營運商會封BT?

A:很簡單,影響網絡營運商超賣帶寬了。ISP尤其是國内ISP最大的問題是,給使用者提供網絡接入服務,但從不保證服務品質。宣傳上的“100M帶寬光纖入戶”從來不意味着你真的能用上100M帶寬。甚至ISP從主觀上,會用各種手段限制你,不讓你用滿這100M帶寬。

抛開遠端伺服器和整體網絡鍊路的因素以外,跑不滿100M最主要原因在于ISP超賣,他們手裡總共有1000M帶寬,就敢給20家住戶每家賣100M帶寬,然後祈禱這20家不要同時把100M帶寬跑滿。隻要你用任何技術手段,不管是BT CT 還是ET,隻要大部分使用者能這個技術穩定跑滿帶寬,ISP就會對這個技術恨得牙癢癢,恨不得封殺了之~除此以外的理由都是借口。

連結:https://www.zhihu.com/question/310343843/answer/618352530

2. 索引設計

  1. 集中式索引:增設中央伺服器
    • 單點失效問題
    • 性能瓶頸
    • 版權問題
  2. 洪泛式查詢:query flooding
    • 覆寫網絡(overlay network): Graph
    • 有很大的網絡負擔
    • 查詢消息通過已有TCP連接配接發送
    • 節點轉發查詢消息
    • 查詢命中反向路經傳回
  3. 層次式覆寫網絡
    • 介于集中與洪泛之間
    • 節點和超級節點間維持TCP連接配接:集中
    • 某些超級節點之間維持TCP連接配接:洪泛
    • 如:skype

2.7 Socket程式設計

1. Socket API

  • 辨別通信端點(對外):IP位址+端口号
  • 作業系統/程序管理(對内):套接字描述符(socket descriptor)

類型:

  • SOCK_STREAM: TCP協定
  • SOCK_DGRAM: UDP協定
  • SOCK_RAW:面向網絡層

函數:

  • WSAStartup() 使用之前調用,初始化socket動态連結庫
  • WSACleanup() 使用之後調用
  • socket() 建立套接字
  • closesocket() 關閉套接字,引用為0關閉
  • bind() 為套接字設定本地端點位址,
    • 客戶程式一般不必調用
    • 服務端使用位址通配符 INADDR_ANY
  • listen() 僅服務端,TCP連接配接,置伺服器端的流套接字處于監聽狀态,設定連接配接請求隊列大小
  • connect() 僅用戶端,用戶端調用使其與特定計算機的特定端口的套接字進行連接配接
  • accept() 伺服器端,用于TCP連接配接,建立一個新的套接字與客戶通信,因為TCP連接配接是點對點的,實作并發的TCP伺服器
  • send() 有連接配接的方式TCP(客戶與伺服器),或調用了connect函數的UDP(客戶)套接字
  • sendto() 無連接配接方式UDP(伺服器),或未調用connect函數的UDP用戶端套接字
  • recv() 同上
  • recvfrom() 同上

2. API調用流程

網絡位元組順序:實作本地位元組順序與網絡位元組順序進行轉換

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

基本服務類型:

  • 循環無連接配接
  • 循環面向連接配接
  • 并發無連接配接:建立子程序處理
  • 并發面向連接配接

2.8 CDN

内容分發網絡

DASH(Dynamic Adaptive Streaming over HTTP)經HTTP的動态适應流

可以壓縮生成相同視訊的多個版本,每個版本有不同的品質等級。

CDN管理分布在多個地理位置上的伺服器,在它的伺服器中存儲視訊(或其他資源)的副本,并且所有試圖将每個使用者請求定向到一個将提供最好的使用者體驗的CDN位置

3. 傳輸層

傳輸層協定為運作在不同Host上的應用程序提供了一種邏輯通信機制
  • 位于網絡層之上
  • 依賴于網絡層的服務
  • 對網絡層服務進行增強

3.1 傳輸層服務

1. 多路複用/分用

此處的複用和分用是邏輯上的概念

發送端多路複用:處理來自多個套接字的資料,添加傳輸頭

Q: I/O多路複用技術(multiplexing)是什麼?

A:

  • 常見的IO操作,如read和write,通常是阻塞IO,也就是說當你調用read時,如果沒有資料收到,那麼線程或者程序就會被挂起,直到收到資料。這樣在處理大量連接配接時可能需要很多線程,比如4個核要跑1000個線程,那麼每個線程的時間槽非常短,而線程切換非常頻繁,大量時間花費在上下文切換。
  • 此時引入非阻塞IO的概念,通過fcntl(POSIX)或ioctl(Unix)設為非阻塞模式,這時,當你調用read時,如果有資料收到,就傳回資料,如果沒有資料收到,就立刻傳回一個錯誤,如EWOULDBLOCK。這樣是不會阻塞線程了,但是你還是要不斷的輪詢來讀取或寫入。
  • 于是,我們需要引入IO多路複用的概念。多路複用是指使用一個線程來檢查多個檔案描述符(Socket)的就緒狀态,比如調用select和poll函數,傳入多個檔案描述符,如果有一個檔案描述符就緒,則傳回,否則阻塞直到逾時。得到就緒狀态後進行真正的操作可以在同一個線程裡執行,也可以啟動線程執行(比如使用線程池)。這樣在處理1000個連接配接時,隻需要1個線程監控就緒狀态,對就緒的每個連接配接開一個線程處理就可以了,這樣需要的線程數大大減少,減少了記憶體開銷和上下文切換的CPU開銷。

接收端多路分解:使用傳輸頭資訊傳遞接收到的段到正确的套接字

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

注意:服務端一個程序有多個線程,一個線程有多個套接字

  • UDP的socket用二進制組辨別
  • TCP的socket用四元組辨別

2.可靠資料傳輸機制

Q:什麼是可靠(reliable)?

A:不錯、不丢、不亂

信道的不可靠特性決定了可靠資料傳輸協定(RDT)的複雜性

接口的結構:

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

RDT版本

Reliable Data Transfer

Rdt 1.0:可靠信道

Rdt 2.0: 産生位錯誤的信道

  • 利用校驗和檢測位錯誤
  • 确認機制(Acknowledgments,ACK):正确接收
  • NAK:告知分組有錯,重傳分組
  • 基于這種重傳機制的rdt協定稱為ARQ(Automatic Repeat reQuest)協定
  • FSM(Finit State Machine)規約
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Rdt 2.1: 應對ACK/NAK破壞

  • 發送方為每個分組增加序列号
  • 兩個序列号(0,1)就夠用了,因為隻用記住目前的序列号
  • 接收方判斷分組是否重複
  • 發送方
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 接收方
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Rdt 2.2:無NAK消息協定

  • 接收方通過ACK告知最後一個被正确接受的分組
  • 發送方接收到重複ACK之後,重傳目前分組
  • FSM(相比2.1有較大簡化)
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Rdt 3.0: 信道既可能發送錯誤,也可能丢失分組

  • 發送方等待“合理”時間,如果沒有收到ACK,重傳
  • 添加定時器
  • 時延有影響
  • 性能很差
  • 網絡協定可能影響實體資源的利用
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

流水線協定

  • 流水線機制提高資源使用率
  • 需要更大的序列号範圍
  • 需要更大的存儲空間以緩存分組

滑動視窗協定

Sliding-window protocol

  • 視窗
    • 允許使用的序列号範圍
    • 視窗尺寸為N: 最多有N個等待确認的消息
  • 滑動視窗
    • 随着協定的運作,視窗在序列号空間内向前滑動
  1. Go-Back-N(GBN)協定
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
    發送方:
    • 設定一個計時器
    • ACK(n): 确認到序列号n(包含n)的分組均已被正确接收
    • 逾時Timeout(n)事件:重傳序列号大于等于n,還未收到ACK的所有分組
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
    接收方:
    • ACK機制:發送擁有最高序列号的、已被正确接收的分組的ACK
      • 可能産生重複的ACK
      • 隻需要記住唯一的expectedseqnum
    • 亂序到達的分組
      • 直接丢棄-> 沒有緩存
      • 重新确認序列号最大的、按序到達的分組
    計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  2. Selective Repeat(SR)協定
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

發送方

  • 隻重傳沒有接收到ACK的分組
  • N個連續的序列号
  • 用單個硬體定時器模拟多個邏輯定時器

接收方

  • 對每個分組單獨進行确認
  • 設定緩存機制,緩存亂序到達可以

序列号空間大小與視窗尺寸應滿足的關系:

發送方視窗尺寸+接收方視窗尺寸≤可用序列号個數(2k,k為序列号使用位數)發送方視窗尺寸+接收方視窗尺寸≤可用序列号個數(2k,k為序列号使用位數)

TCP可靠資料傳輸

  • 累計确認,傳回期望收到的
  • 使用單一重傳定時器

    定時器時間設定:

    TimeoutInterval=EstimatedRTT+4∗DevRTTTimeoutInterval=EstimatedRTT+4∗DevRTT

    即EstimatedRTT+“安全邊界”

    EstimatedRTT=(1−α)⋅EstimatedRTT+α⋅SampleRTT(typically,α=0.125)EstimatedRTT=(1−α)⋅EstimatedRTT+α⋅SampleRTT(typically,α=0.125)

    DevRTT=(1−β)⋅DevRTT+β⋅|SampleRTT−EstimatedRTT|(typically,β=0.25)DevRTT=(1−β)⋅DevRTT+β⋅|SampleRTT−EstimatedRTT|(typically,β=0.25)

  • 快速重傳機制

    如果sender收到對同一資料的3個ACK,則假定該資料之後的段已經丢失,在定時器逾時之前立即重傳。

    Q:為什麼是三次備援ACK?

    A: 假定通信雙方A和B發送4個TCP Segment

    TCP segment 亂序有2/5 = 40%的機率會造成A收到三次 duplicated ACK(N);

    而如果 N 丢了,則 A 有100%機率會收到三次duplicated ACK(N);

    基于以上的統計,當 A 接收到三次 duplicated ACK(N)啟動 Fast Retransmit 算法是合理的,即立馬 retransmit N,可以起到 Fast Recovery 的功效,快速修複一個丢包對 TCP 管道的惡劣影響

    而如果 A 接收到二次 duplicated ACK(N),則一定說明是亂序造成的,即然是亂序,說明資料都到達了 B,B 的 TCP 負責重新排序而已,沒有必要 A 再來啟動 Fast Retransmit 算法

3. 流量控制機制

消除發送發使接受方緩存溢出的可能,是一種速度比對服務,發送發發送速率與接收方的讀取速率比對。

TCP流量控制:

  • Receiver通過在Segment的頭部字段将RcvWindow告訴Sender

    rwnd=RcvBuffer−(LastByteRcvd−LastByteRead)rwnd=RcvBuffer−(LastByteRcvd−LastByteRead)

  • Sender限制自己已經發送的但還未收到ACK的資料不超過接收方的空閑RcvWindow大小

    LastByteSent−LastByteAcked≤rwndLastByteSent−LastByteAcked≤rwnd

4. 擁塞控制機制

發送方維持一個叫做擁塞視窗cwnd(congestion window)的狀态變量。擁塞視窗的大小取決于網絡的擁塞程度,并且動态地在變化。發送方讓自己的發送視窗等于擁塞視窗,另外考慮到接受方的接收能力,發送視窗可能小于擁塞視窗。

MSS(maximun segment size)最大封包段大小,不包括TCP/IP首部的長度,典型值為1460位元組

代價:

  • 當分組到達速率接近鍊路容量時,分組将經曆較長的排隊時延。
  • 發送方必須執行重傳以補償因為緩存溢出而丢棄(丢失)的 分組。
  • 在多跳網絡中,當分組被drop時,任何用于該分組的”上遊“傳輸能力全都被浪費掉

控制方法:

  • 端到端擁塞控制:在端到端擁塞控制方法中,網絡層沒有為傳輸層擁塞控制提供顯式 支援。即使在網絡中存在擁塞,端系統也必須通過對網絡行為的觀察(如分組丢失與時延) 來推斷擁塞的發生。

    TCP 必須通過端到端的方法處理擁塞控制,因為 lP 層不會向端系統提供有關網絡擁塞的回報資訊。TCP封包段的丢失(通過逾時或 3 次備援确認而得知)被認為是網絡擁塞的一個迹象,TCP會相應地減小其發送視窗長度。 具有公平性。

    • LastByteSent−LastByteAcked≤CongWinLastByteSent−LastByteAcked≤CongWin
    • rate≈CongWinRTTBytes/secrate≈CongWinRTTBytes/sec
    • 加性增-乘性減(AIMD)
    • Additive Increase:每個RTT将CongWin增大一個MSS--擁塞避免
      • Multiplicative Decrease:發生loss後将CongWin減半
      • 鋸齒狀

慢啟動

cwnd的值以一個MSS開始,并且每當收到一個傳輸封包段的确認時就增加1MSS(相當于變為2倍)

擁塞避免

也就是每個傳輸輪次,擁塞視窗cwnd隻能線性加一,而不是像慢開始算法時,每個傳輸輪次,擁塞視窗cwnd按指數增長。

發生逾時重傳,判斷網絡可能出現擁塞:

  1. 将ssthresh的值更新為發生擁塞時的cwnd的一半
  2. 将cwnd的值減小為1,并重新開始執行慢啟動算法

快速恢複

發送方一旦收到3個重複确認,就知道現在隻是丢失了個别的封包段。于是不啟動慢開始算法,而執行快恢複算法

  • 發送方将慢開始ssthresh的值和擁塞視窗cwnd值調整為目前視窗的一半,開始執行擁塞避免算法
  • 也有的快恢複實作是把快恢複開始時的擁塞視窗cwnd值再增大一些,即等于新的ssthresh+3
    • 既然發送方收到3個重複的确認,就表明有3個資料封包段已經離開了網絡;
    • 這3個封包段不再消耗網絡資源而是停留在接收方的接收緩存中;
    • 可見現在網絡中不是堆積了封包段而是減少了3個封包段。是以可以适當把擁塞視窗擴大些。
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Q: 何時将指數增長切換為線性增長:

A:當CongWin達到Loss事件前值的1/2時,即到達Threshold

添加變量Threshold,發生loss時将其設定為CongWin達到Loss事件前值的1/2

發生Timeout時,Threshold設定為1/2CongWin,直接将CongWin設為1MSS,

  • 網絡輔助的擁塞控制:在網絡輔助的擁塞控制中,網絡層裝置件(即路由器)向發送方提 供關于網絡中擁塞狀态的顯式回報資訊。這種回報可以通過資料報中的某個字段來訓示鍊路中的擁塞情況。這種方法在早期的 IBM SNA 和 ATM 等體系結構中采用。

    對于網絡輔助的擁塞控制,擁塞資訊從網絡回報到發送方通常有兩種方式,直接回報資訊可以由網絡路由器發給發送方。另一種形式是,路由器标記或更新從發送方流向接收方的分組中的某個字段來訓示擁塞的産生(可以了解為對經過一個擁塞路由器的資料報做記号)。 一旦接收方收到這個有擁塞标記的分組,就會通知發送方網絡發生了擁塞。

3.2 Internet傳輸層協定

1. UDP

User Datagram Protocol

為什麼存在?
  • 無需建立連接配接
  • 實作簡單:無需維護連接配接狀态
  • 頭部開銷少
  • 沒有擁塞控制:應用可更好的控制發送時間和速率

特點:

  • 基于Internet IP協定
    • 複用/分用
    • 簡單的錯誤校驗
  • “Best effort”服務
    • 可能丢失
    • 可能非按序到達
    • 在應用層增加可靠性機制
  • 無連接配接
    • 發送方和接受方不需要握手
    • 每個UDP段的處理獨立于其他段

應用:

  • 流媒體(容許錯誤、速率敏感)
  • DNS
  • SNMP

可靠性保證

  • 在應用層添加可靠性保證
  • 與具體應用相關的錯誤恢複
  • 在http 3.0中使用
  • http3.0 with google quick

封包格式:

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

分解示意圖:

UDP長度字段包含首部長度

機關: 位元組

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

校驗和(checksum):檢測UDP段在傳輸中是否發生錯誤(如位翻轉)

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

2. TCP

Transmission Control Protocol

特點:

  • 點對點
  • 可靠的、按序的位元組流
  • 流水線機制
  • 發送方/接收方緩存
  • 全雙工
  • 面向連接配接
  • 流量控制機制

封包格式:

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

連接配接管理

三次握手

三次握手(Three-way Handshake)其實就是指建立一個TCP連接配接時,需要用戶端和伺服器總共發送3個包。進行三次握手的主要作用就是為了确認雙方的接收能力和發送能力是否正常、指定自己的初始化序列号為後面的可靠性傳送做準備。實質上其實就是連接配接伺服器指定端口,建立TCP連接配接,并同步連接配接雙方的序列号和确認号,交換TCP視窗大小資訊。

握手過程:

剛開始用戶端處于 Closed 的狀态,服務端處于 Listen 狀态。

  1. 第一次握手:用戶端給服務端發一個 SYN (同步)封包,并指明用戶端的初始化序列号 ISN(Initial sequence number)。此時用戶端處于 SYN_SEND 狀态。
  • 首部的同步位SYN=1,初始序号seq=x,SYN=1的封包段不能攜帶資料,但要消耗掉一個序号。
  • 服務端得出結論:用戶端的發送能力、服務端的接收能力是正常的。
  1. 第二次握手:伺服器收到用戶端的 SYN 封包之後,進行資源配置設定(可能受到SYN Flood攻擊,可以使用SYN cookie進行防禦),以自己的 SYN 封包作為應答,并且也是指定了自己的初始化序列号 ISN。同時會把用戶端的 ISN + 1 作為ack(确認号)的值,表示自己已經收到了用戶端的 SYN,此時伺服器處于 SYN_REVD 的狀态。
    • 在确認封包段中SYN=1,ACK=1,确認号ack=x+1,初始序号seq=y。
    • 用戶端得出結論:服務端的接收、發送能力,用戶端的接收、發送能力是正常的。不過此時伺服器并不能确認用戶端的接收能力是否正常。
  2. 第三次握手:用戶端收到 SYN 封包之後,會發送一個 ACK 封包,當然,也是一樣把伺服器的 ISN + 1 作為 ack 的值,表示已經收到了服務端的 SYN 封包,此時用戶端處于 ESTABLISHED 狀态。伺服器收到 ACK 封包之後,也處于 ESTABLISHED 狀态,此時,雙方已建立起了連接配接。
  • 确認封包段SYN=0,ACK=1,确認号ack=y+1,序号seq=x+1(初始為seq=x,第二個封包段是以要+1),ACK封包段可以攜帶資料,不攜帶資料則不消耗序号。
  • 服務端得出結論:用戶端的接收、發送能力正常,伺服器自己的發送、接收能力也正常。

發送第一個SYN的一端将執行主動打開(active open),接收這個SYN并發回下一個SYN的另一端執行被動打開(passive open)。

在socket程式設計中,用戶端執行connect()時,将觸發三次握手。

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Q:為什麼要進行3次握手,不是2次或更多?

A:假設采用2次握手。如用戶端發出連接配接請求,但因連接配接請求封包丢失而未收到确認,于是用戶端再重傳一次連接配接請求。後來收到了确認,建立了連接配接。資料傳輸完畢後,就釋放了連接配接,用戶端共發出了兩個連接配接請求封包段,其中第一個丢失,第二個到達了服務端,但是第一個丢失的封包段隻是在某些網絡結點長時間滞留了,延誤到連接配接釋放以後的某個時間才到達服務端,此時服務端誤認為用戶端又發出一次新的連接配接請求,于是就向用戶端發出确認封包段,同意建立連接配接,不采用三次握手,隻要服務端發出确認,就建立新的連接配接了,此時用戶端忽略服務端發來的确認,也不發送資料,則服務端一緻等待用戶端發送資料,浪費資源。

四次揮手

TCP 的連接配接的拆除需要發送四個包,是以稱為四次揮手(Four-way handshake),用戶端或伺服器均可主動發起揮手動作。

剛開始雙方都處于 ESTABLISHED 狀态,假如是用戶端先發起關閉請求。四次揮手的過程如下:

  1. 第一次揮手:用戶端發送一個 FIN 封包,封包中會指定一個序列号。此時用戶端處于 FIN_WAIT1 狀态。
    • 即發出連接配接釋放封包段(FIN=1,序号seq=u),并停止再發送資料,主動關閉TCP連接配接,進入FIN_WAIT1(終止等待1)狀态,等待服務端的确認。
  2. 第二次揮手:服務端收到 FIN 之後,會發送 ACK 封包,且把用戶端的序列号值 +1 作為 ACK 封包的序列号值,表明已經收到用戶端的封包了,此時服務端處于 CLOSE_WAIT 狀态。
    • 即服務端收到連接配接釋放封包段後即發出确認封包段(ACK=1,确認号ack=u+1,序号seq=v),服務端進入CLOSE_WAIT(關閉等待)狀态,此時的TCP處于半關閉狀态,用戶端到服務端的連接配接釋放。用戶端收到服務端的确認後,進入FIN_WAIT2(終止等待2)狀态,等待服務端發出的連接配接釋放封包段。
  3. 第三次揮手:如果服務端也想斷開連接配接了,和用戶端的第一次揮手一樣,發給 FIN 封包,且指定一個序列号。此時服務端處于 LAST_ACK 的狀态。
    • 即服務端沒有要向用戶端發出的資料,服務端發出連接配接釋放封包段(FIN=1,ACK=1,序号seq=w,确認号ack=u+1),服務端進入LAST_ACK(最後确認)狀态,等待用戶端的确認。
  4. 第四次揮手:用戶端收到 FIN 之後,一樣發送一個 ACK 封包作為應答,且把服務端的序列号值 +1 作為自己 ACK 封包的序列号值,此時用戶端處于 TIME_WAIT 狀态。需要過一陣子以確定服務端收到自己的 ACK 封包之後才會進入 CLOSED 狀态,服務端收到 ACK 封包之後,就處于關閉連接配接了,處于 CLOSED 狀态。
    • 即用戶端收到服務端的連接配接釋放封包段後,對此發出确認封包段(ACK=1,seq=u+1,ack=w+1),用戶端進入TIME_WAIT(時間等待)狀态。此時TCP未釋放掉,需要經過時間等待計時器設定的時間2MSL後,用戶端才進入CLOSED狀态。

收到一個FIN隻意味着在這一方向上沒有資料流動。用戶端執行主動關閉并進入TIME_WAIT是正常的,服務端通常執行被動關閉,不會進入TIME_WAIT狀态。

在socket程式設計中,任何一方執行close()操作即可産生揮手操作。

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Q: 揮手為什麼需要四次?

A:因為當服務端收到用戶端的SYN連接配接請求封包後,可以直接發送SYN+ACK封包。其中ACK封包是用來應答的,SYN封包是用來同步的。但是關閉連接配接時,當服務端收到FIN封包時,很可能并不會立即關閉SOCKET,是以隻能先回複一個ACK封包,告訴用戶端,“你發的FIN封包我收到了”。隻有等到我服務端所有的封包都發送完了,我才能發送FIN封包,是以不能一起發送(伺服器的兩次發送不能合并)。故需要四次揮手。

Q:釋放連接配接時,等待2MSL的意義?

A:MSL是Maximum Segment Lifetime的英文縮寫,可譯為“最長封包段壽命”,它是任何封包在網絡上存在的最長時間,超過這個時間封包将被丢棄。

  • 保證用戶端發送的最後一個ACK封包段能夠到達服務端。

    因為這個ACK有可能丢失,進而導緻處在LAST-ACK狀态的伺服器收不到對FIN-ACK的确認封包。伺服器會逾時重傳這個FIN-ACK,接着用戶端再重傳一次确認,重新啟動時間等待計時器。最後用戶端和伺服器都能正常的關閉。假設用戶端不等待2MSL,而是在發送完ACK之後直接釋放關閉,一但這個ACK丢失的話,伺服器就無法正常的進入關閉連接配接狀态。

  • 防止“已失效的連接配接請求封包段”出現在本連接配接中。

    用戶端在發送完最後一個ACK封包段後,再經過2MSL,就可以使本連接配接持續的時間内所産生的所有封包段都從網絡中消失,使下一個新的連接配接中不會出現這種舊的連接配接請求封包段。

進一步解釋:

主動斷開的一側為A,被動斷開的一側為B。

第一個消息:A發FIN

第二個消息:B回複ACK

第三個消息:B發出FIN

此時此刻:B單方面認為自己與A達成了共識,即雙方都同意關閉連接配接。

此時,B能釋放這個TCP連接配接占用的記憶體資源嗎?不能,B一定要確定A收到自己的ACK、FIN。

是以B需要靜靜地等待A的第四個消息的到來:

第四個消息:A發出ACK,用于确認收到B的FIN

當B接收到此消息,即認為雙方達成了同步:雙方都知道連接配接可以釋放了,此時B可以安全地釋放此TCP連接配接所占用的記憶體資源、端口号。

是以被動關閉的B無需任何wait time,直接釋放資源。

但,A并不知道B是否接到自己的ACK,A是這麼想的:

1)如果B沒有收到自己的ACK,會逾時重傳FIN

那麼A再次接到重傳的FIN,會再次發送ACK,重新計時

2)如果B收到自己的ACK,也不會再發任何消息,包括ACK

無論是1還是2,A都需要等待,要取這兩種情況等待時間的最大值,以應對最壞的情況發生,這個最壞情況是:

ACK從A到B最多經過1MSL,超過這個時間B會重發FIN

B重發的FIN最多經過1MSL到達A

去向ACK消息最大存活時間(MSL) + 來向FIN消息的最大存活時間(MSL)。

這恰恰就是2MSL( Maximum Segment Life)。

等待2MSL時間,A就可以放心地釋放TCP占用的資源、端口号,此時可以使用該端口号連接配接任何伺服器。

TCP的四種計時器

  1. 重傳計時器(Retransmission Timer)
  • 目的:為了控制丢失的封包段或者丢棄的封包段。這段時間為對封包段的等待确認時間。
  • 建立時間:在TCP發送封包段時,會建立對次特定封包段的重傳計時器。
  • 可能發生的兩種情況:在截止時間(通常為60秒)到之前,已經收到了對此特定封包段的确認,則撤銷計時器;在截止時間到了,但為收到對此特定封包段的确認,則重傳封包段,并且将計時器複位。
  • 重傳時間:2*RTT(Round Trip Time,為往返時間)
  1. 堅持計時器(Persistent Timer)
  • 目的:主要解決零視窗大小通知可能導緻的死鎖問題
  • 死鎖問題的産生:當接收端的視窗大小為0時,接收端向發送端發送一個零視窗封包段,發送端即停止向對端發送資料。此後,如果接收端緩存區有空間則會重新給發送端發送一個視窗大小,即視窗更新。但接收端發送的這個确認封包段有可能會丢失,而此時接收端不知道已經丢失并認為自己已經發送成功,則一直處于等待資料的狀态;而發送端由于沒有收到該确認封包段,就會一直等待對方發來新的視窗大小,這樣一來,雙方都處在等待對方的狀态,這樣就形成了一種死鎖問題。如果沒有應對措施,這種局面是不會被打破的。為了解決這種問題,TCP為每一個連接配接設定了堅持計時器。
  • 工作原理:當發送端TCP收到接收端發來的零視窗通知時,就會啟動堅持計時器。當計時器的期限到達時,發送端就會主動發送一個特殊的封包段告訴對方确認已經丢失,必須重新發送。【這個特殊的封包段就稱為探測封包段,探測封包段隻有1個位元組的大小,裡邊隻有一個序号,該序号不需要被确認,甚至在計算其他部分資料的确認時該序号會被忽略。】
  • 截止期的設定:設定為重傳時間的值。但如果沒有收到接收端的響應,則會發送另一個探測封包段,并将計時器的值加倍并複位,直到大于門限值(一般為60秒)。在此之後,發送端會每隔60秒發送一個探測封包段,直到視窗重新打開。
  1. 保活計時器(Keeplive Timer)
  • 目的:主要是為了防止兩個TCP連接配接出現長時間的空閑。當用戶端與伺服器端建立TCP連接配接後,很長時間内用戶端都沒有向伺服器端發送資料,此時很有可能是用戶端出現故障,而伺服器端會一直處于等待狀态。保活計時器就是解決這種問題而生的。
  • 工作原理:每當伺服器端收到用戶端的資料時,都将保活計時器重新設定(通常設定為2小時)。過了2小時後,伺服器端如果沒有收到用戶端的資料,會發送探測封包段給用戶端,并且每隔75秒發送一個,當連續發送10次以後,仍沒有收到對端的來信,則伺服器端認為用戶端出現故障,并會終止連接配接。
  1. 時間等待計時器(Time_Wait Timer)
  • 時間等待計時器是在連接配接終止期間使用的。
  • 當TCP關閉連接配接時并不是立即關閉的,在等待期間,連接配接還處于過渡狀态。這樣就可以使重複的FIN封包段在到達終點之後被丢棄。
  • 時間設定:一般為封包段壽命期望值的2倍。

    原文連結:https://blog.csdn.net/qq_33951180/java/article/details/60468267

遊戲伺服器協定選擇

那麼到底是用UDP還是TCP呢?

  • 如果是由用戶端間歇性的發起無狀态的查詢,并且偶爾發生延遲是可以容忍,那麼使用HTTP/HTTPS吧。
  • 如果用戶端和伺服器都可以獨立發包,但是偶爾發生延遲可以容忍(比如:線上的紙牌遊戲,許多MMO類的遊戲),那麼使用TCP長連接配接吧。
  • 如果用戶端和伺服器都可以獨立發包,而且無法忍受延遲(比如:大多數的多人動作類遊戲,一些MMO類遊戲),那麼使用UDP吧。

這些也應該考慮在内:你的MMO用戶端也許首先使用HTTP去擷取上一次的更新内容,然後使用UDP跟遊戲伺服器進行連接配接。

永遠不要害怕去使用最佳的工具來解決問題。

連結:https://www.jianshu.com/p/08af0f7d335b

王者榮耀

4. 網絡層

4.1 網絡層服務

1. 轉發

forwarding:将分組從路由器的輸入端口轉移到合适的輸出端口

轉發表确定在本路由器如何轉發分組

2. 路由

routing:确定分組從源到目的經過的路徑

路由算法(協定)确定通過網絡的端到端路徑

路由器結構

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

輸入輸出端口

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

交換機構内,基于目的的轉發,使用最長字首比對原則

輸出端口側,當資料包從交換機構中以高于傳輸速率的速度到達時需要緩沖,可按照一定的排程政策進行分發

分組排程政策

  • 先來先服務
  • 優先權排隊
  • 循環和權重公平排隊

3. 連接配接建立

某些網絡的功能

注意:網絡層連接配接是兩個主機之間(路徑上的路由器等網絡裝置參與其中)

傳輸層連接配接:兩個應用程序之間(對中間網絡裝置透明)

4. 網絡層服務模型

  • 無連接配接服務(connection-less service):資料報網絡
  • 連接配接服務 (connection service):虛電路網絡

4.2 虛電路網絡

ATM網絡

虛電路(VIrtual circuits):一條從源主機到目的主機,類似于電路的路徑

  • 每個分組的傳輸利用鍊路的全部帶寬
  • 每個分組攜帶虛電路辨別(VCID),沿路每段鍊路一個編号
  • 虛電路經過的每個網絡裝置維護每條經過它的虛電路的連接配接狀态
  • 簡化邊緣、複雜網絡

虛電路信令協定(signaling protocols)

  • 建立和拆除電路

4.3 資料報網絡

Internet網絡

  • 網絡層不連接配接
  • 每個分組攜帶目的位址
  • 資料報轉發表(按位址範圍劃分)
    • 最長字首比對優先
  • 簡化網絡、複雜邊緣

4.4 IPv4協定

1. IP資料報格式

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 首部長度以4位元組為機關,即一位代表一行
  • 首部校驗和:隻對IP首部進行校驗
  • 總長度字段(首部+資料),資料最大長度216−20=65515B216−20=65515B
  • TTL(Time To Live):IP分組在網絡中可以通過的路由器數(跳數),每轉發一次減一,為零丢棄分組
  • 協定:訓示IP分組封裝的是哪個協定的資料包,實作複用/分用

2. IP分片

最大傳輸單元(MTU)

  • 不同鍊路的MTU不同

分片(fregmented)

重組(reassembled)

  • 辨別字段:IP協定利用一個計數器,每産生一個IP分組計數器加1,作為IP分組的辨別(結合源目的位址唯一辨別)
  • 标志位:3位 : | 保留 | DF(Dont Fragment)| MF(More Fragment)|
    • DF=1:禁止分片
    • DF=0:允許分片
    • MF=1:非最後一片,有更多分片
    • MF=0:最後一片(或未分片)
  • 片偏移:13位,以8位元組為機關:一個IP分組分片封裝原IP分組資料的相對偏移量
    • 區分最後一片還是未分片

分片過程:

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

3. IP編址(addressing)

點分十進制IP位址

  • 網絡号(NetID)- 高位比特
  • 主機号(HostID)- 低位比特

相同網絡号構成IP子網(Subnets)

  • 不跨越路由器

有類劃分

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

IP位址根據網絡号和主機号來分,分為A、B、C三類及特殊位址D、E。 全0和全1的都保留不用。

A類:(1.0.0.0-126.0.0.0)(預設子網路遮罩:255.0.0.0或 0xFF000000)第一個位元組為網絡号,後三個位元組為主機号。該類IP位址的最前面為“0”,是以位址的網絡号取值于1~126之間。一般用于大型網絡。

B類:(128.0.0.0-191.255.0.0)(預設子網路遮罩:255.255.0.0或0xFFFF0000)前兩個位元組為網絡号,後兩個位元組為主機号。該類IP位址的最前面為“10”,是以位址的網絡号取值于128~191之間。一般用于中等規模網絡。

C類:(192.0.0.0-223.255.255.0)(子網路遮罩:255.255.255.0或 0xFFFFFF00)前三個位元組為網絡号,最後一個位元組為主機号。該類IP位址的最前面為“110”,是以位址的網絡号取值于192~223之間。一般用于小型網絡。

D類:是多點傳播位址。該類IP位址的最前面為“1110”,是以位址的網絡号取值于224~239之間。一般用于多路廣播使用者 。

E類:是保留位址。該類IP位址的最前面為“1111”,是以位址的網絡号取值于240~255之間。

在IP位址3種主要類型裡,各保留了3個區域作為私有位址,其位址範圍如下:

A類位址:10.0.0.0~10.255.255.255

B類位址:172.16.0.0~172.31.255.255

C類位址:192.168.0.0~192.168.255.255

​ 私有位址:不向特定的使用者配置設定,被IANA(The Internet Assigned Numbers Authority,網際網路數字配置設定機構)作為私有位址保留。這些位址可以在任何組織或企業内部使用,和其他Internet位址的差別就是,僅能在内部使用,不能作為全球路由位址。這就是說,出了組織的管理範圍這些位址就不再有意義,無論是作為源位址,還是目的位址。對于一個封閉的組織,如果其網絡不連接配接到Internet,就可以使用這些位址而不用向IANA提出申請,而在内部的路由管理和封包傳遞方式與其他網絡沒有差異。

回送位址:127.0.0.1。 也是本機位址,等效于localhost或本機IP。一般用于測試使用。例如:ping 127.0.0.1來測試本機TCP/IP是否正常。

子網劃分:

  • 網絡号(NetID)- 高位比特
  • 子網号(SubID)- 原網絡主機号部分比特
  • 主機号(HostID)- 低位比特

子網路遮罩

  • 形如IP位址
  • NetID、SubID位全取1
  • HostID位全取0
  • A類網絡預設子網路遮罩:255.0.0.0

    B類網絡預設子網路遮罩:255.255.0.0

    C類網絡預設子網路遮罩:255.255.255.0 僅能容納254個主機

  • 将IP分組的目的IP位址與子網路遮罩按位與運算,提取子網位址

4. CIDR

無類别域間路由(Classless InterDomain Routing)

  • 消除傳統的A、B、C類位址界限
  • 無類位址格式:a.b.c.d/x, 其中x為字首長度
  • 提升IPv4位址空間配置設定效率

5. 路由聚合

route aggregation

路由聚集的目的

  • 簡化路由轉發表的規則,提升路由尋址效率

如何進行路由聚集

  • 取消有類位址劃分,NetID+SubID不定長度
  • 需要聚合的子網位址按位取相同的字首作為新的子網位址(超網)
  • 轉發表合并這些子網的轉發規則為新的子網規則,同時保證為非合并前子網位址但滿足條件的位址增加更長的字首比對規則

什麼情況下可以路由聚集

  • 當多個子網均通過其中某個子網位址來轉發時

總結:

劃分子網的意義
  • 提升IP位址的利用效率
  • 按規則配置設定IP位址,提升IP位址的辨識度,便于尋址,IP位址形成自上而下層次鮮明的結構
  • 對不同地區不同類型的網絡裝置加以區分
如何劃分子網
  • IP位址邏輯上分為NetID+SubID+HostID,NetID+SubID作為網絡位址,HostID作為主機号
  • 按有類位址的NetID,SubID從HostID的高bit進行借位(借n位可劃分2^n個等長的子網),組合成網絡位址
  • 通過子網路遮罩聲明網絡位址的bit寬度
定長子網劃分
  • 劃分後的幾個子網,子網路遮罩相同
變長子網劃分
  • 根據實際情況,選擇不同長度的網絡位址,子網路遮罩不一定相同
如何描述子網
  • 子網網關描述子網的首位址
  • 子網路遮罩描述子網的大小

4.5 DHCP協定

動态主機配置協定-DHCP:Dynamic Host Configuration Protocol

特點:

  • 從伺服器動态擷取:
    • IP位址
    • 子網路遮罩
    • 預設網關
    • DNS伺服器名稱與IP位址
  • 即插即用
  • 允許位址重用
  • 支援在用位址續租
  • 支援移動使用者加入網絡

工作過程

  • DHCP協定在應用層實作
    • 請求封包封裝到UDP資料報中
    • IP廣播
    • 鍊路層廣播
  • DHCP伺服器内建于路由器中
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

4.6 NAT

Network Address Translation 網絡位址轉換

我們利用端口号的唯一性實作了公網ip轉換為私網ip的這一步。PAT(NAT重載)能夠使用傳輸層端口号來辨別主機,是以,從理論上說,最多可讓大約65000台主機共用一個公有IP位址

NAT 路由器必須:

  • 輸出資料報: 将每個輸出資料報的 (源 IP 位址, 端口号) 替換為 (NAT IP 位址, 新端口号)

    遠端用戶端/伺服器使用(NAT IP位址, 新端口号)作為目标位址進行響應

  • 記錄 (在 NAT 轉換表中) 每一 (源 IP 位址, 端口号) 到 (NAT IP 位址, 新端口号) 轉換配對
  • 輸入資料報: 将每個輸入資料報目标字段中的(NAT IP 位址, 新端口号) 替換為存儲在NAT 轉換表中相應的 (源 IP 位址, 端口号)
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

Q: 為什麼需要?

A:

  • 隻需從ISP申請一個IP位址,有位址耗盡問題
  • 本地網絡裝置IP位址的變更,無需通告外界網絡
  • 變更ISP時,無需修改内部網絡裝置IP位址
  • 内部網絡裝置對外界網絡不可見,即不可直接尋址
引發争議:
  • 路由器應該隻處理第3層功能
  • 違背端到端通信原則,應用開發人眼要考慮到NAT的存在,例如p2p應用
  • 位址短缺問題應該由IPv6來解決
  • NAT在實作上将多個内部主機發出的連接配接複用到一個IP上,這就使依賴IP進行主機跟蹤的機制都失效了。

NAT穿透:如果用戶端想要連接配接到NAT後的伺服器?

  1. 靜态配置NAT(IP位址是一對一的,是一直不變的)
  2. 使用UPnP(Universal Plug and Play)網際網路網關協定(IGD-Internet Gateway Device)自動配置
  3. 中繼

4.7 ICMP協定

網際網路控制封包協定-ICMP(Internet Control Message Protocol)

兩類ICMP封包:

  • 差錯報告封包
    • 目的不可達
    • 源抑制(Source Quench)
    • 逾時/超期 ,TTL=0
    • 參數問題
    • 重定向(Redirect)
  • 網絡探詢封包
    • 回聲Echo請求/應答封包Reply
    • 時間戳請求與應答封包

封包格式

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

差錯報告封包資料封裝

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

4.8 IPv6協定

動機:

  • 32位位址空間很快将被配置設定完

資料報格式:

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 定長40位元組首部
  • 不允許資料包分片
  • 無校驗和(加快路由器的處理,因為TTL的改變而每跳需重新計算)

4.9 路由算法

典型的路由選擇方式有兩種:靜态路由和動态路由。

靜态路由是在路由器中設定的固定的路由表。除非網絡管理者幹預,否則靜态路由不會發生變化。靜态路由不能對網絡的改變作出反映.

動态路由是網絡中的路由器之間互相通信,傳遞路由資訊,利用收到的路由資訊更新路由器表的過程。它能實時地适應網絡結構的變化。如果路由更新資訊表明發生了網絡變化,路由選擇軟體就會重新計算路由,并發出新的路由更新資訊。這些資訊通過各個網絡,引起各路由器重新啟動其路由算法,并更新各自的路由表以動态地反映網絡拓撲變化。動态路由适用于網絡規模大、網絡拓撲複雜的網絡。當然,各種動态路由協定會不同程度地占用網絡帶寬和CPU資源。

靜态路由和動态路由有各自的特點和适用範圍,是以在網絡中動态路由通常作為靜态路由的補充。當一個分組在路由器中進行尋徑時,路由器首先查找靜态路由,如果查到則根據相應的靜态路由轉發分組;否則再查找動态路由。

根據是否在一個自治域内部使用,動态路由協定分為内部網關協定(IGP)和外部網關協定(EGP)。這裡的自治域指一個具有統一管理機構、統一路由政策的網絡。自治域内部采用的路由選擇協定稱為内部網關協定,常用的有RIP、OSPF;外部網關協定主要用于多個自治域之間的路由選擇,常用的是BGP和BGP-

鍊路狀态(Link State)算法:

Dijkstra算法

  • 可能有震蕩(oscillations)

Initailization: N' = {u} for all nodes v: if v adjacent to u then D(v)=c(u,v) else D(v)=INF Loop: //可以使用堆來進行加速,在對數時間中找到最小值 find w not in N' such that D(w) is a minimum add w to N' update D(v) for all v adjacent to w and not in N': //此時更新父節點可以建構最短路徑樹 D(v)=min(D(v),D(w)+c(w,v)) until all nodes in N'

距離向量(Distance Vector)算法

Bellman-Ford方程 動态規劃

當節點x發現他的直接相連的鍊路開銷變化或從某個鄰居收到一個距離向量的更新時,他就更新其距離向量估計值

  • 結點獲得最短路徑的下一跳,該資訊用于轉發表中
  • 好消息傳播快
  • 壞消息傳播慢
    • 可能出現無窮計數問題(count to infinity):路由選擇環路(routing loop),y即為了到達x, 通過z路由,z又通過y路由到達x(因為此時距離最短)
    • 使用毒性逆轉(poisoned reverse)/反向下毒:如果一個節點到達目的的最小費用路徑是通過某個鄰居,則通告給該鄰居到達該目的的距離為無窮大,直到路徑不通過該鄰居

      注意:涉及3個或更多節點,而不是兩個直接相連的鄰居節點的環路将無法用毒性逆轉技術檢測到

    • 定義最大度量

4.10 Internet路由

  • AS(Autonomous system):自治系統,指在一個(有時是多個)組織管轄下的所有IP網絡和路由器的全體,它們對網際網路執行共同的路由政策。也就是說,對于網際網路來說,一個AS是一個獨立的整體網絡。而BGP實作的網絡自治也是指各個AS自治。每個AS有自己唯一的編号。

    在相同AS中的路由器都運作相同的路由選擇算法并且有彼此的資訊。在一個自治系統内運作的路由選擇算法叫做自治系統内部路由選擇協定

  • IGP(Interior Gateway Protocol):内部網關協定,在一個AS内部所使用的一種路由協定。一個AS内部也可以有多個路由器管理多個網絡。各個路由器之間需要路由資訊以知道子網絡的可達資訊。IGP就是用來管理這些路由。代表的實作有RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、IGRP(内部網關路由協定)。
  • EGP(Exterior Gateway Protocol):外部網關協定,在多個AS之間使用的一種路由協定,現在已經淘汰,被BGP取而代之。

1. RIP協定

路由資訊協定(Routing Information Protocol)

2. OSPF

Open Shortest Path First

  • 安全
  • 采用鍊路狀态算法-Dijkstra
  • 允許使用多條相同費用的路徑(RIP隻能選一條)
  • 對于每條鍊路,可以針對不同的TOS(Terms of service)設定多個不同的費用度量
  • 內建單點傳播路由與多點傳播路由

OSPF比RIP強大的地方是,OSPF對整網的拓撲結構了如指掌,一旦某一條路徑斷了,可以及時選擇備份鍊路,對通信的影響小。

RIP是基于謠言,對整網的拓撲結構沒有概念,隻知道有幾個鄰居,至于更遠的鄰居是什麼樣子,對不起,不知道!

IS-IS(intermediate system to intermediate system)與OSPF近乎相同 [IS-IS為第二層協定,OSPF為第三層協定]

3.BGP協定

Border Gateway Protocol:事實上的域間路由協定

在BGP中,分組并不是路由到一個特定的目的位址,相反是路由到CIDR化的字首,其中每一個字首表示一個子網或子網的集合,一台路由器的轉發表将具有形式為(x, I)的表項,其中x是一個字首(例如138.16.68/22), I是該路由器的接口之一的接口号

  • eBGP:從鄰居AS擷取子網可達性資訊
  • iBGP:将可達性資訊傳播給所有AS内部路由器

每條BGP路由包含3個元件:NEXT-HOP;ASPATH;目的字首

熱洋芋算法:對于路由器,盡可能快的将分組送出其AS(更明确地說,用可能的最低開銷),而不擔心其AS外部到目的地的餘下部分的開銷,是一種自私的算法

路由選擇政策(由上至下執行):

  1. 路由被指定一個本地偏好值作為其屬性之一
  2. 從餘下路由中選擇有最短AS-PATH的路由
  3. 從餘下路由中用熱洋芋路由選擇
  4. 最後使用BGP辨別符選擇

ISP遵循的經驗法則:任何穿越某ISP主幹網的流量必須是其源或目的(或兩者)位于該ISP的某個客戶網絡中

4.11 SDN控制平面

software define network

遠端控制器計算和分發轉發表以供每台路由器使用,因為計算轉發表并與路由器互動的控制器是用軟體實作的,故網絡是“軟體定義”的

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
  • 強化控制平面:可靠、可信、性能可擴充、安全的分布式系統
    • 故障魯棒性:控制平面的可靠分布系統的強壯理論發揮的作用

4.12 網絡管理與SNMP

SNMP(Simple Network Management Protocol)

PDU(Protocol Data Unit)

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

5. 資料鍊路層

鍊路層的豬腳部分是在網絡擴充卡Network adapter中實作的,也被稱為網絡接口卡(Network Interface Card,NIC)。位于網絡擴充卡核心的是鍊路層控制器,該控制器通常是一個實作了許多鍊路層服務(成幀、鍊路接入、差錯檢測等)

概述:

  • 主機和路由器:結點(nodes)
  • 連接配接相鄰結點的通信信道:鍊路(links)
  • 資料分組:幀(frame)

提供服務:

  • 成幀
  • 鍊路接入
  • 可靠傳遞
  • 差錯檢測和糾正

5.1 差錯檢測和糾正比特

Error-Detection and- Correction,EDC

漢明距離:兩個等長字元串之間的漢明距離是兩個字元串對應位置的不同字元的個數

檢錯碼與糾錯碼:

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

1. 奇偶校驗碼

parity check

采用何種校驗是事先規定好的。通常專門設定一個奇偶校驗位,用它使這組代碼中“1”的個數為奇數或偶數。若用奇校驗,則當接收端收到這組代碼時,校驗“1”的個數是否為奇數,進而确定傳輸代碼的正确性;偶校驗則檢測是否為偶數。
  • 1比特校驗位
    • 檢測奇數位差錯
  • 二維奇偶校驗
    • 檢測奇數位差錯、部分偶數位差錯
    • 糾正同一行/列的奇數位數

2. Internet校驗和

計算checksum

3. 循環備援校驗碼

Cyclic Redundancy Check ,CRC

有限代數理論(Galois域)

考慮d比特的資料D,發送節點要将它發送給接收節點。發送方和接受方首先必須協商一個r+1比特模式,稱為生成多項式G,要求G的最高有效位的比特為1. 對于一個給定的資料段D,發送發要選擇r個附加比特R,并将它們附加到D上,使得得到的d+r比特模式用模2算數恰好能被G整除。接受方用G去除收到的d+r比特。
計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層
【說明】“模2除法”與“算術除法”類似,但它既不向上位借位,也不比較除數和被除數的相同位數值的大小,隻要以相同位數進行相除即可。模2加法運算為:1+1=0,0+1=1,0+0=0,無進位,也無借位;模2減法運算為:1-1=0,0-1=1,1-0=1,0-0=0,也無進位,無借位。相當于二進制中的邏輯異或運算。也就是比較後,兩者對應位相同則結果為“0”,不同則結果為“1”。如100101除以1110,結果得到商為11,餘數為1,如11×11=101

編碼簡單、性能優良

5.2 多路通路控制(MAC)協定

Multiple Access Control Protocol

采用分布式算法決定結點如何共享信道,即決策結點何時可以傳輸資料

MAC協定分類:

  • 信道劃分
    • 将信道劃分為小的“片段”
    • 将片段配置設定給節點獨占使用
  • 随機接入
    • 不分割信道,允許沖突/碰撞
    • 沖突後恢複
  • 輪流
    • 節點輪流發送,但發送多的節點可以輪流發送更長的時間

1. 信道劃分(channel partitioning)MAC協定

  • 多路複用技術
  • TDMA:time division multiple access 時分多址
  • FDMA:frequency division multiple access 頻分複用
  • CDMA:code division multiple access 碼分多址
  • WDMA

2. 随機通路(random access)MAC協定

  • 信道不劃分,允許沖突
  • 采用沖突、恢複機制
    • 有碰撞時,涉及碰撞的每個節點反複地重發它的幀,直到該幀無障礙通過

時隙(sloted)ALOHA

  • 時鐘同步
  • 碰撞時以機率p選擇是否重傳
  • 效率極限為37%

ALOHA協定

  • 無時鐘同步,純分散協定
  • 比時隙ALOHA協定更差(為其一半),更簡單

CSMA 載波監聽多路通路協定(carrier sense multiple access)

  • 發送幀之前,監聽信道
  • 由于信号傳播延遲,可能仍有沖突
  • 繼續發送沖突幀,浪費信道資源

CSMA/CD(with Collision Detection)協定

  • 短時間内可以檢測到沖突
  • 沖突後傳輸中止,減少信道浪費
    • 中止後進入二進(指數)退避
  • Lmin/R=2dmax/VLmin/R=2dmax/V 網絡帶寬R 資料幀長度L 信号傳播速度V 兩個站點之間的距離d
  • 性能遠由于ALOHA協定
  • 以太網

3. 輪轉(taking turns)MAC協定

  • 結點輪流使用信道
  • 藍牙

輪詢(polling)

  • 主結點輪流邀請從屬結點發送資料

令牌傳遞(token passing)

  • 控制令牌一次從一個結點傳遞到下一個結點
  • 令牌-特殊幀

5.3 ARP協定

Address Resolution Protocol

1. MAC位址

或稱LAN位址,實體位址,以太網位址

  • 48位MAC位址,固化在網卡的ROM中,有時也可以軟體設定
  • e.g:1A-2B-3C-34-AD-00
  • 由IEEE統一管理與配置設定

2. 位址解析協定

ARP表:LAN中的每個IP結點(主機、路由器)維護一個表

一台路由器對它的每個接口都有一個IP位址。對路由器的每個接口,也有一個ARP子產品和一個擴充卡。

查詢ARP封包是在廣播幀中發送的,而響應ARP封包在一個标準幀中發送

  • 存儲某些LAN結點的IP/MAC位址映射關系:<IP位址;MAC位址;TTL>

5.4 以太網

實體拓撲

  • 總線(bus)
    • 所有結點在同一沖突域(collision domain)
  • 星形(star)

CSMA/CD算法

檢測到沖突後進入二進制指數退避

連續沖突次數越多,平均等待時間越長

以太網幀結構

計算機網絡複習筆記1 計算機網絡概述2. 應用層3. 傳輸層4. 網絡層5. 資料鍊路層

交換機

自學習、泛洪建構轉發表,依據MAC位址

過濾:決定轉發一個幀還是丢棄該幀

轉發:決定一個幀被導向哪個接口

特點:

  • 消除碰撞
  • 異質的鍊路,不同鍊路有不同速率且運作在不同媒體上
  • 管理

交換機與路由器的差別:

交換機是二層的分組交換機,即插即用,有較高的分組過濾和轉發速率

路由器是三層的分組交換機,使用路由算法和IP位址注冊轉發表

VLANs

virtual local area network

  • 流量隔離(traffic isolation)
  • 動态成員

在VLAN中轉發:通過路由(就像在獨立的交換機之間)

幹線端口- 擴充以太網幀格式 802.1Q

多協定标簽交換

Multiprotocol Label Switching,MPLS

固定長度标簽

繼續閱讀