速率是指:單位時間傳輸的比特數。單位爲bit/s。java
在計算機中,帶寬是某通道的最高數據傳輸速率。單位是bit/s。算法
表示單位時間內經過某個網絡的實際的數據量。緩存
指數據從網絡的一端傳輸到另外一端須要的時間。分爲發送時延(傳輸時延),傳播時延,處理時延和等待時延。服務器
發送時延指:主機或路由器發送數據幀所須要的時間。也就是從發送數據幀的第一個比特算起,到該幀的最後一個比特發送完畢所需的時間。計算公式爲:
\[ 發送時延= \frac{數據幀長度}{發送速率} \]
傳播時延:電磁波在信道中傳播必定距離須要花費的時間。與信道長度和電磁波在信道上的傳播速率有關。網絡
處理時延:主機或路由器在收到分組時須要花費必定的時間進行處理。例如分析首部,提取數據,查找路由等。socket
排隊時延:分組在進入路由器後,要先在輸入隊列中排隊等待。tcp
總時延 = 發送時延+傳播時延+排隊時延+處理時延性能
物理層、數據鏈路層、網絡層、傳輸層、應用層。學習
將應用層分解爲會話層、表示層和應用層。測試
應用層:經過進程間的交互來完成特定的網絡應用。應用層協議有:HTTP,DNS,SMTP等。
傳輸層:向兩臺主機中的進程直接的通訊提供通用的數據傳輸服務。主要協議有:TCP和UDP。
網絡層:爲分組交換網上的不一樣主機提供通訊服務。在發送數據時,網絡層把運輸層的報文段或用戶數據報封裝成分組或包進行傳送。簡稱數據報。網絡層的另外一個任務是選擇合適的路由,使源主機運輸層所傳下來的分組,可以經過網絡中的路由器找到目的主機。
數據鏈路層:在兩個相鄰結點之間傳送數據時,數據鏈路層將網絡層交下來的IP數據報組裝成幀,在兩個相鄰結點間的鏈路上傳送幀。每一幀包括數據和必要的控制信息(同步信息,差錯控制信息)。
只有物理層不加控制信息。
數據鏈路層使用的信道主要有:
用於解決分組在一個網絡中傳輸到另外一個設備或者路由器的問題(局域網中傳輸)。
數據鏈路層的三個基本問題:封裝成幀,透明傳輸和差錯控制。
封裝成幀:每一個幀的組成包括:幀首部、幀的數據部分(IP數據報)、幀尾部。其中,幀的數據部分的最大長度稱爲最大傳輸單元 MTU。幀首部和幀尾部的字符稱爲控制字符,SOH,EOT。
透明傳輸:當數據部分存在和控制字符相同的字符時,就不是透明傳輸了,此時,數據鏈路層會自動在數據部分的字符前面插入轉義字符ESC,對應的值爲0X1B。此種方法稱爲字符填充。若是數據部分出現轉義字符,則再插入一個轉義字符。
差錯控制:在傳輸過程當中,一些比特的值被改變。數據鏈路層經過CRC 循環冗餘校驗碼進行檢錯。
設備要聯網時,用ppp協議和ISP進行通訊,獲取ip地址,從而上網。
設備經過網卡或適配器與局域網鏈接。
集線器僅僅上物理上拓展了局域網規模,屬於物理層設備。僅僅起到轉發的做用,沒有碰撞檢測。當有兩個接口同時接收到信號時,會產生碰撞。
佔48位。可看做每臺計算機的物理地址。是計算機的惟一標識。其實就是適配器的地址,或網卡地址。
mac幀最小長度爲64位。其中 ip 數據報的最小長度爲46位。
數據鏈路層擴展局域網的方法是使用交換機。交換機有一個地址表,裏面存放的是MAC地址和端口之間的映射關係。交換機是經過自學習算法來創建地址表的。
網絡層向傳輸層提供簡單靈活的,無鏈接的盡最大努力交付的數據報服務。
網絡再發送分組時不須要先創建鏈接。每個分組獨立發送,與先後的分組無關。
與 IP 協議配套使用的還有三個協議:
網絡中使用的中間設備有:
當中間設備是轉發器或網橋時,這僅僅是把一個網絡擴大了,而從網絡層的角度看,這仍然是一個網絡,通常並不稱之爲網絡互聯。網關因爲比較複雜,目前使用的較少。
IPv4地址有32位,分爲4段,每段8位。IP地址的編址方法共經歷過三個歷史階段。
A,B和C類IP地址的主機號可取值不能爲全0和全1,全0主機號爲本主機,全1主機號位表示本網絡號中的全部主機,廣播地址。
A類地址的網絡號不能爲全0和全1。全0爲本網絡,全1爲迴環測試。
B類的網絡號不能爲128.0.0.0;最小的網絡號爲128.1.0.0。因此網絡號要減1。
C類的網絡號可取的21位也不能爲全0.網絡號也要減1。
路由器僅根據目的主機所鏈接的網絡號來轉發分組,這樣可使路由表中的項目數大幅度減小,從而減少了路由表所佔的存儲空間和查找路由表的時間。
ip地址是標記一臺主機和一條鏈路的接口。當一臺主機同時鏈接到兩個網絡上時,該主機必須具有兩個相應的ip地址,其網絡號必須不一樣。因爲路由器至少鏈接到兩個網絡,所以一個路由器至少應當有兩個不一樣的ip地址。同時具有兩個mac地址。
數據在網絡中傳輸時,數據中的源ip和目的IP不會改變,可是源MAC和目的MAC會一直改變。
由 ip 地址查詢 MAC 地址。因爲 ip 協議使用 arp 協議,因此,一般將 arp協議劃歸爲網絡層。但 ARP 協議的用途是爲了從網絡層使用的 ip 地址,解析出在數據鏈路層使用的MAC 地址。
每一臺主機有一個 ARP高速緩存,裏面有本局域網上的各主機和路由器的 IP 地址到硬件地址的映射表。下面是主機如何創建映射表的過程。
當主機A要向本局域網上的主機 B 發送數據時,先在其 ARP 高速緩存中查看有無主機 B 的 IP 地址。若有,就在 ARP 高速緩存中查出對應的 MAC 地址,再把這個硬件地址寫入 MAC 幀。經過局域網把 MAC 幀發往主機B。
當沒法查到 B的 MAC 地址時,主機A自動運行ARP:
請注意,ARP時解決同一個局域網中的主機或路由器的IP地址和MAC地址的映射問題。若是要找的主機和源主機再也不同一個局域網上,就沒法解析出另外一個局域網中主機的MAC地址。此時,主機會將第一跳路由的MAC地址做爲目的MAC。寫入ARP高速緩存
下面概括出ARP的四種典型狀況:
互聯網使用ip而不是mac地址進行通訊的緣由是mac地址結構不一樣,要進行通訊,須要很是負責的轉換。
一個IP數據報由首部和數據兩部分組成。首部的前一部分是固定長度,共20字節,是全部IP數據報必須具備的。在首部的固定部分之和是一些可選字段,其長度可變。下面介紹首部各字段的含義。
數據鏈路層的最大傳送單元,MTU(mac幀數據部分的最大長度)。以太網中MTU爲1500字節。IP協議規定,數據報最大長度不超過576字節。從而IP層接收到的數據最大長度不超過512字節,這是假定IP首部爲最大長度60字節,外加4字節冗餘。就獲得576字節。不然,要進行分片。在進行分片時,數據報首部的總長度字段是指分片後每個分片的首部長度與該分片的數據長度的總和。
分組轉發算法以下:
A類網絡包含的主機號太多,A類網絡中的路由器的路由表太龐大。且不少A、B、C類網絡的主機號利用率不高。
給IP地址增長一個子網號字段,使兩級IP地址變爲三級IP地址。提升IP的利用率。這種作法叫作劃分子網。
劃分子網的思路以下:
路由器中爲了提取出子網的網絡地址,須要再路由表中插入一列,對應各自目的IP地址的子網掩碼。從而無論是否採用了子網,都能正確的提取出網絡地址。
CIDR 消除了傳統的A、B、C類地址以及劃分子網的概念,於是能更加有效地分配ipv4的地址空間。CIDR把32位的IP地址分爲先後兩個部分。前面部分是網絡前綴,用來指明網絡,後面部分用來指明主機。即IP分爲網絡前綴和主機號。
CIDR不使用子網是指CIDR並無在32位地址中指明若干位做爲子網字段。但分配到一個CIDR地址塊的單位,仍然能夠在本單位內根據須要劃分子網。
ICMP 工做於網絡層。ICMP的報文是封裝在IP數據報中,做爲數據報的數據部分發送。
ICMP 報文分爲差錯報告報文和詢問報文(ping)。
路由選擇協議分爲兩大類:內部網關協議IGP 和外部網關協議EGP。分別稱爲域內路由選擇和域間路由選擇。內部網關協議具體的有:RIP和OSPF。外部網關協議時BGP。
通訊的真正斷電並非主機而是主機中的進程。也就是說,端到端的通訊時應用進程之間的通訊。而網絡層只能將數據傳輸到目的主機,不能交付給目的進程,這須要傳輸層經過識別端口號來完成。
網絡層爲主機之間提供邏輯通訊。運輸層爲應用進程之間提供端到端的邏輯通訊。
傳輸層的協議有兩種:面向鏈接的傳輸控制協議 TCP 和無鏈接的用戶數據報協議 UDP。
TCP 提供面向鏈接的服務。在傳送數據以前必須先創建鏈接,數據傳送結束後要釋放鏈接。TCP 不提供廣播或多播服務。
常見的應用層協議中:HTTP、FTP、SMTP、TELENT是採用TCP進行傳輸的,其餘採用UDP進行傳輸。
TCP 中使用 16 位的端口號來標識不一樣的進程。端口號只具備本地意義,只是爲了標識本計算機應用層中的各個進程。
UDP 的主要特色是:
UDP中也有校驗字段。把首部和數據都進行校驗。
TCP的特色
TCP 鏈接的端點是 IP 和端口號構成的套接字 socket。每一條 TCP 鏈接惟一的被通訊兩端的兩個端點(即兩個套接字)所肯定。
發送方每次發送一個分組,等收到對方的應答後,再發送下一個分組。若是在有限時間內沒有收到對方應答,就超時重發。當收到對方的重複應答,就丟掉第二個應答。接收方在收到重複數據時,丟掉重複分組。並返回收到應答信號。這種可靠傳輸協議稱爲自動重傳請求 ARQ。
中止等待協議的信道利用率不高,爲了提升利用率,能夠一次連續發送多個分組。等前面的分組收到後,再滑動發送窗口,持續發送。
接收方採用累計確認的方式。接收方沒必要對收到的每一個分組逐個發送確認,而是再收到幾個分組後,對按序到達的最後一個分組發送確認,這就標識:到這個分組爲止的全部分組都已正確收到了。
累計確認的優勢是:容易實現,即便確認丟失也沒必要重傳。但缺點是不能向發送方反映出接收方已經正確收到的全部分組的信息。例如接收方已經收到1,2,4,5分組,缺失分組3,此時,接收方只能返回2,表示前兩個分組已經收到,此時發送方須要從新發送後3個分組。稱做回退N。
TCP 報文格式包括:
TCP的滑動窗口以字節爲單位。發送方根據接收方發過來的響應報文中的確認號和窗口大小,調整本身的發送窗口。發送方還可能根據當時的網絡擁塞狀況適當減少本身的發送窗口數值。
對於不是按序到達的數據,接收方先臨時存放在接收窗口中,等字節流中所缺乏的字節收到後,再按序交付上層的應用進程。
接收方有累計確認的功能,這樣能夠減少傳輸開銷,接收方能夠在合適的時候發送確認,也能夠在本身有數據要發送時把確認信息捎帶上,但不常常發生。
再強調一次:TCP 的通訊是全雙工通訊。通訊中的每一方都在發送和接收報文段。所以,每一方都有本身的發送窗口和接收窗口。
超時時間是依據當前報文的RTT時間動態調整的。
通常來講,總但願數據傳輸的越快越好。可是若是發送方把數據發送的過快,接收方就可能來不及接收,這就會形成數據的丟失。所謂流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
利用滑動窗口機制能夠很方便地在 TCP 鏈接上實現對發送方的流量控制。
應用進程把數據傳送到 TCP 的發送緩存後,剩下的發送任務就由 TCP 來控制了。能夠用不一樣的機制來控制 TCP 報文段的發送時機。例如:
TCP 實現中普遍使用的是 Nagle 算法。算法以下:若發送應用進程把要發送的數據逐個字節地送到 TCP 的發送緩存,則發送方就把第一個數據字節先發送出去,把後面到達的數據字節先緩存起來。當發送方收到對第一個數據字符的確認後,再把發送緩存中的全部數據組裝成第一個報文段發送出去,同時繼續對隨後到達的數據進行緩存。只有再收到對前一個報文段的確認後才繼續發送下一個報文段。Nagle 算法還規定,當到達的數據已達到發送窗口大小的一半或已達到報文段的最大長度時,就當即發送一個報文段,這樣作,能夠有效提升網絡的吞吐量。
在計算機網絡中的鏈路容量(帶寬)、交換結點中的緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可用部分,網絡的性能就要變壞。這種狀況就叫作擁塞。
擁塞控制是防止過多的數據注入到網絡中,這樣可使網絡中的路由器或鏈路不致過載。擁塞控制是一個全局性的過程,設計到全部的主機、路由器以及下降網絡傳輸性能相關的全部因素。
流量控制每每是指點對點通訊量的控制,是個端到端的問題。流量控制所要作的就是抑制發送端發送數據的速率,以便接收端來得及接收。
當網絡的實際吞吐量明顯地小於理想的吞吐量時,網絡進入了輕度擁塞的狀態。當提供的負載達到某一數值時,網絡的吞吐量反而隨提供的負載的增大而降低,這時網絡就進入了擁塞狀態。當提供的負載繼續增大時,網絡的吞吐量降低到零,網絡沒法工做,這就是所謂的死鎖。
TCP 進行擁塞控制的算法是;慢開始、擁塞避免、快重傳和快恢復。
1.慢開始和擁塞避免
下面討論的擁塞控制也叫作基於窗口的擁塞控制。爲此,發送方維持一個叫作擁塞窗口的狀態變量。擁塞窗口的大小取決於網絡的擁塞成都,而且動態地變化。發送方讓本身的發送窗口等於擁塞窗口。
發送方依據是否存在分組數據超時,來判斷網絡有沒有擁塞。當發送方按時收到分組應答時,就緩慢增大發送窗口。當分組計數器超時時,發送方認爲網絡存在擁塞,減少發送窗口的大小。
慢開始的思路是:初始時,先發送一個報文段,收到確認後,將窗口加倍。重複此過程,直到網絡擁塞,或者達到慢開始門限
慢開始有門限。當窗口大小超過慢開始門限時,就改成擁塞避免算法。
擁塞避免算法:當窗口大小達到慢開始門限後,窗口再也不加倍的擴大窗口大小,而是每次加1。
快重傳算法是爲了儘早讓發送方知道發生了個別報文段的丟失。快重傳算法首先要求接收方不要等待本身發送數據時才進行捎帶確認,而是當即發送確認,即便收到了時許的報文段,也要當即發送對已收到報文段的重複確認。例如,當接收方收到了第 1和2個報文段後,都分別及時發出了確認。現假設接收方沒有收到第3個報文段,卻收到了第4個報文段。原本接收方能夠什麼都不作。可是按照快重傳算法,接收方必須當即發送對 第2個報文段的重複確認,以便讓發送方及早知道本身沒有收到第3個報文段。這樣,發送方總共收到了接收方的4個對第 2個報文段的確認,其中後 3個都是重複確認。快重傳算法規定,發送方只要一連收到3個重複確認,就知道接收方確實沒有收到第 3 個報文段,於是當即進行重傳,稱爲快重傳,這樣就不會出現超時,發送方就不會誤認爲網絡擁塞。
當某個分組出現超時時,發送方執行快恢復算法,當即將發送窗口減半,減少擁塞窗口大小,並執行擁塞避免算法。
發送窗口的門限值爲接收窗口大小和擁塞窗口的較小值。
傳輸鏈接分爲三個階段:鏈接創建、數據傳送和鏈接釋放。
TCP 鏈接的創建採用客戶服務器方法。主動發起鏈接創建的應用進程稱爲客戶,而被動等待鏈接創建的應用進程叫作服務器。
TCP 創建鏈接的過程稱爲握手,握手須要在客戶和服務器之間交換三個 TCP 報文。
進行第三次握手的緣由是:可能客戶端發送完一個同步請求後,應某種緣由,傳送時延很是大,發送端超時,因而又從新發送同步請求,並傳輸數據。直到傳輸完成,斷開鏈接後,第一次的同步請求才發送到服務端,此時,服務端會誤認爲客戶端想要創建鏈接,因而,打開鏈接等待客戶端傳輸數據。而客戶端此時已關閉鏈接。從而佔用了服務端的鏈接,致使服務端浪費資源。加入第三次握手後,就不會出現這種問題。
數據傳輸結束後,通訊雙方均可釋放鏈接。如今 A 和 B 都處於鏈接創建階段。
進程間通訊方式:管道、信號量、消息隊列、共享存儲、socket。
死鎖產生的四個必要條件:
破壞死鎖的四個必要條件:
垃圾回收算法:
新生代採用複製算法。老年代採用標記清楚或標記整理算法。
分代回收時間: