標籤:
基礎 第一章
問題:建造一個網路
1.1 應用
統一資源定位器(uniform resource locator,URL)
點擊一個URL後,網際網路上可能需要交換多達17條訊息才能得到網頁,並且網頁本身要小到可以存放在一條訊息中。這些訊息中有6條用來把伺服器名翻譯成他所對應的網際網路地址(即IP地址,這個過程稱為DNS解析),3條訊息用來建立瀏覽器到伺服器之間的傳輸控制通訊協定(Transmission Control Protocol,TCP)的串連,4條訊息用來讓瀏覽器發送HTTP的get請求,並讓伺服器回送被請求的頁面(以及雙方對收到訊息的確認),還有4條用來關閉TCP串連。
1.2 需求1.2.1 連通
交換網 switched network
1. 電路交換 circuit switched (多用於電話系統)
2. 封包交換 packet switched (多用於電腦網路)
電路交換
首先通過一系列鏈路建立一條專用電路,然後允許源節點通過這條鏈路發送給位元流到目標節點。
封包交換
封包交換網的主要特點是網路中的結點彼此間發送離散的資料區塊,我們稱每個資料區塊為一個分組(packet)或一條訊息(message)。封包交換網一般使用一種叫做儲存轉寄(store-and-forward)的策略。
路由選擇
根據地址(mac或者ip)來確定如何將資訊轉寄到目標節點的過程。
1.2.2 成本
- 同步時分多工(synchronous time-division multiplexing,STDM)
- 頻分多工(frequency-division multiplexing,FDM)
- 統計多工(statistical multiplexing)
擁塞 congested
如果一段時間內,交換器接收分組的速度比它轉送分組的速度快,那麼交換器將最終用盡他的緩衝空間,一些分組就會被丟棄。
1.2.3 支援公用服務
可靠性
1. 位元錯(bit error)
2. 分組層級的錯誤,也就是網路丟失了整個分組
原因:分組含有不可糾正的位元錯;擁塞丟失;處理分組的一個節點上啟動並執行軟體出現錯誤。
3. 節點和鏈路級
物理鏈路被切斷或串連的電腦崩潰。
網路體繫結構
- OSI體繫結構
- 網際網路體繫結構
1.3.1 分層和協議
抽象層
當系統變得複雜後,系統設計者引入另一個抽象層。抽象的思想是定義一個能捕獲系統的主要特徵的統一模型,並將這種模型封裝為一個對象,為系統其它部分提供一個可操作的介面,對象如何?的細節對於對象的使用者來說是隱藏的。
網路分層結構
首先,它將建造一個網路的問題分解為多個可處理的部分,你不必希望實現所有的功能都集中在一個軟體中,而是可以分幾層,每一層解決一部分問題。第二,它提供一種更為模組化的設計,如果你想要加一些服務上去,只需要修改一層的功能,而繼續使用其他各層提供的功能。
協議(Protocol)
構成網路系統各層的抽象對象稱為協議(Protocol)。每種協議定義兩種不同的介面。首先,他為同一電腦上想使用它的通訊服務的其他對象定義一個服務介面(service interface)。第二,一個協議為另一個機器上的對等實體定義一個對等介面(peer interface)。
封裝
原因:在硬體層,對等實體之間通過一條鏈路直接進行通訊,除此之外,對等實體通訊是間接的。每個協議和它的對等實體的通訊是將訊息傳給更低層的協議,再由更低層協議將訊息發給它的對等實體。
方式:更低層的協議收到訊息後,會將一個首部(header)附到訊息上,有些協議則添加到訊息的尾部(tailer)。格式由其協議規範定義,訊息的奇遇部分稱為訊息體(body)或有效載荷(payload)
1.3.2 OSI體繫結構
ISO制定的體繫結構稱為開放系統互聯(Open Systems Interconnection,OSI)體繫結構。
將網路按功能分為7層,其中由一個或多個協議實現分配給某個特定層的功能。
傳輸層和更高層通常只在終端主機上運行,不在中間交換器或路由器上運行。
- 應用程式層
application 包括檔案傳輸通訊協定(FTP),它定義一個協議是的檔案傳輸應用可以互操作
- 展示層
presentation 關注對等實體間交換的資料的格式,例如一個整數是16,32還是64位,最先傳輸還是最後傳輸最高有效位,或者如何格式化一個視頻流。
- 會話層
session 提供一個名字空間用來將一個應用的各部分不同的傳輸串流練習在一起。例如,在視頻會議應用中,他可以同時管理一個音頻流與一個視頻流
- 傳輸層
transport進程對進程的通道,在此交換的資料單元通常稱為訊息(message)
- 網路層
network 處理封包交換網中節點的路由選擇。在這一層,節點交換的資料單元通常稱為分組(packet)而不是幀
- 資料連結層
data link 收集位元流形成一個更大的集合體稱為幀(frame),典型情況下,由網路介面卡和運行在節點作業系統上的裝置驅動程式實現資料連結層。
- 物理層
physical 處理通訊鏈路上原始位元的傳輸
1.3.3 網際網路體繫結構
網際網路體繫結構,有時也成為TCP/IP體繫結構,TCP和IP是它的兩個主要協議。
- 應用程式層 在傳輸層以上啟動並執行應用協議,如FTP,普通檔案傳輸通訊協定(Trivial File Transport Protocol,TFTP),Telnet(遠程登入)和簡易郵件傳輸通訊協定(Simple Mail Transfer Protocol,SMTP),使常用的應用可互操作。
- TCP/UDP層 傳輸控制通訊協定(
Transmission Control Protocol)和使用者資料包通訊協定(User Datagram Protocol),TCP和UDP為應用程式提供可選的邏輯通道:TCP提供可靠的位元組流通道,UDP提供不可靠的資料報傳送通道(資料報可認為是訊息的同義字),在網際網路語言中,TCP和UDP有時被稱為端到端(end-to-end)的協議,還可以被認為是傳輸協議。
- 網際協議層
Internet Protocol 這個協議支援多種網路技術互聯為一個邏輯網路
- 網路層 多種網路通訊協定,表示為NET1,NET2等等,實際中,這些協議由硬體(如網路介面卡)和軟體(如網路裝置驅動程式)共同實現。例如,乙太網路或光纖分布式資料介面(FDDI)協議。
網際網路體繫結構有3個特點,
第一,網際網路體繫結構並沒有嚴格的劃分層,這樣應用比較自由,可以跨過層直接使用IP或一個底層網路,事實上,程式員可以自由定義新的通道抽象或在任何已有協議上啟動並執行應用程式。
第二,IP作為體繫結構的焦點,它定義各種網路中交換分組的一種共同方法。IP之上可以有多個傳輸協議,每個協議為應用程式提供一種不同的通道抽象。這樣,從主機到主機傳送訊息的問題就完全從提供一種有用的進行到進程的通訊服務的問題中分離了出來。IP之下,這個體繫結構允許很多不同的網路技術,從乙太網路到FDDI,到ATM,到簡單的點到點鏈路。
第三,為了在網路體繫結構中提出一個官方新協議,必須產生一個協議規範和至少一個該規範的典型實現。
沙漏的設計理念,沙漏的細腰部代表最小的,經過精心挑選的通用功能集,他允許高層應用和低層通訊技術並存,共用各種功能,並快速發展。
1.4 實現網路軟體
每個協議提供一系列服務(service),API則提供特定作業系統中調用這些服務所用的文法(syntax)。
1.4.1/1.4.2 應用編程介面(通訊端) socket1.4.3 協議實現的問題進程模型
大多數作業系統都提供一種稱為進程(process)或線程(thread)的抽象概念。每個進程的運行很大程度上獨立於其他進程,作業系統負責確保給所有當前進程分配如地址空間和CPU周期這樣的資源。當作業系統停止正在CPU上執行的進程並啟動另一進程時,我們成這一轉換為上下文且含(context switch)。
進程/協議(process-per-protocol)模型
每個協議由一個獨立的進程實現,這就意味著當一條訊息向協議棧的上方或下方移動時,他被從一個進程/協議傳送到另一個進程/協議。一個進程/協議如何向下一個進程/協議傳遞訊息依賴於主機作業系統提供的處理序間通訊支援。通常有一個簡單的機制用於進程的訊息入隊。然後,最重要的一點是,協議圖的每一層都要求環境切換,這是一個典型的耗費時間的操作。
進程/訊息(process-per-message)模型
把每個協議當做一段靜態編碼並把進程同訊息聯絡起來,也就是說,當一條訊息從網路到達時,作業系統調度一個進程,使之負責訊息在協議圖中想上移動。在每一層調用實現協議的過程,由此導致調用實現下一個協議的過程,依此類推。
兩個模型中,進程/訊息模型更為高效,這是因為:在大多數電腦上,程序呼叫的效率比環境切換高一個數量級。第一種模型要求每一層耗費一個環境切換的代價,而第二種模型每一層只耗費一個進程調用。
訊息緩衝區
通訊端第二個低效率在於當調用send操作時,應用程式進程提供緩衝區,該緩衝區儲存向外發送的訊息,類似於當調用receive操作時將進來的訊息複製到緩衝區中。他強制最高層的協議把訊息從應用程式緩衝區複製到網路緩衝區中,反之亦然。講一個資料從一個緩衝區複製到另一個緩衝區是協議實現中開銷最大的工作之一。這是因為處理器的速度飛速發展,而儲存空間的發展並不如處理器那麼快。
為了不再協議棧的每一層都把訊息從一個緩衝區複製到另一個緩衝區中,大多數網路子系統定義了一種訊息的抽象資料類型,它由協議圖中的所有協議共用。這一抽象不僅允許訊息不必複製就可以在協議圖中向上或向下傳遞,而且它還提供其他無複製的方法來處理訊息,如增加或去掉一個頭部,將一個大的訊息拆分成幾個小的訊息。訊息抽象的確切格式隨作業系統的不同而有所不同。
1.5 效能1.5.1 頻寬和時延頻寬
bandwidth(也成為輸送量
throughput)
網路的頻寬是在一段特定時間內網路所能傳送的位元數。
時延
latency(也成延遲
delay)
將一個訊息從網路的一段傳到另一端所需花費的時間。在很多情況下,更重要的是知道一個訊息從網路的一端傳送到另一端並返回所花費的時間,而不只是單程的時延。我們稱它為網路的往返時間(round-trip time)。
我們通常認為時延由三部分組成:第一,光速傳播延遲;第二,發送一個資料單元花費的時間,它是網路頻寬和運載資料分組的大小的函數;第三,網路內部的排隊延遲,因為封包交換機在將分組轉寄出去之前通常需要將它儲存一段時間。
計算公式
latency = propagation + transmit + queue
propagation = distance/SpeedOfLight
transmit = size/bandwidth
當訊息只包括1位元且我們討論一條鏈路而不是整個網路的情況時,那麼transmit和queue就無關緊要了,時延只與傳播延遲(propagation delay)有關。
1.5.2 延遲和頻寬的乘積
延遲和頻寬的乘積相當於第一個位元到達接受者之前,寄件者必鬚髮送的位元數。如果寄件者希望接收者給出位元已開始到達的訊號,而且這個訊號發回到寄件者需經另一個通道時延(即我們隊通道的往返時延比單程時延更感興趣),那麼寄件者在接收到接收者發出的訊號之前能夠發完兩倍時延和頻寬乘積的資料。
電腦網路基礎篇