1. 程式人生 > >《計算機網絡教程——自頂向下方法》學習筆記

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

連接狀態 數據結構 ip地址 物理層 重復分組 ring ssh 自頂向下 nmp

這本書很經典,也很厚,之前學了大半部分(TCP/IP的五個層),也許是因為概念太多、內容太廣就放下了。這次記錄算是總結復習吧,感覺學東西特別是這種基礎性的東西還是得記筆記,有歸納的學習不然學著學著就淩亂了。。

第一章 概述

1.Internet: 主幹(國際ISP)——>互聯網服務提供商(國家或區域ISP)——>客戶網絡(網絡邊緣)

2.協議分層 protocol layering  模塊化modularity   邏輯連接

 自頂向下:應用層、傳輸層、網絡層、數據鏈路層、物理層。

 優點:①將復雜的任務分解成較小的、簡單的任務;②將服務從實現中分離出來;③中間系統並不需要所有層次,從而降低了整個系統的造價。

3.路由器在網絡層,對分組進行分片,即改變了對象的內容;交換機在數據鏈路層,不改變對象的內容。

4.TCP/IP協議簇中的對等體:  

   層次      分組名                地址

  應用層     消息message             名字(域名/ip)

  傳輸層    段segment或用戶數據報user datagram   端口號

  網絡層    數據報datagram             邏輯地址

  數據鏈路層  幀frame                鏈路層地址(MAC地址)

  物理層    位bite            物理層的數據交換單元是一個比特,沒有地址

5.TCP/IP各層描述:

  • 應用層:HTTP、SMTP、FTP、TELNET和SSH、SNMP、DNS、IGMP
  • 傳輸層:TCP、UDP、SCTP
  • 網絡層:IP(輔助協議:ICMP、DHCP、ARP)
  • 數據鏈路層:支持所有標準的和私有的協議,能夠接管數據報並攜帶它(裝在一個稱為幀的分組中)穿過鏈路的任何協議都能滿足網絡層的要求。
  • 物理層:物理層“之下”還有一個隱藏的傳輸介質層,而將一個比特變換成一個信號(電或光信號)存在多種協議。

6.封裝與解封裝  多路復用(源端)與多路分解(目的端)

7.國際標準化組織(ISO)  開放系統互連(OSI)模型 :7層 (將TCP/IP協議中的應用層分解成應用層、表示層、會話層)

第二章 應用層

1.應用層模式:傳統模式:客戶-服務器;新模式:對等

2.應用程序接口——程序中的接口是兩個實體間的指令集。此處,一個實體為應用層中的進程,另一個即為操作系統(os封裝了TCP/IP協議簇的前四層)。

常見的通信API:套接字接口、傳輸層接口(TLI)以及STREAM。

3.套接字接口是提供應用層和操作系統間通信的指令集,是用來進程間通信的指令集。(同鍵盤作為信源、屏幕作為信宿,文件同時作為信源和信宿一樣,套接字也是一種信源信宿)

 行為上,套接字與一個終端或者文件類似,但它不是物理實體而是一種抽象;

 實質上,套接字是供應用程序創建和使用的數據結構。

4.套接字地址=IP地址(32位,ipv4的話)+端口號(16位)

 套接字數據結構由五個字段組成:族(PF_INET,ipv4的話)+類型(SOCK_STREAM,用於TCP)+協議+本地套接字地址+遠程套接字地址

5.對客戶站點而言,本地套接字地址由OS提供——IP操作系統已知+隨機分配端口給進程,

         遠程套接字地址中IP地址通過DNS服務器獲取+端口號固定(HTTP或者說web就是80);

對服務器站點而言,本地套接字也由OS提供——IP操作系統已知+標準應用的端口號固定(同客戶站點的遠程套接字的端口號是一回事)或者不是標準應用則由設計者選擇一個固定的分配給該進程,

         遠程套接字地址包含在相應客戶端發送給服務器的請求報文中。

6. 標準的客戶-服務器應用:萬維網。

網絡客戶(瀏覽器)通常包含三個部分:控制程序+客戶協議(HTTP、FTP)+解釋程序(HTML、Js、Java)

 網絡服務器:如Apache

7.統一資源定位符(URL)

  定義網頁需要三個標識符:主機、端口號和路徑。而定義網頁之前需要告知瀏覽器使用哪種客戶-服務器應用,即協議。前三個定義了網頁,協議用來獲取網頁的運載工具形式。

8.超文本傳輸協議(HTTP):定義了客戶服務器程序如何編寫和如何從萬維網獲取網頁。(客戶發生請求,HTTP服務器返回響應。HTTP服務器使用80端口號,客戶使用隨機的)

 由分層思想可以知道,應用層(最高層)會使用傳輸層的服務,而HTTP使用的是TCP服務(誰叫TCP是面向連接的可靠的傳輸層協議呢)。

 非持續連接和持續連接,前者每次使用一個新的TCP連接獲取一個對象;後者使用一個TCP連接獲取全部對象。HTTP1.1版默認制定了持續連接。

 HTTP本質上不提供安全,可以在安全套接層(SSL)上運行HTTP即HTTPS。

9.文件傳輸協議(FTP),它是TCP/IP提供的標準機制,用於將文件從一個主機復制到另一個主機。

 FTP基本模型中,客戶由用戶接口+控制進程+數據傳輸進程三個組件組成;

             服務器由控制進程+數據傳輸進程兩個組件組成。

 在FTP整個會話期間,控制連接始終處於連接狀態,而數據連接則在每次傳輸文件時開啟傳完關閉。

FTP使用兩個常用端口:端口21用於控制連接;端口20用於數據連接。

10.電子郵件

  報文傳輸代理:SMTP(簡單郵件傳輸協議);報文訪問代理:POP3(郵局協議版本3)和IMAP4(英特網郵件訪問協議版本4)

第三章 傳輸層

1.傳輸層是TCP/IP協議簇的核心,是一個進程到另一個進程的連接。(邏輯連接,一種假想的直接連接)

  網絡層:不同主機間通信;傳輸層:不同主機的進程間通信(客戶-服務器模式)。

2. 客戶機進程:os分配隨機端口號(一般大於1023);服務器進程:熟知端口號(全局端口號)。

3.從生產者傳遞數據項到消費者有兩種方式:分為推和拉兩種

  至少需要兩種兩種流量控制:①從發送方傳輸層到發送方應用層的流量控制;②從接收方傳輸層到發送方傳輸層的流量控制。

  緩存區,一組內存單元,可以在發送端和接受端存儲分組。

4.差錯控制:①發現並丟棄被破壞的分組;②記錄丟失和丟棄的分組並重傳它們;③識別重復分組並丟棄它們;④緩沖失序分組知道丟失的分組到達。

  在英特網中,網絡層(IP)是不可靠的,而應用層需要可靠性,則需要傳輸層是可靠的——通過差錯控制服務來實現。

  序號  確認(ACK)  滑動窗口

5.流量和差錯控制的組合  擁塞控制——由網絡層實現。

 無連接服務:分組可能會失序到達,流量控制、差錯控制和擁塞控制都不能在無連接服務中有效實現——只有一個狀態的FSM(已建立狀態);

 面向連接的服務:提供端到端的服務,可以實現流量控制、差錯控制和擁塞控制——具有6個狀態的FSM

         (關閉狀態,打開-等待-I,打開-等待-II,已建立的狀態,關閉-等待-I,關閉-等待-II,關閉狀態)。

6.簡單協議、停止-等待協議(提供流量控制和差錯控制的面向連接協議)、回退N幀協議(GBN,流水線)、選擇性重復協議(SR)

7.UDP:無連接、不可靠的傳輸層協議,進行非常有限的差錯檢驗,但其開銷很小,是個非常簡單的協議。適用於多播、管理進程(SNMP)、交互實時應用以及簡單文件傳輸(TFTP)

8.TCP:面向連接的可靠的協議,使用GBN和SR協議的組合來提供可靠性。(校驗和、丟失或破壞分組重傳、累積和選擇確認以及計時器)

  tcp是一個面向流的協議,允許發送進程以字節流形式傳遞和接受數據。tcp將多個字節組合在一起稱為一個分組,稱為段(segment)。

  全雙工通信、多路復用和多路分解、面向連接服務以及可靠的服務(使用確認機制來檢查數據是否安全和完整的到達)。

 TCP連接——三次握手:

            ①:客戶端發送一個段是SYN段。用於序號同步。(SYN段,不攜帶數據,但占用一個序號)

            ②:服務器發送第二個段,兩個標誌位SYN和ACK置位的段。(SYN+ACK段,不攜帶數據,但它占用一個序號)

            ③:客戶發送第三個段,使用ACK標誌和確認序號字段來確認收到了第二個段(ACK段,若不攜帶數據則不占用序號)。

  SYN泛洪攻擊

 連接終止——三次握手:(大多數情況下是客戶端發起關閉連接請求)

           ①:客戶端發送FIN段(可包含客戶端要發送的最後一個數據塊,若不攜帶數據則該段占用一個序號);

           ②:服務器端發送FIN+ACK段(同上也可攜帶數據,若不攜帶數據則該段只占用一個序號);

           ③:客戶端的TCP發送最後一個段,ACK段(不攜帶數據也不占用序號)

 連接半關閉——四次握手:

           ①:客戶端發送FIN段(可包含客戶端要發送的最後一個數據塊,若不攜帶數據則該段占用一個序號);

           ②:服務器端發送ACK段;

           在這期間,客戶端依然可以接受來著該服務器端的數據;

           ③:服務器端發送FIN段;

           ④:客戶端的TCP發送最後一個段,ACK段(不攜帶數據也不占用序號)。

第四章 網絡層

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