計算機網絡復習整理(二)

協議的定義:在兩個或多個通信實體間所交換消息的格式和順序,及發出/或收到一個消息或者其他事件時應該采取的行動。

協議的分層:應用層,運輸層,網絡層,鏈路層,物理層。

osi模型分層:應用層,表示層,會話層,運輸層,網絡層,數據鏈路層,物理層。

應用層:報文。運輸層,報文段;網絡層:數據報;鏈路層:幀。

應用層

進程通信

客戶端進程與服務器進程進行通信

進程與計算機網絡之間的接口socket套接字:進程通過一個套接字的軟件接口向網絡發送報文和從網絡接受報文。進程好比是一個房子,而套接字則是大門。因此,套接字被稱為應用程序和網絡之間的應用程序編程接口。(api)

應用程序開發者可以控制套接字在應用層端的一切,但是對套接字的運輸層端幾乎沒有控制權,僅限于:

選擇運輸層協議

也許能設定幾個運輸參數,如最大緩存和最大報文段長度。(傳輸層詳細解釋)。

進程尋址:源主機的進程為了向目的進程發送主機。接受集成需要一個地址。為了標識接受進程,需要定義兩種信息:1. 主機的地址2. 定義在目的主機中的接受進程的標識符。在因特網中,主機由其ip地址標識。(ip在網絡層詳細講)。除了目的主機地址,還需要目的主機的接受進程。目的地端口號(port number)用于這個目的。利于web服務器用端口號80來標識。

可供應用程序使用的運輸服務:

前面說過,套接字是應用層和運輸層的接口。那么運輸層協議能為應用程序提供什么服務呢?應用程序服務要求大體分為四類:

可靠數據運輸

吞吐量:可用吞吐量就是發送進程能夠向接受進程交付比特的速率。具有吞吐量要求的應用程序被稱為帶寬敏感的應用。而彈性應用能夠根據情況利用可供使用的吞吐量。

定時:提供定時保證(游戲實時性)

安全性:

因特網提供的運輸服務:tcp,udp。文件傳輸,電子郵件,web文檔等等對需要可靠數據傳輸,對帶寬的要求是彈性。不需要實時性。而網上語音或視頻對數據丟失是容忍的,對吞吐量有一定要求,需要實時性。存儲音頻視頻,對數據是容忍丟失的,對吞吐量有要求,需要實時性,但要求沒有視頻通話高。

tcp服務是面向連接服務和可靠數據傳輸服務。具有擁塞控制服務,這不一定能為通信進程帶來好處,但能為因特網帶來整體好處。當發送方和接受房之間的網絡出現擁塞時,tcp會抑制發送進程(客戶或服務器)。也會試圖限制每個tcp連接,使它們達到公平共享網絡寬帶的目的。

無論tcp還是udp都沒有提供任何加密機制,所以因特網屆研發了tcp的加強版,ssl,安全套接字層。用ssl對tcp進行加強,提供了安全性服務,包括加密等等。tcp,udp服務不提供定時和帶寬保證。

udp是一種不提供不必要服務的輕量級運輸協議,他僅提供最小服務。不可靠數據傳送服務,到達接受進程的報文也可能亂序到達的。

電子郵件 - SMTP - TCP

遠程終端訪問 - Telnet - TCP

Web - HTTP -TCP

文件傳輸 -FTP - TCP

流媒體 -HTTP/RTP - TCP或UDP

遠程文件傳輸 - NFS -UDP或TCP

因特網電話 -SIP,RTP或專用 -通暢UDP。

HTTP概述

Web的應用層協議是Http。它是web的核心。

Http由兩個程序實現,客戶端程序,服務器程序。客戶端和服務器端程序運行在不同的端系統中,通過交換Http報文進行會話。Http定義了這些報文的結構以及客戶和服務器進行報文交換的方式。

Http使用TCP作為她的支撐運輸協議,Http客戶先發起一個與服務器的TCP連接。一但連接建立,瀏覽器和服務器進程就可以通過套接字接口訪問TCP。

因為HTTP服務器并不保存關于客戶的任何信息,所以我們說Http是無狀態協議。

持續連接連接,非持續性連接

非持續連接:每個請求經過一個單獨的Tcp進行的

持續性連接:所有請求及其響應經相同的tcp鏈接發送。

采用非持續連接的http:

往返時間:指一個短分組從客戶端到服務器然后再返回客戶所花費的時間。

總的響應時間:2個RTT(三次握和請求接受對象)加上服務器傳輸HTML文件的時間。這里tcp第三次握手即客戶端向服務器發送確認時,同時發送請求報文。

非持續連接的缺點:必須為每一個請求的對象建立和維護一個全新的連接,對于每個這樣的連接,在客戶機和服務器都要分配TCP的緩沖區和變量,給服務器帶來嚴重負擔。其次,每一個對象傳輸時延為兩個RTT,一個用來建立TCP,另一個用于請求接受對象。

采用持續連接得http:

非持續連接必須為每個請求的對象建立和維護一個全新得連接。這給web服務器帶來嚴重的負擔。而且每一個對象經受兩倍RTT的交付時延。

采用持續連接得情況下,服務器在發送響應后保持該tcp連接打開。在相同的客戶與服務器之間的后續請求和響應報文能夠通過相同的連接進行傳送。如果一個連接經過一定的時間間隔(可配置)仍未被使用,這個http連接就會關閉。

Http報文格式

http請求報文第一行是請求行(方法字段,url字段,http版本),下一行是首部行。。P70

http響應報文:1.初始狀態行2.6個首部行,實體體p71。

200 OK,301

Moved Permanently:請求的對象被永久轉移了。

400 Bad request

404 Not Found

505 Http Version Not Supported.

cookie:http是無狀態的,為了能夠識別用戶,使用cookie。cookie允許站點對用戶進行跟蹤。可以在無狀態的HTTP上建立一個用戶會話層。

web緩存器(web cache):代理服務器,能夠代表初始Web服務器來滿足HTTP請求得網絡實體。可以大大減少客戶請求得響應時間。

FTP

和http一樣,運行在tcp上,ftp使用了兩個并行的tcp連接來傳輸文件,一個是控制連接,一個是數據連接。

控制連接用于在兩主機之間傳輸控制信息,如用戶標識,口令,改變遠程目錄的命令以及存放獲取文件的命令。

數據連接主要用于用于實際發送一個文件。因為ftp使用一個獨立的控制連接,所以我們稱ftp為帶外傳送。因此http是帶內傳送。

ftp必須在整個會話期間保留用戶的狀態。

SMTP

用于從發送方的郵件服務器發送報文到接收方的郵件服務器。一般不使用中間服務器發送郵件,即使這兩個郵件服務器在地球的兩端。基于tcp連接。

Http主要是一個拉協議,從服務器拉數據。而SMTP是一個推協議。把郵件推到服務器。

DNS(域名系統)

識別主機的方式:通過主機名或者IP地址。DNS的任務就是進行主機名到ip地址得轉換的目錄服務,將用戶提供的主機名解析為ip地址。

DNS是1.一個由分層得DNS服務器實現的分布式數據庫2.一個使得主機能夠查詢分布式數據庫的應用層協議。DNS協議運行在UDP之上,使用53號端口。

小例子:P88

除了進行主機名到ip地址得轉化外,DNS還提供一些重要得服務。

主機別名

郵件服務器別名

負載分配

如果采用集中式設計,會導致

單點故障:一個服務器崩潰,整個網崩。

通信容量:處理多有DNS查詢。

遠距離的集中式數據庫

維護:數據太多。

所以我們采用分布式,層次數據庫。

DNS使用大量的服務器,以層次方式組織,并且分布在全世界范圍內。沒有一臺DNS具有因特網上所有主機的映射。

DNS服務器的類型:

根DNS服務器

頂級域(TLD)服務器

權威DNS服務器

本地DNS

DNS緩存:當DNs服務器接收到一個DNS回答,(包含主機名到ip地址)她將該回答中的信息緩存在本地存儲器中。由于主機和主機名與ip地址之間的映射不是永久的,所以DNS服務器在一段時間后將丟棄緩存信息。

運輸層

網絡層提供了主機之間得邏輯通信,而運輸層為運行在不同主機上的進程之間提供了邏輯通信。運輸層協議只工作在端系統中。在端系統中,運輸層協議將來字應用進程的報文移動到網絡邊緣(網絡層),但對有關這些報文在網絡核心如何移動并不做任何規定。例如,中間路由器記不處理也不識別運輸層加在應用報文的任何信息。運輸層協議一種是udp(用戶數據報協議),他為調用她的應用程序提供了一種不可靠,無連接得服務。另一種是tcp(傳輸控制協議),他為調用她的應用程序提供了一種可靠得,面向連接得服務。

多路復用和多路分解:將主機間交付擴展到進程間交付被稱為多路復用和多路分解。一個進程有一個或多個套接字(socket),他相當于從網絡向進程傳遞數據和從進程向網絡傳遞數據得門戶。將運輸層報文度段中的數據交付到正確得套接字得工作稱為多路分解。在源主機從不同套接字中收集數據塊,并為每個數據塊封裝上首部信息(這將在以后用于分解)從而生成報文段,然后將報文段傳遞到網絡層,所有這些工作稱為多路復用。

無連接運輸:UDP

udp從進程獲得數據,附加上用于多路復用/分解服務得源和目的端口號字段,以及兩個其他得小字段,然后將報文段交給網絡層。網絡層將該運輸層報文段封裝到一個ip數據報中,然后將形成得報文段交付給接受主機。如果該報文段到達接受主機,UDP使用目的得端口號將報文端得數據交付給正確得應用進程。在使用udp時,在發送報文段之前,發送方和接受方得運輸層實體之間沒有握手。所以,udp是無連接的。DNS運行在udp上。

udp的優點:

關于何時,發送什么數據得應用層控制更為精細。只要應用進程數據傳遞給udp,udp就會將此數據打包進udp報文段并將其立即傳遞給網絡層。

無需連接建立。無連接時得時延。這是dns運行在udp上的主要原因

無連接狀態。tcp需要在端系統維護連接狀態。

分組首部開銷小。tcp有20字節,udp有8字節。

電子郵件(SMPT)遠程終端訪問(TELNET)Web(HTTP)文件傳輸(FTP)通常采用TCP。遠程文件服務器(NFS)名字轉換(DNS)路由器選擇協議(RIP)網絡管理(SNMP)用UDP。流失多媒體,因特網電話(UDP或TCP),目前這兩個多用udp,因為tcp得擁塞控制會導致視頻通話的實時應用性能變得差。但當多人都啟動高清視頻通話,路由器會有大量分組溢出,以至于導致沒有分組到達目的。

udp提供了差錯檢測功能。udp檢驗和用于確定當udp報文段從源到達目的移動時,其中的比特是否發生改變。

可靠數據傳輸原理

reliable data transfer protocol(可靠傳輸協議)

構造可靠數據傳輸協議。

經完全可靠信道的可靠數據傳輸:rdt1.0

徑具有比特差錯信道的可靠數據傳輸:rdt2.0

經具有比特差錯的丟包信道的可靠數據傳輸:rdt3.0

流水線可靠數據傳輸協議。允許發送方發送多個分組而無需等待確認。流水線技術對可靠數據傳輸協議帶來如下影響:

必須增加序號范圍

協議的發送方和接受端也許必須緩存多個分組。發送方最低限度應當能緩存那些已發送但沒有確認的分組。接收方也需要緩存那些以正確接受的分組。

流水線的差錯恢復有兩種基本方法:回退N步(GBN),選擇重傳(SR)

回退N步協議(GBN),允許發送方發送多個數組而不需等待確認,但他也受限于在流水線中未確認的分組數不能超過某個最大允許數N。在GBN協議中,接收方丟棄所有失序分組。

選擇重傳協議:GBN存在性能問題,但個分組的差錯就能引起GBN重傳大量分組,許多分組根本沒有必要重傳。而選擇重傳協議通過讓發送方僅重傳那些它懷疑在接收方出錯的分組而避免比不必要的重傳。

面向連接得運輸:TCP

tcp被稱為面向連接,因為一個應用程序可以開始向另一個進程發送數據前,兩個進程必須進行三次握手。

tcp連接提供的是全雙工服務(full-duplex service):數據可以從進程A流向B,也可以從B到A。tcp連接也是點對點的,不存在所謂的多播。

客戶端進程想與服務器進程建立一條連接。客戶首先發送一個特殊的tcp報文段,服務器用另一個特殊的tcp報文段來響應。最后客戶在用第三個特殊報文段作為響應。----三次握手

四次揮手:1.假設客戶端主動斷開連接,向服務器發送fin報文,這個報文主要告訴服務器客戶端已經沒有數據想要傳給服務器,但是服務器你如果有數據沒傳輸完的話,先不用斷開socket連接,可以繼續發你的數據,先給客戶端發ack報文。2.服務器收到報文,看了fin的報文,給客戶端發了ack報文,告訴客戶端服務器已經收到了消息,但我還有事沒做完,讓客戶端等會。3.這時候客戶端進入FIN_WAIT狀態,即等待服務器給他發fin報文。當服務器確定傳輸的數據都發完了,再向客戶端發送fin報文。告訴客戶端我已經傳輸完所有數據了,可以關閉socket連接。4.客戶端收到fin報文,就知道socket要斷開連接了,向服務器發送ack報文,但客戶端不確定這個報文是否傳到服務器了,于是進入Time_wait狀態,如果服務器沒有收到ack報文則進行重傳,如果等待30s沒有收到消息說明連接服務器端已經關閉了,客戶端可以安心關閉了。這樣tcp就斷開了。

可靠數據傳輸:因特網的網絡層服務(IP)是不可靠的,不能保證數據報的交付,和數據包的按序交付和數據完整性。

TCP擁塞控制 congestion control:讓每一個發送方根據所感知的網絡擁塞程度來限制其能向連接發送流量速率。

tcp擁塞算法3個主要部分:

慢啟動

擁塞避免

快速恢復

回顧

網絡層

網絡層的主要功能就是將分組從一臺發送主機移動到一臺接受主機。

轉發與路由選擇:

轉發。當一個分組到達路由器的一條輸入鏈路時,路由器必須將該分組移動到適當得輸出鏈路。每臺路由器都有一張轉發表。

路由選擇。當分組從發送方流向接收方時,網絡層必須決定這些分組所采用的路由貨路徑。計算這些路徑得算法被稱為路由選擇算法。

網絡層除了轉發和路由選擇還有連接建立這個功能,

網絡層提供了單一的服務,稱為盡力而為服務(best-effort service)。

網絡層也能提供無連接服務或連接服務,與運輸層的相似。

在網絡層,這些服務是由網絡層向運輸層提供的主機到主機的服務。在運輸層中,這些服務則是運輸層向應用層提供的進程到進程的服務。

在運輸層實現面向連接的服務和網絡層上的是不同的。運輸層面向連接時位于網絡邊緣的端系統中實現的,網絡層連接服務除了端系統中,也位于網絡核心的路由器中實現。

虛電路網絡(virtual-circuit):僅在網絡層提供連接服務的計算機網絡

數據包網絡(datagram network)僅在網絡層提供無連接服務的計算機網絡

網絡服務模型:

確保交付

具有時延上界的確保交付

有序分組交付

確保最小帶寬

確保最大時延抖動

安全性服務

因特網的網絡層有三個組件:

ip協議。

路由選擇部分,決定了數據包路徑

報告數據報中的差錯和對某些網絡層信息請求進行響應的措施。

ipv4編址:主機和物理鏈路層之間的邊界叫做接口。總共可能有2^32 個IP地址。每個主機和路由器上的每個接口必須有一個全球唯一的ip地址。一個接口的ip地址的一部分由其連接的子網決定。

子網(subnet),p226互聯網多個主機與路由器接口的網絡形成一個子網

子網掩碼(network mask),例如 223.1.1.0/24 其中/24記法有時稱為子網掩碼,指示32比特中最左側24比特定義了子網地址。任何要連接這個網絡的主機都要其地址具有223.1.1.xxx的形式

因特網的地址分配策略被稱為無類別域間路由選擇(Classes Interdomain Routing,DIDR)

在CIDR被采用前,ip地址的網絡部分被限制為8,16,24比特,這是一種稱為分類編址的編址方案(classful addressing),因為具有8,16,24比特子網地址的子網被稱為A,B,C累網絡。由于大小固定所以采用CIDR,比如C類只能容納254臺主機,256-2。

獲得ip地址過程:

網絡管理員與isp聯系,isp從分給他的更大地址塊中提供一些地址。

獲取主機地址:動態主機配置協議:某組織一旦獲得一塊地址,他就可以為組織內主機和路由器接口逐個分配ip地址。系統管理員通常手動配置路由器接口ip地址。主機地址一般使用動態主機配置協議。(DHCP)來完成。網絡管理員可以配置DHCP,以使某給定主機每次與網絡鏈接時能獲得一個相同的ip,或者株距將被分配一個臨時的ip地址,這個地址也許每次連接都會不同。DHCP還允許主機知道其他信息如子網掩碼,默認網關,本地DNS服務器地址。由于DHCP具有將主機鏈接到一個網絡的網絡相關方面的自動能力,固有稱為即插即用協議(plug-and-play protocol)。

DCPH的步驟:1.DCPH服務器發現。2.DCPH服務器提供3.DCPH請求4.DCPH ACK。

網絡地址轉換:(NAT)

UPnP:(即插即用)

路由器選擇算法:

主機通常直接與一臺路由器相連接,即該主機的默認路由器(default router)又稱第一跳路由器。路由器選擇算法的目的是簡單的:給定一組路由器以及連接路由器的鏈路,路由選擇算法要找到一條從源路由器到目的路由器好的路徑。即最低費用路徑。

路由器選擇算法分為:

全局式:用完整、全局性的網絡知識計算出源到目的之間的最低費用路徑。也就是說,該算法以所有節點之間的連通性及所有鏈路的費用為輸入。用LS

分散式:以迭代,分布式的方法計算出最低費用路徑。用DV

也可以分為靜態(人工干預)和動態(當網絡流量負載貨拓撲發生變化時改變路由選擇路徑,容易受到路由器選擇循環影響)。

或負載敏感(鏈路費用會動態地變化以反應出底層鏈路的當前擁塞水平)和負載遲鈍(相反)。

鏈路狀態路由選擇算法(Link state LS):D(v):到算法的本次迭代,從源節點到目的節點v的最低費用路徑的費用。p(v):從源到v沿著當前最低費用路徑的前一個節點(v的鄰居)。N’:節點子集;在所有迭代中需要搜尋的節點總數為n(n+1)/2,最差復雜性O(n^2)

距離向量陸游選擇算法(DV):

比較:

報文復雜性,Ls要求每個節點都知道網絡中每天鏈路的費用。

收斂速度:DV慢,在收斂時會遇到無窮計數的問題。

健壯性。Ls有一定的健壯性,DV算法中一個不正確的結點計算值會擴散到整個網絡。

層次路由選擇

鏈路層

鏈路層提供的服務:

成幀:在每個網絡層數據報經鏈路傳送之前,幾乎所有的鏈路層協議都要將其用鏈路層幀封裝起來。

鏈路接入:媒體訪問控制協議規定了幀在鏈路上傳輸的規則。

可靠交付:當鏈路層協議提供可靠交付服務時,他保證無差錯地經過鏈路層移動每個網絡層數據報。

差錯檢測和糾正

鏈路層的主體是網絡適配器(network adapter)中實現的。

差錯檢測和糾正技術:

奇偶檢驗(用來描述差錯檢測和糾正背后隱含的基本思想)

檢驗和方法(通常用于運輸層)

循環冗余檢測(通常用于適配器中的鏈路層)。

多路訪問鏈路和協議:。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 基礎知識 1.1 3種常見的計算機體系結構劃分 OSI分層(7層):物理層、數據鏈路層、網絡層、傳輸層、會話...
    Mr希靈閱讀 19,935評論 6 120
  • 個人認為,Goodboy1881先生的TCP /IP 協議詳解學習博客系列博客是一部非常精彩的學習筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,087評論 0 8
  • 1.這篇文章不是本人原創的,只是個人為了對這部分知識做一個整理和系統的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,125評論 6 174
  • 三月份又是離職跳槽的旺季了,身邊的同事開始蠢蠢欲動,而這種苗頭一旦有了就像流感一樣傳播開來。離職了的同事會述說新公...
    1993小北閱讀 326評論 0 1
  • 輪胎 我發現自己是個輪胎, 在賽道上馳騁的輪胎。 拼盡一生用生命比賽, 不管結果是好還是壞。 我的事業...
    生來彷徨ii閱讀 251評論 2 3