學習筆記 --《計算機網絡-自頂向下方法》


計算機網絡

1.計算機網絡和因特網

  • 因特網的主要協議統稱發布為TCP/IP。IP協議定義了在路由器和端系統之間發送和接受的分組協議。
  • 套接字接口(socket interace),規定了運行在一個端系統上的程序請求因特網基礎設施向正在運行在另一個端系統上的特定目的地程序交付數據的方式。因特網套接字接口是一套發送程序必須遵守的規則集合。
  • 協議定義了在兩個或多個通信實體之間的報文的格式和順序,以及報文發送和/或接受一條保文或其他事件所采取的動作。
  • 接入網,是將端系統物理連接到其邊緣路由器的網絡。
    1. 數字用戶線(DSL),用電話線的高頻音來承載數據傳輸,低頻用作電話信號。是通過DSL調制解調器得到數字數據后將其轉換成高頻音,通過電話線傳輸給本地中心局,模擬信號在DSLDM處被轉換回數字形式。
    2. 電纜因特網接入,利用有限電視公司的同軸電纜。和采用電話線一樣,需要增加電纜調制解調器,電纜調制解調器端接系統(CMTS)與DSLAM類似,用於將電纜調制解調器發送的模擬信號轉換回數字信號。分為上行信道和下行信道。
    3. 光纖,在被動交換網絡(PON)中,同樣是用戶通過光纖網絡端接收器,光纖連接到臨近的分配器,分配器把一些家庭集結到一根共享的光纖,該光纖再連接到服務商的光纖線路接收器(OLT)上。OLT提供了光與電信號的轉換。
    4. 以太網接入(局域網LAN),用雙絞線與以太網交換機連接,再接入到更大的因特網。
    5. Wifi(基於IEEE 802.11d的無線LAN接入)
    6. 廣域無線接入,與Wifi不同,可以在很遠處接入。
  • 報文(message),是端系統彼此交換的信息,能夠包含協議設計者需要的任何東西。
  • 分組交換,具有寬帶共享、簡單高效成本低的優點。
    • 分組(packet),源系統發送的長報文會被其分成較小的數據快,成為分組。每個分組都通過通信鏈路和分組交換機傳送。(交換機包含路由器和鏈路層交換機)。
    • 一般交換機在轉發輸入分組的第一個比特之前,必須接受到整個分組。稱為存儲轉發機制。
    • 轉發表,路由器根據轉發表將目的地址IP(或目的地址的一部分)映射成輸出鏈路,這樣才能確定該分組輸出在哪一條鏈路。
  • 電路交換網絡,會在端系統通信會話期間預留系統沿線路徑通信所需要的資源,分組交換交換中不預留。
    • 使用頻分復用(FDM)或者時分復用(TDM)。
  • 各層的所有協議稱為協議棧。
  • 五層因特網協議棧
    1. 應用層(Application layer),HTTP、DNS、SMTP、FTP。將位於應用層的信息分組稱為報文(message)。
    2. 運輸層(Transport Layer),UDP、TCP,傳送應用層報文。運輸層的分組稱為報文段
    3. 網絡層(Network Layer),IP協議。負責將稱為數據報的網絡層分組從一台主機移動到另一台主機。
    4. 鏈路層(Datalink Layer),以太網、Wifi、電纜接入網協議DOCSIS。鏈路層的分組稱為
    5. 物理層(Physical Layer),將幀中的一個個比特從一個節點移動到下一個節點。
      計算機網絡體系結構

2.應用層

  • 程序的通信,其實是進程間的通信。對於端系統來說,一個進程就是一個程序。進程通過交換報文從而實現通信。
  • 在一對進程之間的通信會話場景中,發起通信的進程標識為客戶,會話開始時等待聯系的進程是服務器。
  • 進程通過套接字接口,向網絡發送和接收報文。套接字是應用層和運輸層之間的接口,也被稱為應用程序與網絡之間的應用程序編程接口。
  • 應用程序開發者可以控制套接字在應用層端的一切,但是在運輸層端幾乎沒有
    • 應用程序對於運輸層的控制僅限於:選擇運輸協議;也許能設定幾個運輸層參數(如最大緩存和最大報文長度)。
  • 接收進程地址包括主機地址(IP)和端口(PORT)號。
  • 應用層需要選擇自己的運輸層協議,運輸層一般包括以下服務:可靠傳輸、吞吐量、定時、安全性。
    • TCP/IP網絡的運輸層提供兩個運輸服務TCP(面向連接、可靠數據傳輸、擁塞控制)、UDP(無連接、不可靠傳輸)。
    • TCP的加強版安全套接字SSL,不僅能做到傳統TCP的一切,還能提供安全服務,包括加密、數據完整性、端口鑒別。SSL不是在運輸層,而是在應用層實現的。
  • 應用層協議包含以下內容:
    1. 交換的報文的類型
    2. 各種報文類型的語法
    3. 字段的語義
    4. 確定一個進程何時以及如何發送報文,對報文進行相應的規划
  • Web的應用層協議是超文本傳輸協議HTTP,HTTP定義了Web客戶向Web服務器請求Web頁面的方式,以及服務器向客戶傳送Web頁面的方式。
    1. HTTP選擇TCP作為運輸層協議。服務器不存儲任何關於該客戶的狀態信息,是無狀態協議。
    2. HTTP默認是持續性連接,即所有請求經相同的TCP連接進行。也可以配置成非持續連接。
      1. 非持續連接缺點:必須為每一個請求對象建立和維護一個全新的連接。每一個對象經受兩倍(RTT往返時間)的交付時延,一個用於創建TCP,另一個RTT用於請求和接受一個對象。
      2. 采用持續連接可以保持該TCP連接打開,后續的請求和相應報文能夠按照相同的連接進行傳送。
  • HTTP響應格式
    • 請求報文

      GET /Default/go?sortID=52 HTTP/1.1
      Host: lib.chd.edu.cn
      Connection: keep-alive
      User-Agent: Mozilla/5.0 
      Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7
      

      第一行叫做請求行,包括方法字段(GET、POST、HEAD、PUT、DELETE)、URL字段、HTTP版本字段。
      Connection:keep-alive為持續連接,User-Agent用戶代理,Accept-Language返回語言。
      HEAD方法類似於GET方法,使用該方法會返回一個HTTP報文,但並不返回請求對象。
      PUT方法允許用戶上傳對象到指定Web服務器上的指定的路徑。
      DELETE方法允許用戶或應用程序刪除Web服務器上的對象。

    • 響應報文

      HTTP/1.1 200 OK
      Cache-Control: private
      Content-Type: text/html; charset=utf-8
      Content-Encoding: gzip
      Vary: Accept-Encoding
      Server: Server           
      X-AspNet-Version: 4.0.30319
      X-AspNetMvc-Version: 4.0
      X-Powered-By: ASP.NET
      Date: Wed, 15 Sep 2021 07:30:56 GMT
      Content-Length: 6437
      X-DNS-Prefetch-Control: off
      

      第一行是狀態行,包含協議版本字段、狀態碼、相應狀態信息。
      Server與User-Agent類似,指出服務器。
      Content-Length指出被發送對象的字節數。
      Content-Type發送對象的類型。
      常見狀態碼與相關短語

      狀態碼 信息
      200 OK
      301 Moved Permanently
      400 Bad Request
      404 Not Found
      505 HTTP Version Not Support
  • 用戶與瀏覽器的交互:cookie,它允許站點對用戶進行追蹤。
  • Web緩存,也叫代理服務器,它能夠代表初始服務器來滿足HTTP請求的網絡實體。內容分發器網絡CDN,在因特網上安裝了許多地理上分散的緩存器,從而使大量流量實現了本地化。
    • 條件GET,允許緩存器證實它的內容是最新的。在請求報文中添加首部行"if-modified-since:"。原始服務器返回304表示沒有被修改,可以繼續使用緩存器中的內容。
  • 簡單郵件傳輸協議SMTP
  • DNS因特網目錄服務
  • P2P文件分發
  • 視頻流於內容分發網CDN
  • 套接字編程

3.運輸層

  • 運輸層協議是在端系統中實現,而不是路由器中實現。

  • 運輸層會將應用發送的報文轉換成運輸層分組,也稱為運輸層報文段(segment)

    • 一般將報文分成更小的報文段,會添加上一個運輸層首部。
  • 網際協議IP,是不可靠服務。

  • 多路分解:將運輸層報文段中的數據交付到正確的套接字的工作。

  • 多路復用:從不同套接字中收集數據塊,並為每個數據塊封裝上首部信息(以便用於分解)從而生成報文段,然后將報文段傳遞到網絡層的工作。

  • 端口號是一個16位比特的數,在0~65535之間。0~1023是周知端口號,是受限制的,保留給HTTP之類的用。

  • 無連接的多路復用與多路分解 UDP

    • 當程序創建一個套接字是,運輸層會自動給該套接字分配一個端口(未被使用),也可以自己指定
    • 發送端創建運輸層報文段,包含應用程序數據、原端口、目的端口和長度與檢驗和。
    • 運輸層將該報文段封裝到一個IP數據報中,並盡力交付給目的主機。
  • 面向連接的多路復用與多路分解

    • 客戶通過歡迎套接字,與服務器建立連接,后續通過過服務器新創建的連接套接字進行通信。
  • UDP結構
    報文段結構

    • 長度: UDP用戶數據報的長度,其最小值是8(僅有首部)。
    • 校驗和:檢測UDP用戶數據報在傳輸中是否有錯。有錯就丟棄。
  • 可靠數據傳輸原理

    • 自動重傳請求協議ARQ,正確返回ACK,錯誤返回NAK。當發送方無法辨別反回的是ACK或為NAK時,自動重傳(加入分組編號字段,大多數協議都采用這個方法)。
      • 接收方需要進行差錯檢驗、肯定確認、否定確認,發送方重傳。
    • 停等協議效率低下、可以采用流水線技術
      • 在流水線技術中,差錯恢復有兩種基本方法:回退N步(GBN、也叫滑動窗口協議,包含使用序號、累積確認、檢驗和以及超時/重傳操作)、選擇重傳(SR)。
  • TCP連接,提供的是全雙工服務,只在端系統中運行,中間路由器對TCP是完全視而不見的。面向連接、流量控制、可靠傳輸。

  • TCP報文段結構
    TCP報文段結構
    RST、SYN、FIN比特用於連接的建立與拆除。32位序號為該報文段,確認序號為主機A希望從主機B收到的下一字節序號。最大報文段長度(MSS),是報文段里應用層數據報的長度,不包含TCP頭部。因為最大鏈路層幀長度為1500字節,因為TCP與IP的頭部通常占40字節,所以MSS典型值為1460字節

    • TCP在IP不可靠的盡力而為服務上創建了一種可靠數據傳輸服務。
    • 連接過程三次握手
      1. 標識位SYN置為1,客戶生成隨機序列號seq=client_isn.
      2. 服務器為該TCP連接分配緩存和變量,返回SYN=1,服務器初始序號seq=server_isn,確認序號為ack=client_isn+1,稱為SYNACK報文段.
      3. 收到SYNACK報文段后,客戶也要給該連接分配緩存與變量。對允許連接的報文段返回確認。返回確認序號ack=server_isn+1,SYN=0。本次傳輸可以攜帶數據(但實際上一般都沒有)。
        之后的傳輸SYN都為0
        三次握手
    • wireshark與報文段對應圖wireshark1
    • 四次揮手
      四次揮手
    • 當客戶想結束連接時,返回FIN=1,服務器再返回確認報文和終止報文FIN=1,客戶最后對服務器的終止報文進行確認。
  • 擁塞控制方法

    1. 端到端擁塞控制
      網絡層沒有為運輸層擁塞控制提供顯示幫助,通過TCP采用這個方法(通過超時或者三次冗余確認得知網絡擁塞,TCP會減小窗口大小,建議增加往返時延值來作為擁塞的指標)
    2. 網絡輔助的擁塞控制
      路由器向發送方提供關於網絡擁塞狀態的顯式反饋信息。通常路由器標識或更新從發送方流向接收方的分組中的某個字段來指示擁塞的產生。
  • TCP擁塞控制算法包括:慢啟動(MSS從小到大)、擁塞避免、快速恢復(推薦實現,非必須)。

4.網絡層

  • 網絡層能被分為兩個相互作用的部分:數據平面(數據轉發、物理實現、納秒尺度運行)、控制平面(路由選擇、軟件實現、毫秒與秒尺度運行)。
  • 轉發是指將分組從一個輸入鏈路接口轉移到適當的輸出鏈路接口的路由器本地動作,一般由硬件實現,時間很短(幾納秒)。
  • 路由選擇是指確定分組從源到目的地所采取的端路徑的網絡范圍處理過程,一般有軟件實現,通常為幾秒。
  • 路由器體系結構:1、輸入端口。2、輸出端口。3、交換結構。4、路由選擇處理器。
  • ipv4數據報格式
    數據報格式
    協議部分,是在ip數據報到達目的地時才會使用。該字段指出了ip數據報的數據部分應該交給哪個特定的運輸層協議。
  • ip地址223.1.1.0/24,其中的/24表示32比特中的最左側24比特定義了子網的地址,稱為子網掩碼。其他任何要連接到223.1.1.0/24網絡的主機都要求其地址具有223.1.1.xxx的形式。
  • 在采用CIDR無分類編址之前,ip地址的網絡部分只能為8、16、24,這是分類遍址。分別對應ABC類地址。該方法存在着浪費。
  • 動態主機配置協議DHCP
    • 作用:能使主機每次與網絡連接時能夠獲取相同的ip地址,或者臨時的ip地址。可以獲得它的子網掩碼、第一跳路由器(默認網關)、本地DNS服務器地址。

    • 步驟:

      1. 發現DHCP服務器。使用UDP像網絡廣播DHCP發現報文。目的地址255.255.255.255,源地址0.0.0.0
      2. DHCP服務器提供。服務器收到發現報文時,用DHCP提供報文向客戶做出反應。可以采用單播或廣播方式(由客戶端決定)。報文包含收到的發現報文的事務id、向客戶推薦的ip地址、網絡掩碼以及ip地址租用期(一般為幾小時或幾天)。
      3. DHCP請求。客戶從一個或者多個服務器提供中選擇一個,並發送DHCP請求報文進行響應,回顯配置參數。
      4. DHCP ACK。服務器用DHCP ACK報文對DHCP請求報文進行響應,證實所要求的參數。
        DHCP過程
    • 缺點:每當節點連到一個新的子網時,會獲得一個新的ip地址。
      -專用地址,局域網中使用的可重用的地址。不能接入互聯網。需要使用NAT才能接入互聯網。

      10.0.0.0——10.255.255.255
      172.16.0.0——172.31.255.255
      192.168.0.0——192.168.255.255
      

地址分段

  • ARP協議,地址解析協議,是介於鏈路層到網絡層之間的協議,它的作用是為了解析IP地址到MAC地址的映射,用於數據鏈路層使用。每台主機都維護一個ARP緩存表可以用arp -a命令查看。
  • 網絡地址轉換NAT,NAT路由器主要利用其端口號響應局域網內的主機請求,建立NAT轉換表進行標志每一次請求。
  • 自治系統AS內部的路由選擇協議:OSPF(開放最短路徑優先)、RIP
  • 自治系統之間的路由選擇:BGP
  • ICMP因特網控制報文協議,用來實現差錯報告、網絡探尋。
    • 差錯報文,包括五種類型:終點不可達、源點抑制(不再使用)、時間超過TTL=0(應用tarceroute采用,跟蹤一個源點到終點的路徑)、參數問題、改變路由(重定向到更好的路由器)
    • 詢問報文,回送請求和回答報文(測試目的地址是否可達以及相關狀態,ping采用這個,測試兩個主機間的連通性),時間戳請求和回答報文。
      ICMP

5.數據鏈路層

  • 鏈路層信道分為兩種類型:廣播信道、點對點通信鏈路。
  • 鏈路層過程基本是將數據報封裝成幀,通過單一通信鏈路可靠的從一個節點移動到相鄰節點。主體結構在網絡適配器中實現(又稱網絡接口卡或網卡,NIC)。
  • 提供以下服務,1.組成幀,將網絡層傳輸下來的數據報封裝成幀。2.鏈路管理。3.差錯控制(位錯--可靠交付)。4.流量控制。5.透明傳輸
  • 檢錯編碼:奇偶校驗碼(檢錯能力50%)、循環冗余碼CRC(接近為1)。糾錯編碼:海明碼。
  • 流量控制方法主要是停止等待協議和滑動窗口協議,滑動窗口協議還包括后退N幀協議GBN和選擇重協議SR。在TCP流量控制方法中也適用,但兩者屬於不同層次的流量控制。數據鏈路層的只影響局部節點的擁堵狀況,而TCP是全局性的。
  • 透明傳輸是指不管所傳數據是什么組合,都應當能夠在連路上傳送。一般采用違規編碼法(物理層實現,曼徹斯特編碼原理)、零比特填充法、
  • 以太網幀結構
    幀格式圖
    源地址與目的地址都是MAC地址。
    在該協議中,數據部分長度最大為1500字節,成為最大傳輸單元MTU。所以IP數據報不能超過該大小。
    FCS幀檢驗序列,是一段4個字節的循環冗余校驗碼。
  • MAC地址,6字節,共有248個可能的地址,被設置為永久的。用ARP協議與IP地址相互解析。
  • 交換機是鏈路層設備,將接收的幀轉發到出鏈路。對於子網和路由器是透明的,能自動維護交換表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM