❶ 計算機網路——TCP/UDP協議
計算機網路七層模型中,傳輸層有兩個重要的協議:
(1)用戶數據報協議UDP (User Datagram Protocol)
(2)傳輸控制協議TCP (Transmission Control Protocol)
UDP 在傳送數據之前不需要先建立連接。遠地主機的運輸層在收到UDP 報文後,不需要給出任何確認。雖然UDP 不提供可靠交付,但在某些情況下UDP 卻是一種最有效的工作方式。
TCP 則提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP 不提供廣播或多播服務。由於TCP 要提供可靠的、面向連接的運輸服務,因此不可避免地增加了許多的開銷,如確認、流量控制、計時器以及連接管理等。
UDP 的主要特點是:
首部手段很簡單,只有8 個位元組,由四個欄位組成,每個欄位的長度都是兩個位元組。
前面已經講過,每條TCP 連接有兩個端點,TCP 連接的端點叫做套接字(socket)或插口。套接字格式如下:
套接寧socket= (IP 地址:埠號』)
每一條TCP 連接唯一地被通信兩端的兩個端點(即兩個套接宇)所確定。即:
TCP 連接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
3次握手鏈接
4次握手釋放鏈接
斷開連接請求可以由客戶端發出,也可以由伺服器端發出,在這里我們稱A端向B端請求斷開連接。
各個狀態節點解釋如下:
下面為了討論問題的萬便,我們僅考慮A發送數據而B 接收數據並發送確認。因此A 叫做發送方,而B 叫做接收方。
「停止等待」就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。
使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通信。像上述的這種可靠傳輸協議常稱為自動重傳請求ARQ (Automatic Repeat reQuest)。意思是重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。
滑動窗口協議比較復雜,是TCP 協議的精髓所在。這里先給出連續ARQ 協議最基本的概念,但不涉提到許多細節問題。詳細的滑動窗口協議將在後面討論。
下圖表示發送方維持的發送窗口,它的意義是:位於發送窗口內的5 個分組都可連續發送出去,而不需要等待對方的確認。這樣,信道利用率就提高了。
連續ARQ 協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
接收方一般都是採用 累積確認 的方式。這就是說,接收方不必對收到的分組逐個發送確認,而是可以在收到幾個分組後,對按序到達的最後一個分組發送確認,這樣就表示:到這個分組為止的所有分組都己正確收到了。
累積確認 的優點是容易實現,即使確認丟失也不必重傳。但缺點是不能向發送方反映出接收方己經正確收到的所有分組的信息。
例如,如果發送方發送了前5 個分組,而中間的第3 個分組丟失了。這時接收方只能對前兩個分組發出確認。發送方無法知道後面三個分組的下落,而只好把後面的三個分組都再重傳一次。這就叫做Go-back-N (回退N ),表示需要再退回來重傳己發送過的N 個分組。可見當通信線路質量不好時,連續ARQ 協議會帶來負面的影響。
TCP 的滑動窗口是以位元組為單位的。現假定A 收到了B 發來的確認報文段,其中窗口是20 (位元組),而確認號是31 (這表明B 期望收到的下一個序號是31 ,而序號30 為止的數據己經收到了)。根據這兩個數據, A 就構造出自己的發送窗口,其位置如圖所示。
發送窗口表示:在沒有收到B 的確認的情況下, A可以連續把窗口內的數據都發送出去。凡是己經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
發送窗口後沿的後面部分表示己發送且己收到了確認。這些數據顯然不需要再保留了。而發送窗口前沿的前面部分表示不允許發送的,因為接收方都沒有為這部分數據保留臨時存放的緩存空間。
現在假定A 發送了序號為31 ~ 41 的數據。這時發送窗口位置並未改變,但發送窗口內靠後面有11個位元組(灰色小方框表示)表示己發送但未收到確認。而發送窗口內靠前面的9 個位元組( 42 ~ 50 )是允許發送但尚未發送的。】
再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 號為止的數據是已經發送過確認,並且己經交付給主機了。因此在B 可以不再保留這些數據。接收窗口內的序號(31~50)足允許接收的。B 收到了序號為32 和33 的數據,這些數據沒有按序到達,因為序號為31 的數據沒有收到(也許丟失了,也許滯留在網路中的某處)。 請注意, B 只能對按序收到的數據中的最高序號給出確認,因此B 發送的確認報文段中的確認號仍然是31 (即期望收到的序號)。
現在假定B 收到了序號為31 的數據,並把序號為31~33的數據交付給主機,然後B刪除這些數據。接著把接收窗口向前移動3個序號,同時給A 發送確認,其中窗口值仍為20,但確認號是34,這表明B 已經收到了到序號33 為止的數據。我們注意到,B還收到了序號為37, 38 和40 的數據,但這些都沒有按序到達,只能先存在接收窗口。A收到B的確認後,就可以把發送窗口向前滑動3個序號,指針P2 不動。可以看出,現在A 的可用窗口增大了,可發送的序號范圍是42~53。整個過程如下圖:
A 在繼續發送完序號42-53的數據後,指針P2向前移動和P3重合。發送窗口內的序號都已用完,但還沒有再收到確認。由於A 的發送窗口己滿,可用窗口己減小到0,因此必須停止發送。
上面已經講到, TCP 的發送方在規定的時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念是很簡單的,但重傳時間的選擇卻是TCP 最復雜的問題之一。
TCP採用了一種自適應演算法 ,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT,TCP 保留了RTT的一個加權平均往返時間RTTs (這又稱為平滑的往返時間, S 表示Smoothed 。因為進行的是加權平均,因此得出的結果更加平滑)。每當第一次測量到RTT樣本時, RTTs值就取為所測量到的RTT樣本值。但以後每測量到一個新的RTT樣本,就按下式重新計算一次RTTs:
新的RTTs = (1 - α)×(舊的RTTs) + α ×(新的RTT樣本)
α 越大表示新的RTTs受新的RTT樣本的影響越大。推薦的α 值為0.125,用這種方法得出的加權平均往返時間RTTs 就比測量出的RTT值更加平滑。
顯然,超時計時器設置的超時重傳時間RTO (RetransmissionTime-Out)應略大於上面得出的加權平均往返時間RTTs。RFC 2988 建議使用下式計算RTO:
RTO = RTTs + 4 × RTTd
RTTd是RTT 的偏差的加權平均值,它與RTTs和新的RTT樣本之差有關。計算公式如下:
新的RTTd= (1- β)×(舊的RTTd) + β × |RTTs-新的RTT樣本|
發現問題: 如圖所示,發送出一個報文段。設定的重傳時間到了,還沒有收到確認。於是重
傳報文段。經過了一段時間後,收到了確認報文段。現在的問題是:如何判定此確認報文段是對先發送的報文段的確認,還是對後來重傳的報文段的確認?
若收到的確認是對重傳報文段的確認,但卻被源主機當成是對原來的報文段的確認,則這樣計算出的RTTs 和超時重傳時間RTO 就會偏大。若後面再發送的報文段又是經過重傳後才收到確認報文段,則按此方法得出的超時重傳時間RTO 就越來越長。
若收到的確認是對原來的報文段的確認,但被當成是對重傳報文段的確認,則由此計算出的RTTs 和RTO 都會偏小。這就必然導致報文段過多地重傳。這樣就有可能使RTO 越來越短。
Kam 提出了一個演算法:在計算加權平均RTTs 時,只要報文段重傳了就不採用其往返時間樣本。這樣得出的加權平均RTTs 和RTO 就較准確。
新問題: 設想出現這樣的情況:報文段的時延突然增大了很多。因此在原來得出的重傳時間內,不會收到確認報文段。於是就重傳報文段。但根據Kam 演算法,不考慮重傳的報文段的往返時間樣本。這樣,超時重傳時間就無法更新。
解決方案: 對Kam 演算法進行修正,方法是z報文段每重傳一次,就把超時重傳時間RTO 增大一些。典型的做法是取新的重傳時間為2 倍的舊的重傳時間。當不再發生報文段的重傳時,才根據上面給出的公式計算超時重傳時間。
流量控制(flow control)就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
利用滑動窗口機制可以很方便地在TCP 連接上實現對發送方的流量控制。
接收方的主機B 進行了三次流量控制。第一次把窗口減小到rwnd =300,第二次又減到rwnd = 100 ,最後減到rwnd = 0 ,即不允許發送方再發送數據了。這種使發送方暫停發送的狀態將持續到主機B 重新發出一個新的窗口值為止。我們還應注意到,B 向A 發送的三個報文段都設置了ACK=1,只有在ACK=1 時確認號欄位才有意義。
發生死鎖: 現在我們考慮一種情況。上圖中, B 向A 發送了零窗口的報文段後不久, B 的接收緩存又有了一些存儲空間。於是B 向A 發送了rwnd = 400 的報文段。然而這個報文段在傳送過程中丟失了。A 一直等待收到B 發送的非零窗口的通知,而B 也一直等待A 發送的數據。如果沒有其他措施,這種互相等待的死鎖局面將一直延續下去。
解決方案: TCP 為每一個連接設有一個 持續計時器(persistence timer) 。只要TCP 連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個 零窗口探測報文段 (僅攜帶1 宇節的數據),而對方就在確認這個探測報文段時給出了現在的窗口值。
1 TCP連接時是三次握手,那麼兩次握手可行嗎?
在《計算機網路》中是這樣解釋的:已失效的連接請求報文段」的產生在這樣一種情況下:client發出的第一個連接請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連接釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連接請求報文段後,就誤認為是client再次發出的一個新的連接請求。於是就向client發出確認報文段,同意建立連接。假設不採用「三次握手」,那麼只要server發出確認,新的連接就建立了。由於現在client並沒有發出建立連接的請求,因此不會理睬server的確認,也不會向server發送ACK包。這樣就會白白浪費資源。而經過三次握手,客戶端和伺服器都有應有答,這樣可以確保TCP正確連接。
2 為什麼TCP連接是三次,揮手確是四次?
在TCP連接中,伺服器端的SYN和ACK向客戶端發送是一次性發送的,而在斷開連接的過程中,B端向A端發送的ACK和FIN是是分兩次發送的。因為在B端接收到A端的FIN後,B端可能還有數據要傳輸,所以先發送ACK,等B端處理完自己的事情後就可以發送FIN斷開連接了。
3 為什麼在第四次揮手後會有2個MSL的延時?
MSL是Maximum Segment Lifetime,最大報文段生存時間,2個MSL是報文段發送和接收的最長時間。假定網路不可靠,那麼第四次發送的ACK可能丟失,即B端無法收到這個ACK,如果B端收不到這個確認ACK,B端會定時向A端重復發送FIN,直到B端收到A的確認ACK。所以這個2MSL就是用來處理這個可能丟失的ACK的。
1 文件傳送協議
文件傳送協議FTP (File Transfer Protocol) [RFC 959]是網際網路上使用得最廣泛的文件傳送協議,底層採用TCP協議。
盯P 使用客戶伺服器方式。一個FTP 伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接受新的請求:另外有若干個從屬進程,負責處理單個請求。
在進行文件傳輸時,客戶和伺服器之間要建立兩個並行的TCP 連接:「控制連接」(21埠)和「數據連接」(22埠)。控制連接在整個會話期間一直保持打開, FTP 客戶所發出的傳送請求,通過控制連接發送給伺服器端的控制進程,但控制連接並不用來傳送文件。實際用於傳輸文件的是「數據連接」。伺服器端的控制進程在接收到FTP 客戶發送來的文件傳輸請求後就創建「數據傳送進程」和「數據連接」,用來連接客戶端和伺服器端的數據傳送進程。
2 簡單文件傳送協議TFTP
TCP/IP 協議族中還有一個簡單文件傳送協議TFfP (Trivial File Transfer Protocol),它是一個很小且易於實現的文件傳送協議,埠號69。
TFfP 也使用客戶伺服器方式,但它使用UDP 數據報,因此TFfP 需要有自己的差錯改正措施。TFfP 只支持文件傳輸而不支持交耳。
3 TELNET
TELNET 是一個簡單的遠程終端協議,底層採用TCP協議。TELNET 也使用客戶伺服器方式。在本地系統運行TELNET 客戶進程,而在遠地主機則運行TELNET 伺服器進程,佔用埠23。
4 郵件傳輸協議
一個電子郵件系統應具如圖所示的三個主要組成構件,這就是用戶代理、郵件伺服器,以及郵件發送協議(如SMTP )和郵件讀取協議(如POP3), POP3 是郵局協議(Post Office Protocol)的版本3 。
SMTP 和POP3 (或IMAP )都是在TCP 連接的上面傳送郵件,使用TCP 的目的是為了使郵件的傳送成為可靠的。
❷ 計算機網路-可靠傳輸-停止等待協議
全雙工通信的雙方既是發送方也是接收方。下面為了討論問題的方便,我們僅考慮A發送數據而B接收數據並發送確認。 因此A叫做發送方,而B叫做接收方 。因為這里是討論可靠傳輸的原理,因此把傳送的數據單元都稱為分組,「停止等待」就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。
圖5-9(a)是最簡單的無差錯情況。A發送分組M1,發完就暫停發送,等待B的確認。B收到了M1就向A發送確認。A在收到了對M1的確認後,就再發送下一個分組M2。同樣,在收到B對M2的確認後,再發送M3。
圖5-9(b)是分組在傳輸過程中出現差錯的情況,B接收M時檢測出了差錯,就丟棄M1,其他什麼也不做(不通知A收到有差錯的分組)①。也可能是M1在傳輸過程中丟失了,這時B當然什麼都不知道。在這兩種情況下,B都不會發送任何信息。可靠傳輸協議是這樣設計的:A只要超過了一段時間仍然沒有收到確認,就認為剛才發送的分組丟失了,因而重傳前面發送過的分組。這就叫做 超時重傳 。要實現超時重傳,就要在每發送完一個分組時設置一個 超時計時器 。如果在超時計時器到期之前收到了對方的確認,就撤銷已設置的超時計時器。其實在圖5-9(a)中,A為每一個己發送的分組都設置了一個超時計時器。但A只要在超時計時器到期之前收到了相應的確認,就撤銷該超時計時器。
這里應注意以下三點:
第一,A在發遞完一個分組後,必須暫時保留已發送的分組的副本(在發生超時重傳時使用)。只有在收到相應的確認後才能清除暫時保留的分組副本。
第二,分組和確認分組都必須進行編號②。這樣才能明確是哪一個發送出去的分組收到了確認,而哪一個分組還沒有收到確認。
①註:在可靠傳輸的協議中,也可以在檢測出有差錯時發送「否認報文」給對方。這樣做的好處是能夠讓發送方及早如道出現了差錯。不過由於這樣處理會使協議復雜化,現在實用的可靠傳輸協議都不使用這種否認報文了。
②註:編號並不是一個非常簡單的問題。分組編號使用的位數總是有限的,同一個號碼會重復使用。例如,10位的編號范圍是0~1023。當編號增加到1023時,再增加一個號就又回到0,然後重復使用這些號碼。因此,在所發送的分組中,必須能夠區分開哪些是新發送的,哪些是重傳的。對於簡單鏈路上傳送的幀,如採用停止等待協議,只要用1位編號即可,也就是發送完0號幀,收到確認後,再發送1號幀,收到確認後,再發送0號幀。但是在運輸層,這種編號方法有時並不能保證可靠傳輸。
第三,超時計時器設置的重傳時間應當比數據在分組傳輸的平均往返時間更長一些。圖5-9(b)中的一段虛線表示如果M正確到達B同時A也正確收到確認的過程。可見重傳時間應設定為比平均往返時間更長一些。顯然,如果重傳時間設定得很長,那麼通信的效率就會很低。但如果重傳時間設定得太短,以致產生不必要的重傳,就浪費了網路資源。然而,在運輸層重傳時間的准確設定是非常復雜的,這是因為已發送出的分組到底會經過哪些網路,以及這些網路將會產生多大的時延(這取決於這些網路當時的擁塞情況),這些都是不確定因素。圖5-9中把往返時間當作固定的(這並不符合網路的實際情況),只是為了講述原理的方便,關於重傳時間應如何選擇, 選擇確認SACK 。
圖5-10(b)說明的是另一種情況,B所發送的對M1的確認丟失了。A在設定的超時重傳時間內沒有收到確認,並無法知道是自己發送的分組出鋁、丟失,或者是B發送的確認丟失了。因此A在超時計時器到期後就要重傳M1,現在應注意B的動作,假定B又收到了重傳的分組M1。這時應採取兩個行動。第一,丟棄這個重復的分組M1,不向上層交付;第二,向A發送確認,不能認為已經發送過確認就不再發送,因為A之所以重傳M1就表示A沒有收到對M,的確認。
圖5-10(b)也是一種可能出現的情況。傳輸過程中沒有出現差錯,但B對分組M1的確認遲到了。A會收到重復的確認。對重復的確認的處理很簡單:收下後就丟棄。B仍然會收到重復的M1,並且同樣要丟棄重復的M1,並重傳確認分組。
通常A最終總是可以收到對所有發出的分組的確認。如果A不斷重傳分組但總是收不到確認,就說明通信線路太差,不能進行通信。
使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通信。
這種可靠傳輸協議常稱為 自動重傳請求ARQ (Automatic Repeat reQuest)。意思是重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。
停止等待協議的優點是簡單,但缺點是信道利用率太低。我們可以用圖5-11來說明這個問題。為簡單起見,假定在A和B之間有一條直通的信道來傳送分組。
假定A發送分組需要的時間是TD。顯然,TD等於分組長度除以數據率。再假定分組正確到達B後,B處理分組的時間可以忽略不計,同時立即發回確認。假定B發送 確認分組需要時間TA 。如果A處理確認分組的時間也可以忽略不計,那麼A在經過時間(TD+RTT+TA)後就可以再發送下一個分組,這里的RTT是往返時間。因為僅僅是在時間TD內才用來傳送有用的數據(包括分組的首部),因此信道的利用率U可用下式計算: U=TD/TD +RTT+TA (5-3)
請注意,更細致的計算還可以在上式分子的時間TD內扣除傳送控制信息(如首部)所花費的時間。但在進行粗略計算時,用近似的式(5-3)就可以了。
我們知道,(5-3)式中的往返時間RTT取決於所使用的信道。例如,假定1200km的信道的往返時間RTT=20ms。分組長度是1200bit,發送速率是1Mbit/s。若忽略處理時間和TA(TA一般都遠小於TD), TD=1200/1*10^6 ,信道的利用率U=5.66%。但若把發送速率提高到10Mbit/s,則U=5.96×10^(-4)。信道在絕大多數時間內都是空閑的。
從圖5-11還可看出,當往返時間RTT遠大於分組發送時間TD時,信道的利用率就會非常低。還應注意的是,圖5-11並沒有考慮出現差錯後的分組重傳。若出現重傳,則對傳送有用的數據信息來說,信道的利用率就還要降低。
為了提高傳輸效率,發送方可以不使用低效率的停止等待協議,而是採用流水線傳輸(如圖5-12所示)。流水線傳輸就是發送方可連續發送多個分組,不必每發完一個分組就停頓下來等待對方的確認。這樣可使信道上一真有數據不間斷地在傳送。顯然,這種傳輸方式可以獲得很高的信道利用率。
❸ 計算機網路-可靠傳輸-滑動窗口協議
TCP的滑動窗口是以位元組為單位的 。為了便於說明滑動窗口的工作原理,我們故意把後面圖5-15至圖5-18中的位元組編號都取得很小。現假定A收到了B發來的確認報文段,其中窗口是20位元組,而 確認號是31 (這表明 B期望收到的下一個序號是31 ,而序號30為止的數據已經收到了)。根據這兩個數據,A就構造出自己的發送窗口。
我們先討論發送方A的發送窗口。發送窗口表示:在沒有收到B的確認的情況下,A可以連續把窗口內的數據都發送出去。凡是已經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
發送窗口裡面的序號表示允許發送的序號。顯然,窗口越大,發送方就可以在收到對方確認之前連續發送更多的數據,因而可能獲得更高的傳輸效率。接收方會把自己的接收窗口數值放在窗口欄位中發送給對方。因此,A的發送窗口一定不能超過B的接收窗口數值。發送方的發送窗口大小還要受到當時網路擁塞程度的制約。但在目前,暫不考慮網路擁塞的影響。
發送窗口後沿的後面部分表示己發送且己收到了確認。這些數據顯然不需要再保留了。而發送窗口前沿的前面部分表示不允許發送的,因為接收方都沒有為這部分數據保留臨時存放的緩存空間。
發送窗口的位置由窗口前沿和後沿的位置共同確定。發送窗口後沿的變化情況有兩種可能,即不動(沒有收到新的確認)和前移(收到了新的確認)。發送窗口後沿不可能向後移動,因為不能撤銷掉已收到的確認。發送窗口前沿通常是不斷向前移動,但也有可能不動。這對應於兩種情況:一是沒有收到新的確認,對方通知的窗口大小也不變;二是收到了新的確認但對方通知的窗口縮小了,使得發送窗口前沿正好不動。
發送窗口前沿 也有可能 向後收縮 。這發生在對方通知的窗口縮小了。但 TCP的標准強烈不贊成 這樣做。因為很可能發送方在收到這個通知以前已經發送了窗口中的許多數據,現在又要收縮窗口,不讓發送這些數據,這樣就會產生一些錯誤。
現在假定A發送了序號為31-41的數據。這時, A發送窗口位置並未改變 (圖5-16),但發送窗口內靠後面有11個位元組(31~41)表示己發送但未收到確認。而發送窗口內靠前面的9個位元組(42~50)是允許發送但尚未發送的。
從以上所述可以看出,要描述一個發送窗口的狀態需要三個指針:P1,P2和P3(圖5-16)。指針都指向位元組的序號。這三個指針指向的幾個部分的意義如下:
小於P1的是已發送並已收到確認的部分,而大於P3的是不允許發送的部分。
P3-P1=A的發送窗口
P2-P1=己發送但尚未收到確認的位元組數
P3-P2=允許發送但當前尚未發送的位元組數(又稱為 可用窗口或有效窗口 )
再看一下B的接收窗口。B的接收窗口大小是20。在接收窗口外面,到30號為止的數據是已經發送過確認,並且己經交付主機了。因此在B可以不再保留這些數據。接收窗口內的序號(31~50)是允許接收的。在圖5-16中,B收到了序號為32和33的數據。這些數據沒有按序到達,因為序號為31的數據沒有收到(也許丟失了,也許滯留在網路中的某處)。請注意,B只能對按序收到的數據中的最高序號給出確認,因此B發送的確認報文段中的確認號仍然是31(即期望收到的序號),而不能是32或33。
現在假定B收到了序號為31的數據,並把序號為31~33的數據交付主機,然後B刪除這些數據。接著把接收窗口向前移動3個序號(圖5-17),同時給A發送確認,其中窗口值仍為20,但確認號是34。這表明B已經收到了到序號33為止的數據。我們注意到,B還收到了序號為37,38和40的數據,但這些都沒有按序到達,只能先暫存在接收窗口中,等待缺少的數據到達。A收到B的確認後,就可以把發送窗口向前滑動3個序號,但指針P2不動。可以看出,現在A的可用窗口增大了,可發送的序號范圍是42~53。
A在繼續發送完序號42~53的數據後,指針P2向前移動和P3重合。發送窗口內的序號都已用完,但還沒有再收到確認(圖5-18)。由於A的發送窗口已滿,可用窗口已減小到零,因此必須停止發送。請注意,存在下面這種可能性,就是發送窗口內所有的數據都已正確到達B,B也早已發出了確認。但不幸的是,所有這些確認都滯留在網路中。在沒有收到B的確認時,A不能猜測:「或許B收到了吧!」為了保證可靠傳輸,A只能認為B還沒有收到這些數據。於是,A在經過一段時間後(由超時計時器控制)就重傳這部分數據,重新設置超時計時器,直到收到B的確認為止。如果A收到確認號落在發送窗口內,那麼A就可以使發送窗口繼續向前滑動,並發送新的數據。
我們在前面的圖5-18中曾給出了這樣的概念:發送方的應用進程把位元組流寫入TCP的發送緩存,接收方的應用進程從TCP的接收緩存中讀取位元組流。
窗口和緩存的關系
第一,緩存空間和序號空間都是有限的,並且都是循環使用的。最好是把它們畫成圓環狀的,但這里為了畫圖的方便,我們還是把它們畫成長條狀的。
第二,由於實際上緩存或窗口中的位元組數是非常之大的,因此圖5-19(a發送緩存和發送窗口,b接收緩存和接收窗口)僅僅是個示意圖,沒有標出具體的數值。但用這樣的圖米說明緩存和發送窗口以及接收窗口的關系是很清楚的。
發送緩存用來暫時存放:
(1)發送應用程序傳送給發送方TCP准備發送的數據;
2)TCP已發送出但尚未收到確認的數據。
發送窗口通常只是發送緩存的一部分,已被確認的數據應當從發送緩存中刪除,因此發送緩存和發送窗口的後沿是重合的。發送應用程序最後寫入發送緩存的位元組減去最後被確認的位元組,就是還保留在發送緩存中的被寫入的位元組數。發送應用程序必須控制寫入緩存的速率,不能太快,否則發送緩存就會沒有存放數據的空間。
接收緩存用來暫時存放:
(1)按序到達的、但尚未被接收應用程序讀取的數據;
(2)末按序到達的數據。
如果收到的分組被檢測出有差錯,則要丟棄。如果接收應用程序來不及讀取收到的數據,接收緩存最終就會被填滿,使接收窗口減小到零。反之,如果接收應用程序能夠及時從接收緩存中讀取收到的數據,接收窗口就可以增大,但最大不能超過接收緩存的大小。圖5-19(b)中還指出了下一個期望收到的位元組號。這個位元組號也就是接收方給發送方的報文段的首部中的確認號。
根據以上所討論的,我們還要再強調以下三點。
第一,雖然A的發送窗口是根據B的接收窗口設置的,但在同一時刻,A的發送窗口並不總是和B的接收窗口一樣大。這是因為通過網路傳送窗口值需要經歷一定的時間滯後(這個時間還是不確定的)。另外,發送方A還可能根據網路當時的擁塞情況適當減小自己的發送窗口數值。
第二,對於不按序到達的數據應如何處理,TCP標准並無明確規定。如果接收方把不按序到達的數據一律丟棄,那麼接妝窗口的管理將會比較簡單,但這樣做對網路資源的利用不利(因為發送方會重復傳送較多的數據)。因此TCP通常對不按序到達的數據是先臨時存放在接收窗口中,等到位元組流中所缺少的位元組收到後,再按序交付上層的應用進程。
第三,TCP要求接收方必須有累積確認的功能,這樣可以減小傳輸開銷。接收方可以在合適的時候發送確認,也可以在自己有數據要發送時把確認信息順便梢帶上。但請注意兩點。一是接收方不應過分推遲發送確認,否則會導致發送方不必要的重傳,這反而浪費了網路的資源。TCP標准規定,確認推遲的時間不應超過0.5秒。若收到一連申具有最大長度的報文段,則必須每隔一個報文段就發送一個確認。二是梢帶確認實際上並不經常發生,因為大多數應用程序很少同時在兩個方向上發送數據。
最後再強調一下,TCP的通信是全雙工通信。通信中的每一方都在發送和接收報文段。因此,每一方都有自己的發送窗口和接收窗口。在談到這些窗口時,一定要弄清是哪一方的窗口。
❹ arq協議是什麼協議
自動重傳請求(Automatic Repeat-reQuest,ARQ)是OSI模型中數據鏈路層和傳輸層的錯誤糾正協議之一。
定義
如果在協議中,發送方在准備下一個數據項目之前先等待一個肯定的確認,則這樣的協議稱為PAR(Positive Acknowledgement with Retransmission;
支持重傳的肯定確認協議)或者ARQ(Automatic Repeat Request,自動重復請求協議)。
自動重傳請求(Automatic Repeat Request),通過接收方請求發送方重傳出錯的數據報文來恢復出錯的報文,是通信中用於處理信道所帶來差錯的方法之一,有時也被稱為後向糾錯(Backward Error Correction,BEC);另外一個方法是信道糾錯編碼。
(4)計算機網路重傳協議擴展閱讀:
應用
UMTS的ARQ機制是在基地台控制站(Radio Network Controller,RNC),使用安置在協議數據單元(Protocol Data Unit,PDU)前的序號來作為是否有封包丟失的依據,有不少的延遲時間。
優點和缺點
ARQ協議的優點是它非常的簡單。因而被廣泛的應用在分組交換網路中。
ARQ協議的缺點是需要接收方發送ACK,這樣增加了網路的負擔也影響了傳輸速度。重復發送數據包來糾正錯誤的方法也嚴重的影響了它的傳輸速度。
❺ TCP-IP協議詳解(3) IP/ARP/RIP/BGP協議
網路層(network layer)是實現互聯網的最重要的一層。正是在網路層面上,各個區域網根據IP協議相互連接,最終構成覆蓋全球的Internet。更高層的協議,無論是TCP還是UDP,必須通過網路層的IP數據包(datagram)來傳遞信息。操作系統也會提供該層的socket,從而允許用戶直接操作IP包。
IP數據包是符合IP協議的信息(也就是0/1序列),我們後面簡稱IP數據包為IP包。IP包分為頭部(header)和數據(Data)兩部分。數據部分是要傳送的信息,頭部是為了能夠實現傳輸而附加的信息(這與乙太網幀的頭部功能相類似,如果對幀感到陌生,可參看 小喇叭 一文)。
IP協議可以分為IPv4和IPv6兩種。IPv6是改進版本,用於在未來取代IPv4協議。出於本文的目的,我們可以暫時忽略兩者的區別,只以IPv4為例。下面是IPv4的格式
IPv4包 我們按照4 bytes將整個序列折疊,以便更好的顯示
與幀類似,IP包的頭部也有多個區域。我們將注意力放在紅色的發出地(source address)和目的地(destination address)。它們都是IP地址。IPv4的地址為4 bytes的長度(也就是32位)。我們通常將IPv4的地址分為四個十進制的數,每個數的范圍為0-255,比如192.0.0.1就是一個IP地址。填寫在IP包頭部的是該地址的二進制形式。
IP地址是全球地址,它可以識別」社區」(區域網)和」房子」(主機)。這是通過將IP地址分類實現的。
IP class From To Subnet Mask
A 1.0.0.0 126.255.255.255 255.0.0.0
B 128.0.0.0 191.255.255.255 255.255.0.0
C 192.0.0.0 223.255.255.255 255.255.255.0
每個IP地址的32位分為前後兩部分,第一部分用來區分區域網,第二個部分用來區分該區域網的主機。子網掩碼(Subnet Mask)告訴我們這兩部分的分界線,比如255.0.0.0(也就是8個1和24個0)表示前8位用於區分區域網,後24位用於區分主機。由於A、B、C分類是已經規定好的,所以當一個IP地址屬於B類范圍時,我們就知道它的前16位和後16位分別表示區域網和主機。
網路協議概覽 中說,IP地址是分配給每個房子(計算機)的「郵編」。但這個說法並不精確。IP地址實際上識別的是網卡(NIC, Network Interface Card)。網卡是計算機的一個硬體,它在接收到網路信息之後,將信息交給計算機(處理器/內存)。當計算機需要發送信息的時候,也要通過網卡發送。一台計算機可以有不只一個網卡,比如筆記本就有一個乙太網卡和一個wifi網卡。計算機在接收或者發送信息的時候,要先決定想要通過哪個網卡。
NIC
路由器(router)實際上就是一台配備有多個網卡的專用電腦。它讓網卡接入到不同的網路中,這樣,就構成在 網路協議概覽 中所說的郵局。比如下圖中位於中間位置的路由器有兩個網卡,地址分別為199.165.145.17和199.165.146.3。它們分別接入到兩個網路:199.165.145和199.165.146。
IP包的傳輸要通過路由器的接力。每一個主機和路由中都存有一個路由表(routing table)。路由表根據目的地的IP地址,規定了等待發送的IP包所應該走的路線。就好像下圖的路標,如果地址是「東京」,那麼請轉左;如果地址是「悉尼」,那麼請向右。
A real world routing table
比如我們從主機145.17生成發送到146.21的IP包:鋪開信紙,寫好信的開頭(剩下數據部分可以是TCP包,可以是UDP包,也可以是任意亂寫的字,我們暫時不關心),註明目的地IP地址(199.165.146.21)和發出地IP地址(199.165.145.17)。主機145.17隨後參照自己的routing table,裡面有三行記錄:
145.17 routing table (Genmask為子網掩碼,Iface用於說明使用哪個網卡介面)
Destination Gateway Genmask Iface
199.165.145.0 0.0.0.0 255.255.255.0 eth0
0.0.0.0 199.165.145.17 0.0.0.0 eth0
這里有兩行記錄。
第一行表示,如果IP目的地是199.165.145.0這個網路的主機,那麼只需要自己在eth0上的網卡直接傳送(「本地社區」:直接送達),不需要前往router(Gateway 0.0.0.0 = 「本地送信」)。
第二行表示所有不符合第一行的IP目的地,都應該送往Gateway 199.165.145.17,也就是中間router接入在eth0的網卡IP地址(郵局在eth0的分支)。
我們的IP包目的地為199.165.146.21,不符合第一行,所以按照第二行,發送到中間的router。主機145.17會將IP包放入幀的payload,並在幀的頭部寫上199.165.145.17對應的MAC地址,這樣,就可以按照 乙太網與wifi協議 中的方法在區域網中傳送了。
中間的router在收到IP包之後(實際上是收到以太協議的幀,然後從幀中的payload讀取IP包),提取目的地IP地址,然後對照自己的routing table:
Destination Gateway Genmask Iface
199.165.145.0 0.0.0.0 255.255.255.0 eth0
199.165.146.0 0.0.0.0 255.255.255.0 eth1
0.0.0.0 199.165.146.8 0.0.0.0 eth1
從前兩行我們看到,由於router橫跨eth0和eth1兩個網路,它可以直接通過eth0和eth1上的網卡直接傳送IP包。
第三行表示,如果是前面兩行之外的IP地址,則需要通過eth1,送往199.165.146.8(右邊的router)。
我們的目的地符合第二行,所以將IP放入一個新的幀中,
在幀的頭部寫上199.165.146.21的MAC地址,直接發往主機146.21。
(在Linux下,可以使用$route -n來查看routing table)
IP包可以進一步接力,到達更遠的主機。IP包從主機出發,根據沿途路由器的routing table指導,在router間接力。IP包最終到達某個router,這個router與目標主機位於一個區域網中,可以直接建立連接層的通信。最後,IP包被送到目標主機。這樣一個過程叫做routing(我們就叫IP包接力好了,路由這個詞實在是混合了太多的意思)。
整個過程中,IP包不斷被主機和路由封裝入幀(信封)並拆開,然後藉助連接層,在區域網的各個NIC之間傳送幀。整個過程中,我們的IP包的內容保持完整,沒有發生變化。最終的效果是一個IP包從一個主機傳送到另一個主機。利用IP包,我們不需要去操心底層(比如連接層)發生了什麼。
在上面的過程中,我們實際上假設了,每一台主機和路由都能了解區域網內的IP地址和MAC地址的對應關系,這是實現IP包封裝(encapsulation)到幀的基本條件。IP地址與MAC地址的對應是通過ARP協議傳播到區域網的每個主機和路由。每一台主機或路由中都有一個ARP cache,用以存儲區域網內IP地址和MAC地址如何對應。
ARP協議(ARP介於連接層和網路層之間,ARP包需要包裹在一個幀中)的工作方式如下:主機會發出一個ARP包,該ARP包中包含有自己的IP地址和MAC地址。通過ARP包,主機以廣播的形式詢問區域網上所有的主機和路由:我是IP地址xxxx,我的MAC地址是xxxx,有人知道199.165.146.4的MAC地址嗎?擁有該IP地址的主機會回復發出請求的主機:哦,我知道,這個IP地址屬於我的一個NIC,它的MAC地址是xxxxxx。由於發送ARP請求的主機採取的是廣播形式,並附帶有自己的IP地址和MAC地址,其他的主機和路由會同時檢查自己的ARP cache,如果不符合,則更新自己的ARP cache。
這樣,經過幾次ARP請求之後,ARP cache會達到穩定。如果區域網上設備發生變動,ARP重復上面過程。
(在Linux下,可以使用$arp命令來查看ARP的過程。ARP協議只用於IPv4。IPv6使用Neighbor Discovery Protocol來替代ARP的功能。)
我們還有另一個假設,就是每個主機和路由上都已經有了合理的routing table。這個routint table描述了網路的拓撲(topology)結構。如果你了解自己的網路連接,可以手寫自己主機的routing table。但是,一個路由器可能有多個出口,所以routing table可能會很長。更重要的是,周圍連接的其他路由器可能發生變動(比如新增路由器或者路由器壞掉),我們就需要routing table能及時將交通導向其他的出口。我們需要一種更加智能的探測周圍的網路拓撲結構,並自動生成routing table。
我們以北京地鐵為例子。如果從機場前往朝陽門,那麼可以採取2號航站樓->>三元橋->>東直門->>朝陽門。2號航站樓和朝陽門分別是出發和目的主機。而三元橋和東直門為中間的兩個router。如果三元橋->>東直門段因為維修停運,我們需要更改三元橋的routing table,從而給前往朝陽門的乘客(IP包)指示:請走如下路線三元橋->>芍葯居。然後依照芍葯居的routing table前往朝陽門(芍葯居->>東直門->>朝陽門)。
一種用來生成routing table的協議是RIP(Routing Information Protocol)。它通過距離來決定routing table,所以屬於distance-vector protocol。對於RIP來說,所謂的距離是從出發地到目的地途徑的路由器數目(hop number)。比如上面從機場到朝陽門,按照2號航站樓->>三元橋->>東直門->>朝陽門路線,途徑兩個路由器,距離為2。我們最初可以手動生成三元橋的routing table。隨後,根據RIP協議,三元橋向周圍的路由器和主機廣播自己前往各個IP的距離(比如到機場=0,團結湖=0,國貿=1,望京西=1,建國門=2)。收到RIP包的路由器和主機根據RIP包和自己到發送RIP包的主機的距離,算出自己前往各個IP的距離。東直門與三元橋的距離為1。東直門收到三元橋的RIP包(到機場的距離為0),那麼東直門途徑三元橋前往機場的距離為1+0=1。如果東直門自己的RIP記錄都比這個遠(比如東直門->>芍葯居->>三元橋->>機場 = 2)。那麼東直門更改自己的routing table:前往機場的交通都發往三元橋而不是芍葯居。如果東直門自身的RIP記錄並不差,那麼東直門保持routing table不變。上述過程在各個點不斷重復RIP廣播/計算距離/更新routing table的過程,最終所有的主機和路由器都能生成最合理的路徑(merge)。
(RIP的基本邏輯是:如果A距離B為6,而我距離A為1,那麼我途徑A到B的距離為7)
RIP出於技術上的原因(looping hops),認為距離超過15的IP不可到達。所以RIP更多用於互聯網的一部分(比如整個中國電信的網路)。這樣一個互聯網的部分往往屬於同一個ISP或者有同一個管理機構,所以叫做自治系統(AS,autonomous system)。自治系統內部的主機和路由根據通向外部的邊界路由器來和其它的自治系統通信。各個邊界路由器之間通過BGP(Border Gateway Protocol)來生成自己前往其它AS的routing table,而自治系統內部則參照邊界路由器,使用RIP來決定routing table。BGP的基本工作過程與RIP類似,但在考慮距離的同時,也權衡比如政策、連接性能等其他因素,再決定交通的走向(routing table)。
我們一開始講述了IP包根據routing table進行接力的過程。為了順利實現接力,我們又進一步深入到ARP和RIP/BGP。這三個協議都協助了IP傳輸。ARP讓每台電腦和路由器知道自己區域網內IP地址和MAC地址的對應關系,從而順利實現IP包到幀的封裝。RIP協議可以生成自治系統內部合理的routing table。BGP協議可以生成自治系統外部的routing table。
在整個過程中,我們都將注意力放在了IP包大的傳輸過程中,而故意忽略一些細節。 而上面的IP接力過程適用於IPv6。
【TCP/IP詳解】系列教程
互聯網協議入門 1
互聯網協議入門 2
TCP-IP協議詳解(1)網路協議概觀
TCP-IP協議詳解(2) 乙太網與WiFi協議
TCP-IP協議詳解(3) IP/ARP/RIP/BGP協議
TCP-IP協議詳解(4)IPv4與IPv6地址
TCP-IP協議詳解(5)IP協議詳解
TCP-IP協議詳解(6) ICMP協議
TCP-IP協議詳解(7) UDP協議
TCP-IP協議詳解(8) TCP協議與流通信
TCP-IP協議詳解(9) TCP連接
TCP-IP協議詳解(10) TCP滑窗管理
TCP-IP協議詳解(11) TCP重傳
TCP-IP協議詳解(12) TCP堵塞控制
TCP-IP協議詳解(13) DNS協議
TCP-IP協議詳解(14) CIDR與NAT
TCP-IP協議詳解(15) HTTP協議概覽
圖解TCP-IP協議
❻ 計算機網路協議有哪些
網路協議(Protocol)是一種特殊的軟體,是計算機網路實現其功能的最基本機制。網路協議的本質是規則,即各種硬體和軟體必須遵循的共同守則。網路協議並不是一套單獨的軟體,它融合於其他所有的軟體系統中,因此可以說,協議在網路中無所不在。網路協議遍及OSI通信模型的各個層次,從我們非常熟悉的TCP/IP、HTTP、FTP協議,到OSPF、IGP等協議,有上千種之多。對於普通用戶而言,不需要關心太多的底層通信協議,只需要了解其通信原理即可。在實際管理中,底層通信協議一般會自動工作,不需要人工干預。但是對於第三層以上的協議,就經常需要人工干預了,比如TCP/IP協議就需要人工配置它才能正常工作。
區域網常用的三種通信協議分別是TCP/IP協議、NetBEUI協議和IPX/SPX協議。
TCP/IP協議毫無疑問是這三大協議中最重要的一個,作為互聯網的基礎協議,沒有它就根本不可能上網,任何和互聯網有關的操作都離不開TCP/IP協議。不過TCP/IP協議也是這三大協議中配置起來最麻煩的一個,單機上網還好,而通過區域網訪問互聯網的話,就要詳細設置IP地址,網關,子網掩碼,DNS伺服器等參數。
TCP/IP協議族中包括上百個互為關聯的協議,不同功能的協議分布在不同的協議層,
幾個常用協議如下:
1、Telnet(Remote
Login):提供遠程登錄功能,一台計算機用戶可以登錄到遠程的另一台計算機上,如同在遠程主機上直接操作一樣。
2、FTP(File
Transfer
Protocol):遠程文件傳輸協議,允許用戶將遠程主機上的文件拷貝到自己的計算機上。
3、SMTP(Simple
Mail
transfer
Protocol):簡單郵政傳輸協議,用於傳輸電子郵件。
4、NFS(Network
File
Server):網路文件伺服器,可使多台計算機透明地訪問彼此的目錄。
5、UDP(User
Datagram
Protocol):用戶數據包協議,它和TCP一樣位於傳輸層,和IP協議配合使用,在傳輸數據時省去包頭,但它不能提供數據包的重傳,所以適合傳輸較短的文件。
HTTP協議簡介
HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next
Generation
of
HTTP)的建議已經提出。
HTTP協議的主要特點可概括如下:
1.支持客戶/伺服器模式。
2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯系的類型不同。
由於HTTP協議簡單,使得HTTP伺服器的程序規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
❼ 計算機網路之五層協議
一:概述
計算機網路 (網路)把許多 計算機 連接在一起,而 互聯網 則把許多網路連接在一起,是 網路的網路 。網際網路是世界上最大的互聯網。
以小寫字母i開始的internet( 互聯網或互連網 )是 通用 名詞,它泛指由多個計算機網路互連而成的網路。在這些網路之間的通信協議(通信規則)可以是 任意 的。
以大寫字母I開始的Interent( 網際網路 )是 專有 名詞,它指當前全球最大的、開放的、由眾多網路相互連接而成的特定計算機網路,它採用的是 TCP/IP 協議族 作為通信規則,且其前身是美國的 ARPANET 。
網際網路現在採用 存儲轉發 的 分組交換 技術,以及三層網際網路服務提供者(ISP)結構。
網際網路按 工作方式 可以劃分為 邊緣 部分和 核心 部分,主機在網路的邊緣部分,作用是進行信息處理。 路由器 是在網路的核心部分,作用是:按存儲轉發方式進行 分組交換 。
計算機通信是計算機的 進程 (運行著的程序)之間的通信,計算機網路採用 通信方式 :客戶–伺服器方式和對等連接方式(P2P方式)
按作用 范圍 不同,計算機網路分為:廣域網WAN,城域網MAN,區域網LAN和個人區域網PAN。
五層協議 的體系結構由:應用層,運輸層,網路層,數據鏈路層和物理層。
<1>:應用層 : 是體系結構中的最高層,應用層的任務是 通過應用進程間的交互來完成特定網路應用 。應用層協議定義的是 應用進程間通信和交互的規則 。
<2>:運輸層 :任務是負責向 兩個主機中的進程之間的通信提供可靠的端到端服務 ,應用層利用該服務傳送應用層報文。
TCP :提供面向連接的,可靠的數據傳輸服務,其數據傳輸的單位是報文段。
UDP :提供無連接的,盡最大努力的數據傳輸服務,不保證數據傳輸的可靠性。
<3>網路層: 網路層的任務就是要選擇合適的路由,在發送數據時, 網路層把運輸層產生的報文段或者用戶數據報 封裝 成分組或包進行交付給目的站的運輸層。
<4>數據鏈路層: 數據鏈路層的任務是在兩個相鄰結點間的線路上無差錯地傳送以幀(frame)為單位的數據。每一幀包括數據和必要的控制信息。
<5>:物理層: 物理層的任務就是 透明 地傳送比特流,物理層還要確定連接電纜插頭的 定義 及 連接法 。
運輸層最重要的協議是:傳輸控制協議 TCP 和用戶數據報協議 UDP ,而網路層最重要的協議是網路協議 IP 。
分組交換的優點:高效、靈活、迅速、可靠。
網路協議主要由三個要素組成: (1)語法:即數據和控制信息的結構或者格式; (2)語義:即需要發出何種控制信息,完成何種動作以及做出何種響應。 (3)同步:即事件實現順序的詳細說明。
二:物理層
物理層的主要任務:描述為確定與 傳輸媒體 的 介面 有關的一些特性。
機械特性 :介面所用接線器的形狀和尺寸,引腳數目和排列,固定和鎖定裝置等,平時常見的各種規格的插件都有嚴格的 標准化的規定 。
電氣特性 :介面電纜上的各條線上出現的電壓 范圍 。
功能特性 :某條線上出現的某一電平的點電壓表示何種 意義 ;
過程特性 :指明對不同功能的各種可能事件的出現 順序 。
通信的目的 是: 傳送消息 , 數據 是運送消息的 實體 。 信號 是數據的電氣或電磁的表現。
根據信號中代表 參數 的取值方式不同。 信號分為 : 模擬信號 (連續無限)+ 數字信號 (離散有限)。代表數字信號不同的離散數值的基本波形稱為 碼元 。
通信 的雙方信息交互的方式來看,有三中 基本方式 :
單向 通信(廣播)
雙向交替 通信(**半雙工**_對講機)
雙向同時 通信( 全雙工 _電話)
調制 :來自信源的信號常稱為基帶信號。其包含較多低頻成分,較多信道不能傳輸低頻分量或直流分量,需要對其進行調制。
調制分為 兩大類 : 基帶調制 (僅對波形轉換,又稱 編碼 ,D2D)+ 帶通調制 (基帶信號頻率范圍搬移到較高頻段, 載波 調制,D2M)。
編碼方式 :
不歸零制 (正電平1/負0)
歸零制度 (正脈沖1/負0)
曼徹斯特編碼 (位周期中心的向上跳變為0/下1)
差分曼徹斯特編碼 (每一位中心處有跳變,開始辯解有跳變為0,無跳變1)
帶通調制方法 : 調 幅 ( AM ):(0, f1) 。調 頻 ( FM ):(f1, f2) 。調 相 ( PM ):(0 , 180度) 。
正交振幅調制(QAM)物理層 下面 的 傳輸媒體 (介質): 不屬於任何一層 。包括有: 引導性傳輸媒體 :雙絞、同軸電纜、光纜 、 非引導性傳輸媒體 :短波、微波、紅外線。
信道復用技術 : 頻分復用 :(一樣的時間佔有不不同資源) ; 時分復用 :(不同時間使用同樣資源) ;統計時分復用、波分復用(WDM)、碼分復用(CDM)。
寬頻接入技術 : 非對稱數字用戶線 ADSL (Asymmetric Digital Subcriber Line)(用數字技術對現有的模擬電話用戶線進行改造)
三:數據鏈路層
數據鏈路層使用的 信道 有 兩種類型: * 點對點(PPP) 信道+ 廣播*信道
點對點信道的數據鏈路層的協議數據單元- -幀
數據鏈路層協議有許多, 三個基本問題 是共同的
封裝成楨
透明傳輸
差錯檢測
區域網的數據鏈路層拆成兩個子層,即 邏輯鏈路層(LLC) 子層+ 媒體接入控制(MAC) 子層;
適配器的作用:
計算機與外界區域網的連接是通過通信適配器,適配器本來是主機箱內插入的一塊網路介面板,又稱網路介面卡,簡稱( 網卡 )。
乙太網採用 無連接 的工作方式,對發送的數據幀 不進行編號 ,也不要求對方發回確認,目的站收到差錯幀就丟掉。
乙太網採用的協議是:具有 沖突檢測 的 載波監聽多點接入 ( CSMA/CD )。協議的要點是: 發送前先監聽,邊發送邊監聽,一旦發現匯流排出現了碰撞,就立即停止發送。
乙太網的硬體地址 , MAC 地址實際上就是適配器地址或者適配器標識符。 48位長 , 乙太網最短幀長:64位元組。爭用期51.2微秒。
乙太網適配器有 過濾 功能:只接收 單播幀,廣播幀,多播幀 。
使用 集線器 可以在 物理層 擴展乙太網(半雙工),使用 網橋 可以在 數據鏈路層 擴展乙太網(半雙工),網橋轉發幀時, 不改變幀 的源地址。網橋 優點 :對幀進行轉發過濾,增大 吞吐量 。擴大網路物理范圍,提高 可靠 性,可 互連 不同物理層,不同MAC子層和不同速率的乙太網。 網橋 缺點 :增加時延,可能產生廣播風暴。
透明網橋 : 自學習 辦法處理接收到的幀。
四:網路層
TCP/IP 體系中的網路層向上只提供簡單靈活的、無連接,盡最大努力交付的數據報服務。網路層不提供服務質量的承諾,不保證分組交付的時限, 進程 之間的通信的 可靠性 由 運輸層 負責。
一個IP地址在整個網際網路范圍內是唯一的,分類的 IP地址 包括A類( 1~126 )、B類( 128~191 )、C類( 192~223 單播地址)、D類( 多播 地址)。
分類的IP地址由 網路號欄位 和 主機號欄位 組成。
物理地址(硬體地址)是數據鏈路層和物理層使用的地址,而 IP 地址是網路層和以上各層使用的地址,是一種 邏輯地址 ,數據鏈路層看不見數據報的IP地址。
IP首部中的 生存時間 段給出了IP數據報在網際網路中經過的 最大路由器數 ,可防止IP數據報在互聯網中無限制的 兜圈 子。
地址解析協議 ARP(Address Resolution Protocol) 把IP地址解析為 硬體地址 ,它解決 同一個區域網的主機或路由器的IP地址和硬體地址的映射問題 ,是一種解決地址問題的協議。以目標IP地址為線索,用來定位一個下一個應該接收數據分包的網路設備對應的MAC地址。如果目標主機不再同一鏈路上時,可以通過ARP查找下一跳路由器的MAC地址,不過ARP只適用於IPV4,不能用於IPV6,IPV6中可以用ICMPV6替代ARP發送鄰居搜索消息。
路由選擇協議有兩大類: 內部網關 協議(RIP和OSPE)和 外部網關 協議(BGP-4)。
網際控制報文協議 ICMP (Internet Control Message Protocol )控制報文協議。是IP層協議,ICMP報文作為IP數據報的數據,加上首部後組成IP數據報發送出去,使用ICMP並不是實現了可靠傳輸。ICMP允許主機或者路由器 報告差錯 情況和 提供有關異常 的情況報告。
ICMP是一個重要應用是分組網間探測 PING
與單播相比,在一對多的通信中,IP多播可大大節約網路資源, IP多播使用D類地址,IP多播需要使用 網際組管理協議IGMP 和多播路由選擇協議。
五: 運輸層
網路層為主機之間提供邏輯通信,運輸層為應用進程之間提供端到端的邏輯通信。
運輸層有兩個協議 TCP和UDP
運輸層用一個 16位 埠號來標志一個埠。
UDP特點 :無連接、盡最大努力交付、面向報文、無擁塞控制、支持一對一,多對一,一對多,多對多的交互通信。首部開銷小。
TCP特點: 面向連接,每一條TCP連接只能是點對點、提供可靠的交付服務,提供全雙工通信、面向位元組流。
TCP用主機的IP地址加上主機上的埠號作為TCP連接的端點,這樣的端點就叫 套接字 。
流量控制 是一個 端到端 的問題,是接收端抑制發送端發送數據的速率,以方便接收端來得及接收。 擁塞控制 是一個全局性過程,涉及到所有的主機,所有的路由器,以及與降低網路傳輸性能有關的所有因素。
TCP擁塞控制採用四種演算法: 慢開始、擁塞避免、快重傳、快恢復 。
傳輸有 三個連接 :連接建立、數據傳送、連接釋放。
TCP連接建立採用三次握手機制,連接釋放採用四次握手機制。
六:應用層
文件傳送協議FTP 使用 TCP 可靠傳輸服務。FTP使用客戶伺服器方式,一個FTP伺服器進程可同時為多個客戶進程提供服務。在進行文件傳輸時,FTP的客戶和伺服器之間要建立兩個並行的TCP連接,控制連接和數據連接,實際用於傳輸文件的是 數據連接 。
萬維網 WWW 是一個大規模,聯機式的信息儲藏所,可以方便從網際網路上一個站點鏈接到另一個站點。
萬維網使用 統一資源定位符URL 來標志萬維網上的各種文檔,並使每一個文檔在整個網際網路的范圍內具有唯一的標識符 URL 。
❽ 網路上用於管理計算機之間信息流的協議被稱為傳輸協議,都有哪幾種協議這些協些解決了哪幾個方面的問題
7層,由低到高為:
物理層:
物理層(physical layer)的主要功能是完成相鄰結點之間原始比特流傳輸。物理層協議關心的典型問題是使用什麼樣的物理信號來表示數據0和1。1位持續的時間多長。數據傳輸是否可同時在兩個方向上進行。最初的廉潔如何建立以及完成通信後連接如何終止。物理介面(插頭和插座)有多少針以及各針的作用。物理層的設計主要涉及物理層介面的機械、電氣、功能和過電特性,以及物理層介面連接的傳輸介質等問題。物理層的實際還涉及到通信工程領域內的一些問題。
數據鏈路層:
數據鏈路層(data link layer)的主要功能是如何在不可靠的物理線路上進行數據的可靠傳輸。數據鏈路層完成的是網路中相鄰結點之間可靠的數據通信。為了保證書覺得可靠傳輸,發送出的數據針,並按順序傳送個針。由於物理線路不可靠,因此發送方發出的數據針有可能在線路上出錯或丟失,從而導致接受方無法正確接收數據。為了保證能讓接收方對接收到的數據進行正確的判斷,發送方位每個數據塊計算出CRC(循環冗餘檢驗)並加入到針中,這樣接收方就可以通過重新計算CRC來判斷接收到的數據是否正確。一旦接收方發現接收到的數據有錯誤,則發送方必須重新傳送這一數據。然而,相同的數據多次傳送也可能是接收方收到重復的數據。
數據鏈路層要解決的另一個問題是防止高速發送方的數據把低速接收方「淹沒」。因此需要某種信息流量控制機制使發送方得知接收方當前還有多少緩存空間。為了控制的方便,流量控制常常和差錯處理一同實現。
在廣域網中,數據鏈路層負責主機IMP、IMP-IMP之間數據的可靠傳送。在區域網中,數據鏈路層負責制及之間數據的可靠傳輸。
網路層:
網路層(network layer)的主要功能是完成網路中主機間的報文傳輸,其關鍵問題之一是使用數據鏈路層的服務將每個報文從源端傳輸到目的端。在廣域網中,這包括產生從源端到目的端的路由,並要求這條路徑經過盡可能少的IMP。如果在子網中同時出現過多的報文,子網就可能形成擁塞,因為必須加以避免這種情況的出現。
當報文不得不跨越兩個或多個網路時,又會帶來很多新問題。比
在單個區域網中,網路層是冗餘的,因為報文是直接從一台計算機傳送到另一台計算機的,因此網路層所要做的工作很少。
傳輸層:
傳輸層(transport layer)的主要功能是實現網路中不同主機上的用戶進程之間可靠的數據通信。
傳輸層要決定會話層用戶(最終對網路用戶)提供什麼樣的服務。最好的傳輸連接是一條無差錯的、按順序傳送數據的管道,即傳輸層連接時真正的點到點。
由於絕大多數的主機都支持多用戶操作,因而機器上有多道程序就意味著將有多條連接進出於這些主機,因此需要以某種方式區別報文屬於哪條連接。識別這些連接的信息可以放入傳輸層的報文頭中除了將幾個報文流多路復用到一條通道上,傳輸層還必須管理跨網連接的建立和取消。這就需要某種命名機制,使機器內的進程能夠講明它希望交談的對象。另外,還需要有一種機制來調節信息流,使高速主機不會過快的向低速主機傳送數據。盡管主機之間的流量控制與IMP之間的流量控制不盡相同。
會話層:
會話層(SESSION LAYER)允許不同機器上的用戶之間建立會話關系。會話層循序進行類似的傳輸層的普通數據的傳送,在某某些場合還提供了一些有用的增強型服務。允許用戶利用一次會話在遠端的分時系統上登陸,或者在兩台機器間傳遞文件。
會話層提供的服務之一是管理對話控制。會話層允許信息同時雙向傳輸,或任一時刻只能單向傳輸。如果屬於後者,類似於物理信道上的半雙工模式,會話層將記錄此時該輪到哪一方。一種與對話控制有關的服務是令牌管理(token management)。有些協議會保證雙方不能同時進行同樣的操作,這一點很重要。為了管理這些活動,會話層提供了令牌,令牌可以在會話雙方之間移動,只有持有令牌的一方可以執行某種關鍵性操作。另一種會話層服務是同步。如果在平均每小時出現一次大故障的網路上,兩台機器簡要進行一次兩小時的文件傳輸,試想會出現什麼樣的情況呢?每一次傳輸中途失敗後,都不得不重新傳送這個文件。當網路再次出現大故障時,可能又會半途而廢。為解決這個問題,會話層提供了一種方法,即在數據中插入同步點。每次網路出現故障後,僅僅重傳最後一個同步點以後的數據(這個其實就是斷點下載的原理)。
表示層:
表示層(presentation layer)用於完成某些特定功能,對這些功能人們常常希望找到普遍的解決辦法,而不必由每個用戶自己來實現。表示層以下各層只關心從源端機到目標機到目標機可靠的傳送比特流,而表示層關心的是所傳送的信息的語法和語義。表示層服務的一個典型例子就是大家一致選定的標准方法對數據進行編碼。大多數用戶程序之間並非交換隨機比特,而是交換諸如人名、日期、貨幣數量和發票之類的信息。這些對象使用字元串、整型數、浮點數的形式,以及由幾種簡單類型組成的數據結構來表示的。
在網路上計算機可能採用不同的數據表示,所以需要在數據傳輸時進行數據格式轉換。為了讓採用不同數據表示法的計算機之間能夠相互通信而且交換數據,就要在通信過程中使用抽象的數據結構來表示所傳送的數據。而在機器內部仍然採用各自的標准編碼。管理這些抽象數據結構,並在發送方將機器的內部編碼轉換為適合網上傳輸的傳送語法以及在接收方做相反的轉換等噢年工作都是由表示層來完成的。
另外,表示層還涉及數據壓縮和解壓、數據加密和解米等工作(winrar的那一套)。
應用層:
連網的目的在於支持運行於不同計算機的進程彼此之間的通信,而這些進程則是為用戶完成不同人物而設計的。可能的應用是多方面的,不受網路結構的限制。應用層(app;ocation layer)包括大量人們普遍需要的協議。雖然,對於需要通信的不同應用來說,應用層的協議都是必須的。例如:http、ftp、TCP/IP。
由於每個應用有不同的要求,應用層的協議集在OSI模型中並沒有定義。但是,有些確定的應用層協議,包括虛擬終端、文件傳輸、電子郵件等都可以作為標准化的候選。
❾ 計算機網路第三章(數據鏈路層)
3.1、數據鏈路層概述
概述
鏈路 是從一個結點到相鄰結點的一段物理線路, 數據鏈路 則是在鏈路的基礎上增加了一些必要的硬體(如網路適配器)和軟體(如協議的實現)
網路中的主機、路由器等都必須實現數據鏈路層
區域網中的主機、交換機等都必須實現數據鏈路層
從層次上來看數據的流動
僅從數據鏈路層觀察幀的流動
主機H1 到主機H2 所經過的網路可以是多種不同類型的
注意:不同的鏈路層可能採用不同的數據鏈路層協議
數據鏈路層使用的信道
數據鏈路層屬於計算機網路的低層。 數據鏈路層使用的信道主要有以下兩種類型:
點對點信道
廣播信道
區域網屬於數據鏈路層
區域網雖然是個網路。但我們並不把區域網放在網路層中討論。這是因為在網路層要討論的是多個網路互連的問題,是討論分組怎麼從一個網路,通過路由器,轉發到另一個網路。
而在同一個區域網中,分組怎麼從一台主機傳送到另一台主機,但並不經過路由器轉發。從整個互聯網來看, 區域網仍屬於數據鏈路層 的范圍
三個重要問題
數據鏈路層傳送的協議數據單元是 幀
封裝成幀
封裝成幀 (framing) 就是在一段數據的前後分別添加首部和尾部,然後就構成了一個幀。
首部和尾部的一個重要作用就是進行 幀定界 。
差錯控制
在傳輸過程中可能會產生 比特差錯 :1 可能會變成 0, 而 0 也可能變成 1。
可靠傳輸
接收方主機收到有誤碼的幀後,是不會接受該幀的,會將它丟棄
如果數據鏈路層向其上層提供的是不可靠服務,那麼丟棄就丟棄了,不會再有更多措施
如果數據鏈路層向其上層提供的是可靠服務,那就還需要其他措施,來確保接收方主機還可以重新收到被丟棄的這個幀的正確副本
以上三個問題都是使用 點對點信道的數據鏈路層 來舉例的
如果使用廣播信道的數據鏈路層除了包含上面三個問題外,還有一些問題要解決
如圖所示,主機A,B,C,D,E通過一根匯流排進行互連,主機A要給主機C發送數據,代表幀的信號會通過匯流排傳輸到匯流排上的其他各主機,那麼主機B,D,E如何知道所收到的幀不是發送給她們的,主機C如何知道發送的幀是發送給自己的
可以用編址(地址)的來解決
將幀的目的地址添加在幀中一起傳輸
還有數據碰撞問題
隨著技術的發展,交換技術的成熟,
在 有線(區域網)領域 使用 點對點鏈路 和 鏈路層交換機 的 交換式區域網 取代了 共享式區域網
在無線區域網中仍然使用的是共享信道技術
3.2、封裝成幀
介紹
封裝成幀是指數據鏈路層給上層交付的協議數據單元添加幀頭和幀尾使之成為幀
幀頭和幀尾中包含有重要的控制信息
發送方的數據鏈路層將上層交付下來的協議數據單元封裝成幀後,還要通過物理層,將構成幀的各比特,轉換成電信號交給傳輸媒體,那麼接收方的數據鏈路層如何從物理層交付的比特流中提取出一個個的幀?
答:需要幀頭和幀尾來做 幀定界
但比不是每一種數據鏈路層協議的幀都包含有幀定界標志,例如下面例子
前導碼
前同步碼:作用是使接收方的時鍾同步
幀開始定界符:表明其後面緊跟著的就是MAC幀
另外乙太網還規定了幀間間隔為96比特時間,因此,MAC幀不需要幀結束定界符
透明傳輸
透明
指某一個實際存在的事物看起來卻好像不存在一樣。
透明傳輸是指 數據鏈路層對上層交付的傳輸數據沒有任何限制 ,好像數據鏈路層不存在一樣
幀界定標志也就是個特定數據值,如果在上層交付的協議數據單元中, 恰好也包含這個特定數值,接收方就不能正確接收
所以數據鏈路層應該對上層交付的數據有限制,其內容不能包含幀定界符的值
解決透明傳輸問題
解決方法 :面向位元組的物理鏈路使用 位元組填充 (byte stuffing) 或 字元填充 (character stuffing),面向比特的物理鏈路使用比特填充的方法實現透明傳輸
發送端的數據鏈路層在數據中出現控制字元「SOH」或「EOT」的前面 插入一個轉義字元「ESC」 (其十六進制編碼是1B)。
接收端的數據鏈路層在將數據送往網路層之前刪除插入的轉義字元。
如果轉義字元也出現在數據當中,那麼應在轉義字元前面插入一個轉義字元 ESC。當接收端收到連續的兩個轉義字元時,就刪除其中前面的一個。
幀的數據部分長度
總結
3.3、差錯檢測
介紹
奇偶校驗
循環冗餘校驗CRC(Cyclic Rendancy Check)
例題
總結
循環冗餘校驗 CRC 是一種檢錯方法,而幀校驗序列 FCS 是添加在數據後面的冗餘碼
3.4、可靠傳輸
基本概念
下面是比特差錯
其他傳輸差錯
分組丟失
路由器輸入隊列快滿了,主動丟棄收到的分組
分組失序
數據並未按照發送順序依次到達接收端
分組重復
由於某些原因,有些分組在網路中滯留了,沒有及時到達接收端,這可能會造成發送端對該分組的重發,重發的分組到達接收端,但一段時間後,滯留在網路的分組也到達了接收端,這就造成 分組重復 的傳輸差錯
三種可靠協議
停止-等待協議SW
回退N幀協議GBN
選擇重傳協議SR
這三種可靠傳輸實現機制的基本原理並不僅限於數據鏈路層,可以應用到計算機網路體系結構的各層協議中
停止-等待協議
停止-等待協議可能遇到的四個問題
確認與否認
超時重傳
確認丟失
既然數據分組需要編號,確認分組是否需要編號?
要。如下圖所示
確認遲到
注意,圖中最下面那個數據分組與之前序號為0的那個數據分組不是同一個數據分組
注意事項
停止-等待協議的信道利用率
假設收發雙方之間是一條直通的信道
TD :是發送方發送數據分組所耗費的發送時延
RTT :是收發雙方之間的往返時間
TA :是接收方發送確認分組所耗費的發送時延
TA一般都遠小於TD,可以忽略,當RTT遠大於TD時,信道利用率會非常低
像停止-等待協議這樣通過確認和重傳機制實現的可靠傳輸協議,常稱為自動請求重傳協議ARQ( A utomatic R epeat re Q uest),意思是重傳的請求是自動進行,因為不需要接收方顯式地請求,發送方重傳某個發送的分組
回退N幀協議GBN
為什麼用回退N幀協議
在相同的時間內,使用停止-等待協議的發送方只能發送一個數據分組,而採用流水線傳輸的發送方,可以發送多個數據分組
回退N幀協議在流水線傳輸的基礎上,利用發送窗口來限制發送方可連續發送數據分組的個數
無差錯情況流程
發送方將序號落在發送窗口內的0~4號數據分組,依次連續發送出去
他們經過互聯網傳輸正確到達接收方,就是沒有亂序和誤碼,接收方按序接收它們,每接收一個,接收窗口就向前滑動一個位置,並給發送方發送針對所接收分組的確認分組,在通過互聯網的傳輸正確到達了發送方
發送方每接收一個、發送窗口就向前滑動一個位置,這樣就有新的序號落入發送窗口,發送方可以將收到確認的數據分組從緩存中刪除了,而接收方可以擇機將已接收的數據分組交付上層處理
累計確認
累計確認
優點:
即使確認分組丟失,發送方也可能不必重傳
減小接收方的開銷
減小對網路資源的佔用
缺點:
不能向發送方及時反映出接收方已經正確接收的數據分組信息
有差錯情況
例如
在傳輸數據分組時,5號數據分組出現誤碼,接收方通過數據分組中的檢錯碼發現了錯誤
於是丟棄該分組,而後續到達的這剩下四個分組與接收窗口的序號不匹配
接收同樣也不能接收它們,講它們丟棄,並對之前按序接收的最後一個數據分組進行確認,發送ACK4, 每丟棄一個數據分組,就發送一個ACK4
當收到重復的ACK4時,就知道之前所發送的數據分組出現了差錯,於是可以不等超時計時器超時就立刻開始重傳,具體收到幾個重復確認就立刻重傳,根據具體實現決定
如果收到這4個重復的確認並不會觸發發送立刻重傳,一段時間後。超時計時器超時,也會將發送窗口內以發送過的這些數據分組全部重傳
若WT超過取值范圍,例如WT=8,會出現什麼情況?
習題
總結
回退N幀協議在流水線傳輸的基礎上利用發送窗口來限制發送方連續發送數據分組的數量,是一種連續ARQ協議
在協議的工作過程中發送窗口和接收窗口不斷向前滑動,因此這類協議又稱為滑動窗口協議
由於回退N幀協議的特性,當通信線路質量不好時,其信道利用率並不比停止-等待協議高
選擇重傳協議SR
具體流程請看視頻
習題
總結
3.5、點對點協議PPP
點對點協議PPP(Point-to-Point Protocol)是目前使用最廣泛的點對點數據鏈路層協議
PPP協議是網際網路工程任務組IEIF在1992年制定的。經過1993年和1994年的修訂,現在的PPP協議已成為網際網路的正式標准[RFC1661,RFC1662]
數據鏈路層使用的一種協議,它的特點是:簡單;只檢測差錯,而不是糾正差錯;不使用序號,也不進行流量控制;可同時支持多種網路層協議
PPPoE 是為寬頻上網的主機使用的鏈路層協議
幀格式
必須規定特殊的字元作為幀定界符
透明傳輸
必須保證數據傳輸的透明性
實現透明傳輸的方法
面向位元組的非同步鏈路:位元組填充法(插入「轉義字元」)
面向比特的同步鏈路:比特填充法(插入「比特0」)
差錯檢測
能夠對接收端收到的幀進行檢測,並立即丟棄有差錯的幀。
工作狀態
當用戶撥號接入 ISP 時,路由器的數據機對撥號做出確認,並建立一條物理連接。
PC 機向路由器發送一系列的 LCP 分組(封裝成多個 PPP 幀)。
這些分組及其響應選擇一些 PPP 參數,並進行網路層配置,NCP 給新接入的 PC 機
分配一個臨時的 IP 地址,使 PC 機成為網際網路上的一個主機。
通信完畢時,NCP 釋放網路層連接,收回原來分配出去的 IP 地址。接著,LCP 釋放數據鏈路層連接。最後釋放的是物理層的連接。
可見,PPP 協議已不是純粹的數據鏈路層的協議,它還包含了物理層和網路層的內容。
3.6、媒體接入控制(介質訪問控制)——廣播信道
媒體接入控制(介質訪問控制)使用一對多的廣播通信方式
Medium Access Control 翻譯成媒體接入控制,有些翻譯成介質訪問控制
區域網的數據鏈路層
區域網最主要的 特點 是:
網路為一個單位所擁有;
地理范圍和站點數目均有限。
區域網具有如下 主要優點 :
具有廣播功能,從一個站點可很方便地訪問全網。區域網上的主機可共享連接在區域網上的各種硬體和軟體資源。
便於系統的擴展和逐漸地演變,各設備的位置可靈活調整和改變。
提高了系統的可靠性、可用性和殘存性。
數據鏈路層的兩個子層
為了使數據鏈路層能更好地適應多種區域網標准,IEEE 802 委員會就將區域網的數據鏈路層拆成 兩個子層 :
邏輯鏈路控制 LLC (Logical Link Control)子層;
媒體接入控制 MAC (Medium Access Control)子層。
與接入到傳輸媒體有關的內容都放在 MAC子層,而 LLC 子層則與傳輸媒體無關。 不管採用何種協議的區域網,對 LLC 子層來說都是透明的。
基本概念
為什麼要媒體接入控制(介質訪問控制)?
共享信道帶來的問題
若多個設備在共享信道上同時發送數據,則會造成彼此干擾,導致發送失敗。
隨著技術的發展,交換技術的成熟和成本的降低,具有更高性能的使用點對點鏈路和鏈路層交換機的交換式區域網在有線領域已完全取代了共享式區域網,但由於無線信道的廣播天性,無線區域網仍然使用的是共享媒體技術
靜態劃分信道
信道復用
頻分復用FDM (Frequency Division Multiplexing)
將整個帶寬分為多份,用戶在分配到一定的頻帶後,在通信過程中自始至終都佔用這個頻帶。
頻分復用 的所有用戶在同樣的時間 佔用不同的帶寬資源 (請注意,這里的「帶寬」是頻率帶寬而不是數據的發送速率)。
❿ 計算機網路TCP/IP等相關協議與原理
網路分層(由下到上):物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層。
重點在: 物理層、數據鏈路層(這兩層需要了解基本的原理)、網路層、傳輸層(這兩層需要了解功能作用,原理和相關的一些協議)、應用層(http協議)。
開始之前先跟大家說一下協議,很多人不知道協議是什麼,尤其是剛接觸這方面東西的時候,一聽協議,感覺很吊的樣子,但是又不知其所雲,其實,協議可以理解為:一個雙方通信需要共同遵守的規范。
記住,在網路分層協議中,所有下層的協議的作用就是為了上層服務,謹記!
接下來,我跟大家一一道來,首先登場的是物理層。
這一層主要就是跟硬體打交道,這一層也是所有上層的基礎。
數據鏈路層強調的是一種傳輸規范,這是指什麼呢?說白了,就是指每次傳輸的最大容量(最大傳輸單元),數據組織結構(乙太網幀的概念)、傳輸的目的地等。
MAC地址:燒錄在網卡ROM中的一串數字,長度48bit。
分組交換:較大數組分割為較小數組,依次發送。
原因是數據鏈路層有不定長度的最大傳輸單元。
乙太網的幀的概念:前導碼(8位元組)+本體(首部+數據+FCS)
原理:依靠MAC地址決定向哪個端發送數據,需要「轉發表」。
轉發表是交換機自動學習得到的。
作用:保證不同數據鏈路層下數據的可達性。
ARP協議(獲取MAC地址)和ICMP協議(數據發送異常通知)
作用:識別對端信息的地址。地址為32位正整數表示,分為四個部分,每個部分由8位整數組成。說白了,是識別要傳輸目的地的地址。
每位對應十進制范圍:0-255。
[注]:網路標識和主機標識是為了定址而發明。
A類:
第一位為「0」的地址,前8位為網路標識,0.0.0.0-127.0.0.0是A類IP地址的理論范圍。
B類:
前兩位為「10」的地址,前16位是網路標識,128.0.0.0-191.255.0.0,主機標識16位。
C類:
前三位為「110」的地址。前24位網路標識,192.0.0.0-223.255.255.0,主機標識為8位。
D類:
前4位為「1110」的地址。網路標識為32位,沒有主機標識。
IP地址長度僅可表達43億左右的主機數目,(區分網路標識和主機標識)共32位(一段連續的0和一段連續的1)組成,1的長度就表示網路標識的長度。
子網掩碼的作用是區分IP地址是否在同一子網內。
分組數據發送到目標地址的功能,持有路由控製表,它在路由控製表中查找目標IP地址對應的下一個路由器地址。
源主機--->網卡--->路由器1(路由器控製表)--->路由器2--->網卡--->目標主機
IP協議最大包為2的16次冪,等於65536.
接下來介紹幾個IP協議相關的協議或技術:
將域名轉化為IP地址(域名也是分層處理請求的,每一層都有對應的DNS伺服器)。
通過目標IP地址,定位下一個接收數據包的網路設備(主機或路由器)的MAC地址。
在數據鏈路層發送廣播,如果沒有ARP技術,就沒有辦法穿透中間的伺服器(ARP請求+ARP應答)。
NAT:用於將區域網中的私有地址轉換為全局IP地址的技術。
每個路由器只有一個對外的全局IP地址,如果一個內網主機都向外通訊,怎麼辦?
就要使用到NATP技術,可轉為TCP和UDP埠號。
不同的內網IP被轉換成同一個公共的IP,但是NAPT技術可以使用不同的埠加以區分。
NAT和NAPT都需要路由器內部維護一張轉換表。
舉例:TCP首次SYN時,會生成這個表,關閉連接時會發出FIN包,收到這個包應答時轉換表會被刪除。
定義:實現應用程序之間的通信。
TCP:面向有連接的協議,建立連接需要3步,關閉連接需要4步。
具備數據重傳、流量控制等功能,能正確處理丟包功能並有效利用寬頻。
UDP:比較適合做實時視頻和音頻,效率比TCP高。
TCP有5個要素:源IP地址、目標IP地址、源埠號、目標埠號、協議號,同一台機器的埠號可以區分為不同的應用程序。
校驗和=源IP地址(IP協議首部)+目標IP地址(IP協議首部)+源埠+目標埠
包長度=首部長度+數據長度
應該可以從下圖看出來,TCP的首部比UDP的首部要復雜的多,所以也一定會影響的傳輸的速度和效率。
簡單介紹一下首部的相關參數:
序列號:發送數據的位置
確認應答號:下一次應用接收到的數據的序列號
數據偏移:TCP首部的長度,單位為4位元組。
控制位:長度為8位。
窗口大小:用於表示從應答號開始能夠接受多少個8位位元組。
緊急指針:盡在URG控制位為1時有效,表示緊急數據的末尾在TCP數據部分中的位置。
接下來最重要的一個技術點來了:
以下是通俗話解釋連接和斷開過程:
建立連接的過程:
1.client:我要建立連接。
2.server:我知道你要建立連接了,我這邊沒問題。
3.client:我了解你知道我要建立連接了,開始通信吧!
結束連接的過程:
1.client:我要關閉連接了
2.server:你那邊可以關閉了
3.server:我這邊也准備關閉了
4.client:我已關閉,你可以關閉了
[注]:連接是雙方面的,所以關閉也是要自行關閉的。
數據包重發:保證ACK的值和發送方下次發送數據包的序列號相等。
接收方通過TCP首部中的控制位SYN判斷這個數據是否曾經接收過?接收過就會舍棄。
重傳超時時間(RTO)動態改變,略大於連接往返時間(RTT),RTO有自己的估算公式
定義:無需等待ACK,可以發送的最大數量。(窗口大小由接收端控制)
作用:為了解決發送數據包後,直至ACK確認返回之前,發送端都無法在進行發送的問題。
定義:接收端有緩存區數據溢出(如果窗口較大)
通俗一點的意思就是讓發送方慢一點,免得接收方接收不過來。
TCP會慢啟動演算法得出窗口的大小,對發送數據量進行控制。
發送方擁有一個擁塞窗口,對發送的數據量進行控制。
TCP協議中的窗口是指:發送方和接收方窗口中的最小值。
1.通訊開始,發送方窗口為1。每收到一個ACK確認後,擁塞窗口翻倍。
2.由於指數級增長快,很快就會出現確認包超時。
3.設置慢啟動閾值,它的值為擁塞窗口的大小的一半。
4.將擁塞窗口大小設置為1,重新進入慢啟動過程。
5.慢啟動閾值存在,當擁塞窗口大小達到閾值時,不再翻倍,而是線性增長。
6.隨窗口大小的不斷增長,可以收到三次重復的ACK,進入「快速重發」階段。
7.TCp將慢啟動閾值設置為當前擁塞窗大小的一半,再將擁塞窗口大小設成閾值大小。
8.擁塞窗口又會線性增加,直至下一次出現3次ACK或者超時。