網絡基礎筆記

參考如下內容

《圖解HTTP》
《圖解TCP/IP》
《計算機網絡:自頂向下方法》
慕課網
慕課網html


😃 引言:瀏覽器輸入URL後發生了什麼

三次握手鍊接

  1. 獲取本機IP地址,DNS服務器地址,網關路由器地址程序員

    • 首先咱們須要準備一個 DHCP 報文,封裝在一個 UDP 報文段中,裏面包括本機端口號68和目的端口號67,而後到網絡層封裝成數據包裏面包括了本機的初始IP0.0.0.0,和廣播地址255.255.255.255。接着到鏈路層封裝成鏈路層幀。裏面包括廣播地址和本機網卡的MAC地址。最後發送到本地局域網中
    • 這個數據包最終會被局域網中的 DHCP 服務器發現(有可能有多個 DHCP 服務器),DHCP 服務器會把可用的 IP 地址返回給咱們的主機。而後操做系統選擇一個 IP 地址併發送給 DHCP 服務器,最後 DHCP 服務器會返回一個包含本機 IP,DNS 服務器 IP,網關路由器 IP 的報文。
    • 接下來咱們須要經過網關路由器的 IP 地址去得到網關路由器的 MAC 地址,這樣咱們才能夠把獲取網站 IP 的 DNS 請求報文由網關發送給 DNS 服務器。這時候咱們須要準備一個 ARP 請求報文,請求獲取網關路由器的 MAC 地址,這個報文一樣是以廣播的方式發送到局域網中,網關路由器接受到請求報文就會把本身的 MAC 地址返回給本機。
  2. 獲取域名的IP地址算法

    • 接下來一切都準備好了,能夠開始講鍵入URL以後的事情了:首先咱們要訪問 DNS 服務器得到網站對應的 IP 地址,這時咱們須要把 DNS 報文封裝到一個 UDP 報文中,進而封裝到網絡層的數據包中,填上源 IP,目的 DNS 服務器 IP 地址。接着封裝鏈路層,填上網卡 MAC 地址和網關路由器 MAC 地址。接下來這個 DNS 請求報文就會經網關路由器發送給 DNS 服務器。
    • 咱們假設 DNS 服務器緩存有該網站的 IP 地址,(若是沒有緩存會進一步向更高級的DNS服務器索要IP地址)。接着 DNS 服務器會返回該域名的 IP 地址。
  3. 創建鏈接,通訊,斷開鏈接json

三次握手鍊接

四次揮手斷開

TCP 爲啥須要三次握手,四次揮手瀏覽器

  • 阻止歷史重複鏈接
    - 因爲網絡阻塞,客戶端發送的舊的 SYN/ACK 報文 先到達服務端(第一次握手),服務端處理後返回一個 SYN/ACK報文(第二次握手),客戶端根據自身上下文判斷出這是一個歷史鏈接(序列號或鏈接超時),會發送一個RST報文表示終止這一次鏈接(第三次握手)
  • 同步雙方初始序列號
    - 經過序列號能夠達到去重,雙方數據包有序
  • 避免資源浪費。
    - 若是客戶端的 SYN 阻塞了,重複發送屢次 SYN 報文,那麼服務器在收到請求後就會創建多個冗餘的無效連接,形成沒必要要的資源浪費。即兩次握手會形成消息滯留狀況下,服務器重複接受無用的鏈接請求 SYN 報文,而形成重複分配資源

抓包分析三次握手和四次揮手緩存

抓包分析

名詞 解釋
[S] SYN
[.] ACK
[P] Package,數據包
[F] FIN

爲啥 time_wait 須要等待 2MSL?服務器

  • 若服務端沒有收到最後一次ACK確認消息,則服務端會從新發送 FIN 標記報文請求斷開與客戶端鏈接(1MSL),客戶端收到後會從新發送一個 ACK 報文,保證TCP協議的全雙工鏈接可以可靠關閉
  • MSL: Maximum Segment Lifetime(報文最大生存時間),Linux 中默認一個MSL是30秒
  • 2MSL 的時間是從客戶端接收到 FIN 後發送 ACK 開始計時的

爲啥會出現大量的 close_wait ?網絡

  • close_wait 通常出如今被動關閉方,併發請求太多,服務端對應間隙的處理時間沒有跟上併發
  • 被動關閉方未及時釋放端口資源致使,檢查代碼

TCP 爲啥須要流量控制併發

流量控制

  • TCP 是全雙工的,客戶端和服務器都可做爲發送方或接收方,咱們如今假設一個發送方向接收方發送數據的場景來說解流量控制。首先咱們的接收方有一塊接收緩存,當數據來到時會先把數據放到緩存中,上層應用等緩存中有數據時就會到緩存中取數據。假如發送方沒有限制地不斷地向接收方發送數據,接收方的應用程序又沒有及時把接收緩存中的數據讀走,就會出現緩存溢出,數據丟失的現象,爲了解決這個問題,引入流量控制窗口socket

  • 緩衝區剩餘大小稱之爲接收窗口,用 rwnd 表示,若是 rwnd=0,則發送方中止發送 。只要接收方在響應 ACK 的時候把這個窗口的值帶給發送方,發送方就能知道接收方的接收緩存還有多大的空間,進而設置滑動窗口的大小。

TCP 爲啥須要擁塞控制

擁塞控制

  • 擁塞控制是指發送方先設置一個小的窗口值做爲發送速率,當成功發包並接收到ACK時,便以指數速率增大發送窗口的大小,直到遇到丟包(超時/三個冗餘ACK),才中止並調整窗口的大小。這麼作能最大限度地利用帶寬,又不至於讓網絡環境變得太過擁擠。

  • 擁塞控制 是調解網絡的負載

  • 接收方網絡資源繁忙,因未及時響應ACK致使發送方重傳大量數據,這樣將會致使網絡更加擁堵

  • 擁塞控制是動態調整 win 大小,不僅是依賴緩衝區大小肯定窗口大小

擁塞控制與流量控制的區別

  1. 流量控制考慮點對點的通訊量控制
  2. 擁塞控制考慮整個網絡,是全局性的考慮

TCP 擁塞控制分爲兩個部分

  1. 慢開始和擁塞避免

    • 慢啓動。TCP 鏈接創建後 擁塞窗口增長,慢慢提速(指數遞增),試探網絡承受能力,避免擾亂網絡通道的秩序
    • 擁塞避免。擁塞窗口到達初始閾值後,加法增長擁塞窗口,直至到最大擁塞窗口 ,緩衝區已滿,還有ACK請求的話,數據包會被丟棄
    • 當遇到網絡擁塞時初始閾值數改成最大擁塞窗口的一半,而後擁塞窗口數降爲0,從新開始 慢啓動 過程
    • 因爲再次慢啓動時,擁塞窗口數是由最大閾值減至0而後開始恢復,這會極大下降數據包傳遞速率
      慢開始和擁塞避免
  2. 快速重傳和快速恢復

    • 快重傳。通過慢啓動到達最大擁塞窗口後,收到3個重複的ACK請求則執行快重傳,將丟失的數據包從新發送一遍
    • 快恢復。將擁塞窗口數下降爲擁塞窗口最大閾值一半,直到把全部的包都從新發送完畢後,退出快速恢復階段,進入擁塞避免階段
      快速重傳和快速恢復

爲何會出現粘包/拆包

  • 通俗講

    • 粘包,發送端將多個報文寫入 tcp發送緩衝區中 ,與服務端經過TCP鏈接,在這個階段,不一樣的請求可能被合併爲一個請求(粘包)而後經過 socket通訊 將數據發送到服務端 tcp 接收緩衝區中
    • 拆包,TCP鏈接 中,可能會將一個請求拆分爲多個請求數據包發送到服務端tcp發送緩衝區中
  • 理論

    • 應用程序寫入的數據大於套接字緩衝區大小,這將會發生拆包
    • 應用程序寫入數據小於套接字緩衝區大小,網卡將應用屢次寫入的數據發送到網絡上 ,這將會發生粘包
    • 當TCP保文長度 - TCP頭部長度 > MSS(最大報文長度) 的時候將發生拆包
    • 接收方法不及時讀取套接字緩衝區數據,這接會發生粘包

如何獲取完整應用數據報文(四種方式)?

  • 使用帶消息頭的協議,頭部寫入包長度,而後再讀取包內容
  • 設置定長消息,每次讀取定長內容,長度不夠時空位補固定字符
  • 設置消息邊界,服務端從網絡流中按消息邊界分離出消息內容,通常使用\n
  • 更爲複雜的協議,如 json、protobuf

OSI七層網絡協議



經典協議與數據包

  • TCP段進行拆包時,是根據裏面定義的起點與終點進行的

TCP

名詞 解釋
以太網標頭 MAC地址
IP標頭 ip 和port
TCP標頭 TCP 傳輸的類型和數據包的長度
應用層數據包 實際數據包

Http 協議

Http

Websocket 協議

Websocket

  • 首先使用http協議完成一個鏈接(客戶端發送一個請求,而後將協議升級成Websocket),響應 101 Switching Protocols 切換協議,升級成 Websocket

Websocket Data 協議

WebsocketData

名詞 解釋
FIN 標識是否是最後一條數據包
RSV1或2或3 通常是0,表示是否是有拓展協議
opcode 數據包的類型
MASK 是否是通過源碼處理
Payload len 數據包大小
物理層概述

信道

  1. 信道是往一個方向傳送信息的媒體,一條通訊電路包含一個接收信道 和 一個發送信道

單工通訊信道

  • 只能一個方向通訊,沒有反方向反饋的信道,如有線電視、無線電收音機等

半雙工通訊信道

  • 雙方均可以發送和接收信息,可是不能雙方同時發送,也不能同時接收

全雙工通訊信道

  • 雙方均可以同時發送與接收信息

分用-複用技術

  • 頻分複用
  • 時分複用
  • 波分複用
  • 碼分複用

數據鏈路層概述

  • 什麼是封裝成幀?透明傳輸?差錯監測?

封裝成幀

  • "幀" 是數據鏈路層數據的基本單位
  • 發送端在網絡層的一段數據(數據包)先後添加特定標記造成 "幀",幀首部和尾部控制字符(特定比特流)以下:
    • 首部控制自符:SOH: 00000001
    • 尾部控制字符:EOT: 00000100
  • 接收端根據先後特定標記識別出"幀"

透明傳輸

  • 當幀的數據報中出現尾部(首部)控制字符時,會在控制字符前添加轉義字符

差錯檢測

  • 物理層只管傳輸比特流,沒法控制是否出錯,數據鏈路層負責起差錯檢測 的工做

  • 檢測機制

    • 奇偶檢驗碼:傳輸前將一個字節中的8位加起來,若爲偶數,則校驗碼爲1,若爲奇數,則校驗碼爲0 ,服務端的數據鏈路層進行一樣的運算,若校驗碼與客戶端不一樣,則數據出錯

      • 不足:若一組數據中,同時出錯兩位,奇偶校驗碼檢測不到錯誤
    • 循環冗餘校驗碼 CRC:一種根據傳輸或保存的數據而產生固定位數校驗碼 的方法,檢測 數據傳輸或者保存後可能出現的錯誤,生成的數字計算出來而且附加到數據後面

MTU(Maximum Transmission Unit)

  • 數據鏈路層的數據幀長度受 MTU 限制
  • 以太網MTU通常爲1500字節,數據楨過大或太小都會影響傳輸的效率
    • 數據幀的大小直接會影響總時延(發送時延+排隊時延+傳播時延+處理時延)

路徑 MTU

  • 木桶效應,路徑 MTU 由鏈路中MTU 的最小值決定

以太網協議

  • 以太網(Ethernet)是一種使用普遍的局域網技術 ,是一種應用於數據鏈路層的協議,使用以太網能夠完成相鄰設備的數據幀傳輸
目的地址 源地址 類型 幀數據 CRC
6 6 2 46-1500 4

數據由路由器發送至服務端過程

  1. 路由器MAC地址表(數據鏈路層中)中有目的地記錄

    • 客戶端經過網卡發出數據幀
    • 數據幀到達路由器,路由器取出前6字節 ,目的地址
    • 路由器匹配 MAC 地址表,找到對應的網絡接口
    • 路由器往該網絡接口發送數據幀
  2. 路由器MAC地址表中沒有記錄

    • 路由器檢查 MAC 地址表,發現沒有目的地信息
    • 路由器將廣播 請求的數據包到 除A之外的端口
    • 路由器將收到來自 目的地址的迴應,而後記錄下地址
    • 路由器往該網絡接口發送數據幀

數據包跨設備傳輸(數據鏈路層沒法解決,須要網絡層)


網絡層概述

虛擬互聯網絡

  • IP 協議使得複雜的實際網絡變爲一個虛擬互聯(解決以太網協議只能局域網傳輸的缺點) 的網絡
  • IP 協議 使得網絡層能夠屏蔽底層細節而專一網絡層的數據轉發
  • IP 協議解決了在虛擬網絡中數據報傳輸路徑的問題 ,使用者不須要去關注
  • IP 能夠對TCP 網絡包分片,但效率低

IP 協議

  • IP 地址長度爲32位,長分紅4個8位,用點分十進制 來表示
  • IP 數據報 = IP首部 + 數據部分,IP 首部(大於20字節,小於60字節) = 固定部分(前5行,每行4個字節,共20字節) + 可選字段
  • 用於傳輸真實數據

IP 協議

  1. 第一個4字節(第一行,版本和長度)

    • 版本 :指IP協議的版本,通訊雙方的版本必須一致,當前主流版本是4,即IPv4,也有IPv6
    • 首部長度 :用與標識首部的長度,單位爲4個字節,IP首部最大長度爲60字節(2^4 - 1 ) * 4 ,但通常只推薦使用20字節的固定長度
    • 服務類型 :8位,用於標識IP包的優先級,但如今並未使用
    • 總長度 :佔16位,最大數值爲655352^16-1 ,表示的是IP數據報總長度(IP首部+IP數據)
  2. 第二個4字節(第二行,分片相關)

    • 標識:16位;用於標識IP數據報,若是由於數據鏈路層幀數據段長度限制(也就是MTU,支持的最大傳輸單元),IP數據報須要進行分片發送,則每一個分片的IP數據報標識都是一致的。
    • 標誌:3位,但目前只有2位有意義;最低位爲MF,MF=1表明後面還有分片的數據報,MF=0表明當前數據報已經是最後的數據報。次低位爲DF,DF=1表明不能分片,DF=0表明能夠分片。
    • 片偏移:13位;表明某個分片在原始數據中的相對位置。若是IP報文長度比MTU還長會進行分片拆分,拆分後偏移量即當前數據幀保存的是第幾個偏移的IP數據
  3. 第三個4字節(第三行,報文壽命,校驗以及上層傳輸層協議)

    • TTL:佔8位,由發送主機設置 ,代表IP數據報文在網絡中的壽命,(也能夠說是通過路由器的個數)每通過一個設備,TTL 減1,當TTL=0時,網絡設備必須丟棄該報文。TTL解決了當IP報文在網絡中找不到終點的時候,避免了IP數據在網絡中無限循環和收發,消耗帶寬
    • 首部校驗和:用於驗證數據完整性,計算方法爲,首先將校驗和位置零,而後將每16位二進制反碼求和即爲校驗和,最後寫入校驗和位置。
    • 協議:表明上層傳輸層協議的類型,1表明ICMP,2表明IGMP,6表明TCP,17表明UDP。
    • 觀察下圖可知,IP協議還能夠繼續封裝IP協議
      IP協議字段值
  4. 第四個4字節(第四行)

    • 源IP地址:發送IP數據報的地址
  5. 第五個4字節(第五行)

    • 目的IP地址:接收數據報的地址

MTU 與 MSS

  • MTU:一個網絡包的最大長度,以太網中通常爲 1500 字節;

  • MSS:除去 IP 和 TCP 頭部以後,一個網絡包所能容納的 TCP 數據的最大長度;

    • 若是TCP 的整個報文(頭部 + 數據)交給 IP 層進行分片,會有什麼異常呢?

    當 IP 層有一個超過 MTU 大小的數據(TCP 頭部 + TCP 數據)要發送,那麼 IP 層就要進行分片,把數據分片成若干片,保證每個分片都小於 MTU。把一份 IP 數據報進行分片之後,由目標主機的 IP 層來進行從新組裝後,在交給上一層 TCP 傳輸層。

    這看起來井井有理,但這存在隱患的,那麼當若是一個 IP 分片丟失,整個 IP 報文的全部分片都得重傳。

    由於 IP 層自己沒有超時重傳機制,它由傳輸層的 TCP 來負責超時和重傳。

    當接收方發現 TCP 報文(頭部 + 數據)的某一片丟失後,則不會響應 ACK 給對方,那麼發送方的 TCP 在超時後,就會重發「整個 TCP 報文(頭部 + 數據)」。

    所以,能夠得知由 IP 層進行分片傳輸,是很是沒有效率的。

    因此,爲了達到最佳的傳輸效能 TCP 協議在創建鏈接的時候一般要協商雙方的 MSS 值,當 TCP 層發現數據超過 MSS 時,則就先會進行分片,固然由它造成的 IP 包的長度也就不會大於 MTU ,天然也就不用 IP 分片了。

IP 協議的轉發流程

  1. IP 路由表:在網絡層中 ,記錄源IP 與 下一跳的IP,可類比數據鏈路層的MAC地址表

IP 路由表

  1. IP 協議的轉發流程
    • 數據幀每一跳(hop)的MAC地址都在變化
    • IP 數據報每一跳的IP地址始終不變


ARP 與 RARP 協議

  • (R)ARP 協議是 TCP/IP 協議棧裏面基礎的協議,ARP 和 RARP 的操做對程序員是透明的,理解該協議有助於理解網絡分層的細節
  • ARP:地址解析協議,將網絡層IP32位地址經過ARP協議轉換成數據鏈路層MAC48位地址
  • ARP 緩存表:緩存了IP地址到硬件地址(MAC)之間的映射關係。ARP 緩存表中的記錄是有期限的(對於一臺電腦,網卡的MAC地址不會變,可是IP是隨網絡變化)
  • RARP 協議:將MAC地址轉換爲IP地址

IP與MAC在ARP緩存表中的映射關係
ARP 與 RARP協議

子網劃分

  • IP 地址 由 網絡號主機號 組成

  • 127.0.0.1:一般被稱爲本地迴環地址(Loopback Address),不屬於任何一個有類別地址類。它表明設備的本地虛擬接口,因此默認被看做是永遠不會宕掉的接口。在Windows操做系統中也有類似的定義,全部一般在安裝網卡前就能夠ping通這個本地迴環地址。通常都會用來檢查本地網絡協議、基本數據接口等是否正常的。

  • 子網劃分的緣由:當使用A類或B類網絡號時,主機數量分別爲2^16-2 和 2^8-2 ,爲了更充分利用不一樣分類的主機數量,因此在從網絡號後開始,劃分子網

  • 快速判斷某個IP所屬的網絡號:利用子網掩碼 與 當前 IP 地址進行與運算

  • 子網掩碼:

    • 子網掩碼 和 IP 地址同樣,都是32位
    • 子網掩碼 由連續的1 和連續的 0 組成
    • 某一個子網的子網掩碼具有網絡號位數個連續的1

子網掩碼劃分

經過IP與子網掩碼算網絡號

無分類編址CIDR

  • 定義

    • CIDR 中沒有 A、B、C類網絡號和子網劃分的概念
    • CIDR 將 網絡前綴 相同的IP地址稱爲一個 CIDR地址塊
  • 背景

    • 現階段更多使用 CIDR 方式,相比原來子網劃分更加靈活

      無分類編址CIDR_斜線記法劃分主機號

      無分類編址CIDR

網絡地址轉換 NAT 技術
背景
  1. IPv4 最多隻有40+億個IP地址
  2. 早期IP地址的不合理規劃致使IP號浪費
定義
  • 網絡地址轉換(Network Address Translation)
  • NAT 技術用於 多個主機 經過 一個公有IP 訪問互聯網的私有網絡中
  • NAT 技術是發生在本地內網設備中的
  • NAT 減緩了IP 地址的消耗,可是增長了網絡通訊的複雜度
網絡地址

分類

  • 內網地址:內部機構使用,避免與外網地址重複
  • 外網地址:全球範圍使用,全球公網惟一

三類內網地址

  • 10.0.0.0~10.255.255.255 (支持千萬數量級設備)
  • 172.16.0.0~172.31.255.255 (支持百萬數量級設備)
  • 192.168.0.0~192.168.255.255 (支持萬數量級設備)

網絡地址轉換NAT 技術

ICMP 協議
概念
  • ICMP(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡自己的消息。這些控制消息雖然並不傳輸用戶數據,可是對於用戶數據的傳遞起着重要的做用,當路由器在處理一個數據包的過程當中發生了意外,能夠經過ICMP向數據包的源端報告有關事件

  • 封裝在IP 數據報中的數據中,經過IP協議進行數據傳輸,主要是進行網絡中的錯誤以及異常報告

  1. 差錯報文

    • 網絡不可達:網絡故障
    • 主機不可達:目的主機是關機的
    • 對網絡重定向:傳輸到某一個網絡的數據可能須要重定向,不能走這個網絡
    • 對主機重定向:到達的主機不能處理,因此重定向
    • 壞的IP頭:多是頭部有問題,也多是數據有問題
  2. 詢問報文

    • 回送(Echo)請求或應答:發送一個空報文,驗證網絡是否爲空
    • 時間戳(Timestamp)請求或應答:須要對時間進行同步時,可能會發送此報文
ICMP 協議的應用
  • 它是TCP/IP協議簇的一個子協議,用於在IP主機、路由器之間傳遞控制消息

ping 命令使用 ICMP 回送請求和應答報文

  • 在網絡可達性測試中使用的分組網間探測命令 ping 能產生 ICMP 回送請求和應答報文。目的主機收到 ICMP 回送請求報文後馬上回送應答報文,若源主機能收到 ICMP 回送應答報文,則說明到達該主機的網絡正常。

  • Ping 排查網絡故障步驟以下:

    • 第一步。Ping 迴環地址127.0.0.1,若得不到返回,說明計算機協議棧出問題,須要從新裝系統或協議棧
    • 第二步。Ping 網關地址,即路由器地址。好比:Ping 192.168.0.1,若是有返回,則本機到路由器地址是通的
    • 第三步。Ping 遠端地址,好比:Ping www.baidu.com,若不通,則路由器到公網ISP不通,則須要聯繫電信或移動排查問題

路由分析診斷程序 tracert 使用了 ICMP時間超過報文

  • tracert 命令主要用來顯示數據包到達目的主機所通過的路徑。經過執行一個 tracert 到對方主機的命令,返回數據包到達目的主機所經歷的路徑詳細信息,並顯示每一個路徑所消耗的時間
網絡層的路由

自治系統

  • 一個自治系統(AS) 是處於一個管理機構下的網絡設備羣
  • AS內部網絡自行管理,AS對外提供一個或者多個出入口

自治系統 層次劃分

  • AS內部路由的協議稱爲:內部網關協議(RIP、OSPF)
  • AS外部路由的協議稱爲:外部網關協議(BGP)
RIP 協議

RIP 協議的過程

  1. 路由器初始化路由信息(兩個向量)
  2. 對相鄰路由器 X 發過來的信息,對信息的內容進行修改(下一跳的地址設置爲X,全部距離加1)
    • 檢索本地路由,將信息中新的路由插入到路由表裏面
    • 檢索本地路由,對於下一跳爲X的,更新爲修改後的信息
    • 檢索本地路由,對比相同目的距離,若是新信息的距離更小,則更新本地路由表
  3. 若是3分鐘沒有收到相鄰的路由信息,則把相鄰路由設置爲不可達(16跳)

傳輸層概述

  • 使用端口(Port)來標記不一樣的網絡進程
  • 端口(Port)使用16比特位表示(0~65535)
  • 默認端口
FTP HTTP HTTPS DNS TELNET
21 80 443 53 23
UDP協議詳解
概念
  1. UDP 是無鏈接的協議,面向用戶數據報的協議
  2. UDP 不能保證可靠的交付數據
  3. UDP 是面向報文傳輸的(從應用層傳輸過來的數據,UDP不會作任何處理)
  4. UDP 沒有擁塞控制,不管是否擁塞,是否能收到都會直接發出去
  5. UDP 首部開銷小,首部簡單
TCP 協議詳解
概念
  1. TCP 協議是面向鏈接的,可靠的,面向字節流(合併拆分數據報)的協議
  2. TCP 協議提供全雙工的通訊
可靠性相關協議

中止等待協議

  1. 超時重傳:發送方發送消息,接收方未收到;接收方發送確認消息,發送方未收到

    • 超時定時器
  2. 中止等待協議對信道的利用效率不高 ,它是最簡單的可靠傳輸協議

連續協議

  • ARQ(Automatic Repeat request):自動重傳請求

  • 核心:滑動窗口 與 累計確認

    • 滑動窗口:窗口以字節爲單位。確認已收到,則窗口前移
    • 累計確認:一次發送了1 ~ 6個報文,若在某一時刻,收到了第5個報文的確認消息,則能夠確認接收方已經收到了前5個報文,因此能夠同時向前移動5個窗格

TCP 協議的選擇重傳

  1. TCP 報文一次傳輸多個字節,發生數據丟失時,丟失的是一段數據報文(多個字節流),TCP 協議中的選項字段 記錄了當前TCP報文的邊界信息 ,當報文丟失時,會根據這個邊界信息重傳範圍內的TCP報文 ,而不是某個確認序號的報文
TCP 流量控制
  1. 流量控制指,接收方但願發送方不要發送數據太快
  2. 經過滑動窗口協議實現
  3. 堅持定時器:當接收方剩餘窗口爲0時,發送方啓用,用來定時詢問是否能發送數據給接收方

TCP 流量控制

TCP 協議的擁塞控制

慢啓動算法

  1. 由小到大逐漸增長髮送數據量,呈指數增加,直至慢啓動閾值(ssthresh)

擁塞避免算法

  1. 數據量到達閾值後,進入擁塞避免階段
  2. 維護一個擁塞窗口變量,只要網絡不擁塞(發送數據不超時,不考慮網絡故障),就試探着增大擁塞窗口,窗口+1 增加

應用層概述

  1. 做用:定義應用間的通訊規則

應用層概述

DNS
  1. 做用:將域名轉換爲IP,而後通訊,DNS是應用UDP協議的應用層協議
  2. 通訊:解析域名時,首先查看本地域名服務器,查找對應IP;如果沒有找到,則從根域名服務器開始迭代

DNS域名劃分

DHCP
  1. DHCP:Dynamic Host Configuration Protocol,動態主機設置協議
  2. DHCP:是一個局域網協議
  3. DHCP:是應用UDP 協議的應用層協議
  4. 做用:爲臨時加入局域網的設備提供IP地址

DHCP協議詳解

HTTP

HTTP協議詳解

HTTPS


相關概念

傳輸速率

  1. 爲何電信拉非 100M 光纖,測試峯值速度只有 12M 每秒?
    • 網絡經常使用單位爲Mbps速率:bps=bit/s
    • 100M/s = 100Mbps = 100Mbit/s
    • 100Mbit/s = (100/8)MB/s = 12.5 MB/s

時延

  1. 發送時延
    • 發送時延= 數據長度(bit) / 發送速率(bit/s)
    • 發送速率 受限於計算機網卡,由計算機硬件決定的 ,如千兆網卡,百兆網卡
  2. 傳播時延
    • 傳播時延= 傳輸路徑距離 / 傳播速率(bit/s)
    • 傳輸路徑距離指光纜距離,傳播速率受限與傳輸介質 ,如介質爲銅線或者光纖,不一樣介質傳播速率不同
  3. 排隊時延
    • 數據包在網絡設備中等待被處理的時間
  4. 處理時延
    • 數據包到達設備或者目的機器被處理所須要的時間

往返時間 RTT

  • RTT(Route-Trip Time) 是評估網絡質量的一項重要指標,表示的是數據報文在端到端通訊中的來回一次的時間

傳輸方式

  • 分組

    • 端系統和目的地間經過通訊鏈路與分組交換機 進行數據報文 交換來通訊,報文是由數據塊分組構成
  • 分組交換

    • 存儲轉發傳輸:交換機在轉發分組的第一個比特前的前提條件,必須接受到整個分組,這種等待轉發到下一個路由耗費的時間叫存儲時延
    • 排隊時延和分組丟失:交換機和多條通訊鏈路通訊時,該交換機會有一個輸出緩存輸出隊列 與之對應,新到達的分組發現路由器正在接收其餘分組時,就會在輸出隊列中進行排隊 ,這種等待分組轉發耗費時間爲***排隊時延
    • 丟包:路由器輸出隊列是有限制的,當多條鏈路同時發送分組致使輸出緩存沒法接受超額的分組後,這些分組會丟失(到達的分組或已排隊的分組將會被丟棄),在實際狀況中,經過限制端系統之間的吞吐量 來控制數據丟失。
相關文章
相關標籤/搜索