《計算機網絡教程——自頂向下方法》學習筆記
這本書很經典,也很厚,之前學了大半部分(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段(不攜帶數據也不占用序號)。
第四章 網絡層
《計算機網絡教程——自頂向下方法》學習筆記