1:進程通信
1:運輸層提供進程到進程的通信,進程通過Ip+端口號標識自己,端口號16位,取值0~65535之間
2:0~1023爲熟知端口號,1024~49151爲註冊端口號,49152~65535爲動態端口號
3:源點運輸層執行複用,將不同進程數據放入運輸層,終點運輸層執行分用,將運輸層數據交付到不同進程
4:數據的推送和拉取:
(1):推送是生產者數據一生產就發送出去,不需要消費者請求,推送需要反向流量控制,讓消費者告訴生產者放慢發送速度
(2):拉取是消費者主動請求生產者發送數據,拉取不需要流量控制
2:流量控制
1:發送方應用層產生數據,報文被推送至運輸層,這裏需要運輸層進行反向流量控制,發送方運輸層分組被推送到接收方運輸層,這裏接收方運輸層同樣要進行流量控制,最後,接收方應用層從接收方運輸層拉取數據
2:在發送方運輸層和接收方運輸層都設置一個緩存,當發送方緩存滿時,通知應用層停止發送數據,當接收方運輸層緩存滿時,通知發送方運輸層停止發送數據
3:差錯控制
1:同流量控制一樣,接收方反向進行差錯控制
2:採用給分組加序號方式實現差錯控制,接收方通過確認號(ACK)通知發送方正確收到了一個分組,發送方通過使用計時器設置發送分組後的倒計時,如果超時還沒有收到ACK則重發分組
4:流量控制和差錯控制的組合
流量控制需要設置緩存,差錯控制需要設置序號和確認號,一種巧妙的實現方法是將緩存分成小格子並編號,編號便成爲序號和確認號的基礎,滑動窗口便由此實現,書上的圖很詳細
5:擁塞控制
1:擁塞的原因是路由器和交換機上的隊列溢出
2:擁塞控制分爲擁塞發生之前的預防措施:開環擁塞控制,擁塞發生後的消除措施:閉環擁塞控制
3:開環擁塞控制:可由源點也可有終點來處理
(1):重傳策略:重傳是不可避免的,一般來講重傳會加重擁塞,但好的重傳策略能夠預防擁塞
(2):窗口策略:
(3):確認策略:
4:閉環擁塞控制:運輸層發送窗口會在產生擁塞時減小,在擁塞消除時變大,這種動態調節有利於消除擁塞
6:無連接和麪向連接的服務
1:網絡層的無連接和麪向連接
網絡層的無連接是指多個數據報經過不同的路由到達目的主機,面向連接指先建立一條確定的鏈路,然後傳輸數據
2:傳輸層的無連接和麪向連接
1:傳輸層是端到端,它不關心網絡層是無連接還是面向連接
2:傳輸層無連接時沒有流量控制,差錯控制,擁塞控制,有連接時有這些控制
3:傳輸層無連接數據可能會失序,錯誤,丟失
7:基本概念:帶寬,時延,時延帶寬積
1:帶寬
1: 帶寬是數據率不規範的叫法
2:帶寬的單位是b/s,kb/s,Mb/s,Gb/s,Tb/s;相同的寫法是bps,mps;b是二進制的意思,計算機數據的B是8個二進制位,和這裏不同,並且進位是1000而不是1024
3:帶寬表示每秒發送多少個二進制位,如果只發送一個二進制位,1b/s和1m/s帶寬此位會同時到達目的主機,帶寬是表示數字信號在時間軸上的寬度,帶寬越大,寬度越窄,能容納的數據也就越多
4;帶寬也就是吞吐量
2:時延
1:時延包括髮送時延,傳播時延,處理時延,其中傳播時延基本相同
2:發送時延=數據塊長度(二進制位)/帶寬
3:提高帶寬只是提高了發送時延,很難提高傳播時延(也就是光速)
3:時延帶寬積
1:時延帶寬積=傳播時延*帶寬
2:時延帶寬積表示整條管道能容納多少數據,可用於計算管道利用率
8:停止等待協議
1:此協議面向連接,能提供流量控制和差錯控制,差錯控制要求發送方在沒有收到ACK時應該保存發送出去的副本
2:此協議使用大小爲1的滑動窗口
3:發送方使用序號表示當前發送出去的分組,接收方用確認號表示想要收到的下一個分組,對於停止等待協議,由於滑動窗口大小爲1,則序號和確認號爲1,0,1,0,1,0...
4:對於發送方:發送方發送一個分組,加上檢驗和和序號A,並啓動一個計時器:
(1):收到確認ACK,檢驗和錯誤,丟棄
(2):收到ACK,確認號!=A+1,丟棄
(3):收到ACK,確認號==A+1,發送序號爲A+1的分組
(4);超時,重發序號A的分組
5:對於接收方:
(1):收到分組校驗和錯誤,丟棄
(2):序號不是自己想要的分組,分組丟棄,發送ACK=A
(2):收到A,發送確認號爲A+1的ACK
6:停止等待協議管道利用率很低
7:以下兩種採用流水線方式進行傳輸,效率更高,流水線方式就是前一個任務還沒完成就開始下一個任務
9:返回N協議
1:該協議序號必須是2的m次方,發送窗口大小2的m次方-1,接收窗口1
2:發送方發送窗口大小個分組並等待確認,並設置一個計時器,也就是第一個發送出去的分組的計時,因爲它會最先超時,如果超時,發送方重發所有未被確認的分組,每收到一個確認,滑動窗口會滑動到確認處
3:此協議ACK的確認號是累計的,表示確認號之前的分組已經完全收到
5:此協議的特點是如果超時,發送方之前發送的所有分組都會重傳,這也是"返回N"的由來
6:此協議詳情參見書上,對於發送窗口的大小設置有詳細的解釋
10:選擇重傳協議
1:發送窗口和接受窗口一樣大,最大2的(m-1)次方
2:確認號A只表示接收方正確收到序號爲A的分組
3:發送方只使用一個計時器,當計時器超時,重傳所有未收到確認號的分組
4:具體流程圖參見書上,由於此協議是實際TCP實現,下面簡單介紹下,一些我已經知道的就不說明了
5:發送方:
(1):應用層給運輸層傳遞來的數據,如果滑動窗口還有空位,則放到滑動窗口中,發送此數據,如果計時器沒計時,則啓動計時器
(2):收到正確的ACK,則標記,並檢查窗口是否能向前滑動,如果還有等待ACK的分組,則重置計時器,沒有則關閉計時器
(3):計時器超時,重發所有等待ACK的分組,重置計時器
6:接收方:
(1):收到一個在滑動窗口的分組,發送ACK,並檢查窗口能否滑動,如果能滑動則提交數據給應用層(這裏我的理解和書上有點出入,我認爲應該是應用層主動拉取數據,導致滑動窗口滑動),
(2):收到一個在滑動窗口之前的分組,發送此分組的ACK,這種特殊做法的目的是幫助發送方滑動它的窗口
11:雙向協議:捎帶
前面討論的情況都是單向的,但實際情況是雙向通信,這就能夠使用捎帶,A向B發送數據的同時捎帶A想發送給B的確認號