回顧:只有 主機 才有傳輸層,網絡核心中的路由器、交換機、集線器等只用到 下三層 的功能
記:分復流擁尋差錯-可靠
壹臺計算機中,不同應用進程用 進程標識符(進程ID) 來區分
網絡環境下:
TCP/IP 體系結構網絡的解決方法:
在傳輸層使用協議端口號,通常簡稱為端口(port), 在全網範圍內利用 IP地址+端口號 唯壹標識壹個通信端點
傳輸層端口號為16位整數,可以編號65536個(2的16次方)
常用端口: 端口號小於256的端口
傳輸層端口號:
1、服務器端使用的端口號:熟知端口號和登記端口號
2、客戶端使用的端口號臨時性,在客戶進程運行時由操作系統隨機選取唯壹的未被使用的端口號:
多路復用 :在源主機,傳輸層協議從不同的套接字收集應用進程發送的數據塊,並為每個數據塊封裝上首部信息(包括用於分解的信息)構成報文段,然後將報文段傳遞給網絡層
多路分解 : 在目的主機,傳輸層協議讀取報文段中的字段,標識出接收套接字,進而通過該套接字,將傳輸層報文段中的數據交付給正確的套接字
多路復用與多路分解(復用與分解/復用與分用): 支持眾多 應用進程***用 同壹個傳輸層協議,並能夠將接收到的數據準確交付給 不同的應用進程
用戶數據報協議(User Datagram Protocol, UDP):Internet提供無連接服務的傳輸層協議
UDP套接字二元組:<目的IP地址,目的端口號>
傳輸控制協議(Transmission Control Protocol, TCP): Internet提供面向連接服務的傳輸層協議
TCP套接字四元組: <源IP地址,源端口號,目的IP地址,目的端口號>
基於不可靠信道實現可靠數據傳輸采取的措施
差錯檢測:利用編碼實現數據報傳輸過程中的比特差錯檢測
確認: 接收方向發送方反饋接收狀態。 ACK(肯定確認) ;NAK(否定確認)
重傳:發送發 重新 發送接收方沒有正確接收的數據
序號:確保數據按序提交(對數據進行編號,即便不按序到達,可以按序提交)
計時器: 解決 數據丟失問題
TCP提供可靠數據傳輸服務
UDP不提供可靠數據傳輸服務
最簡單的自動重傳請求協議是停等協議
流水線協議:管道協議,允許發送方在沒有收到確認前連續發送 多個 分組
最典型的流水線協議: 滑動窗口協議
1、 增加分組序號
2、發送方和接收方可以緩存多個分組
發送方的發送窗口:發送方可以發送未被確認分組的最大數量
接收方的接收窗口: 接收方可以緩存到正確到達的分組的最大數量
發送:
接收:
滑動窗口協議:根據窗口的大小,可以具體分為:
回退N步協議:GBN協議(Go-Back-N)
選擇重傳協議:SR協議(Selective Repeat)
GBN協議: 發送窗口>=1; 接收窗口=1 ;
發送端 緩存能力高,可以在沒有得到確認前發送多個分組
接收端 緩存能力很低,只能接收壹個按序到達的分組,不能緩存未按序到達的分組
GBN發送方響應的3類事件:
SR協議: 發送窗口>1 接收窗口>1
發送端緩存能力高
接收端緩存能力高
SR發送方響應事件:
用戶數據協議(User Datagram Protocal, UDP): Internet 傳輸層 協議,提供 無連接 、不可靠、數據報盡力傳輸服務
0-15-31: 32位二進制
UDP首部四個字段: 每個字段長度都是2字節,***8個字節
源端口號和目的端口號:UDP實現復用和分解
長度:指示UDP報文段中的字節數(首部和數據的總和)
校驗和:接收方使用檢測數據報是否出現差錯
應用數據字段:應用層數據占用
UDP校驗和:提供差錯檢測功能
UDP的校驗和用於檢測UDP報文段從源到目的地傳送過程中,其中的數據是否發生了改變
UDP校驗和計算規則
1、所有參與運算的內容按16位對齊求和
UDP校驗和計算的內容包括3部分:UDP偽首部、應用數據
傳輸控制協議(Transmission Control Protocol ,TCP): Internet 傳輸層協議
提供面向連接、可靠、有序、字節流傳輸服務
第壹:應用進程 先建立連接
第二:每壹條TCP連接只有 兩個 端點
第三: 可靠交付 :無差錯、不丟失、不重復、按序到達
第四: 全雙工 通信
第五:面向 字節流
流:字節序列,應用程序和TCP的交互是壹個個數據塊,TCP把他們看做是無結構字節流
1、源端口號字段、目的端口號字段:占16位、復用和分解上層應用的數據
2、序號字段、確認序號字段:占32位
序號字段:TCP序號是對每個應用層數據的每個字節進行編號
確認序號字段:期望從對方接受數據的字節序號,即該序號對應的字節尚未收到
9.選項字段長度可變,最短為0字節,最長為40字節
TCP連接管理:連接建立與連接拆除
以客戶端上的壹個應用進程與服務器上的壹個應用進程建立壹條TCP連接為例
壹、建立連接
第壹次握手:
客戶向服務器發送連接請求段:(SYN=1, seq=x)
SYN = 1; 建立連接請求控制段
seq=x; 表示傳輸的報文段第1個數據字節的序列號是x,此序列號代表整個報文段的序號
客戶端進入SYN_SEND (同步發送)
第二次握手:
服務端發回確認報文段:(SYN=1, ACK=1,seq=y,ack_seq=x+1)
SYN=1 同意建立新連接的確認段
ack_seq = x + 1; 表示已經收到序列號為x的報文段,準備接受序列號為x+1的報文段
seq=y : 服務器告訴客戶確認報文段的序列號是y
服務器由LISTEN進入SYN_RCVD(同步收到)
第三次握手
客戶端對服務器的同意連接報文段進行確認:(ACK=1,seq=x+1, ack_seq=y+1)
seq=x+1 : 客戶端此次的報文段的序列號是x+1;
ack_seq = y+1 : 客戶端期望接收服務器序列號y+1的報文段
當客戶端發送ACK時,客戶端進入ESTABLISHED狀態
當服務端收到ACK後,也進入ESTABLISHED狀態
第三次 握手可攜帶數據
二、連接拆除:四次揮手
第壹次揮手
客戶端向服務器發送釋放連接報文段:(FIN=1, seq=u)
FIN=1.發送端數據發送完畢,請求釋放連接
seq=u 傳輸的第壹個數據字節的序號是u
客戶端狀態由ESTABLISHED進入FIN_WAIT_1(終止等待1狀態)
第二次揮手
服務器向客戶發送確認段:(ACK=1, seq=v, ack_seq=u+1)
ACK=1; 確認字號段有效
ack_seq=u+1 : 服務器期望接受客戶數據序號為u+1
seq=v: 服務器傳輸的數據序號是v
服務器狀態由ESTABLISHED進入CLOSE_WAIT(關閉等待)
客戶端收到ACK段後,由FIN_WAIT_!進入FIN_WAIT_2
第三次揮手
服務器向客戶發送釋放連接報文段:(FIN=1, ACK=1, seq=v+1, ack_seq=u+1)
FIN =1: 請求釋放連接
ACK = 1:確認字號段有效
ack_seq=u+1: 表示服務器期望接受客戶數據序列號為1
seq=v+1 表示自己傳輸的第壹個數據字節的序號是v+1
服務器狀態由CLOSE_WAIT進入LAST_ACK(最後確認狀態)
第四次揮手:
客戶向服務器發送確認段:(ACK=1,seq=u+1,ack_seq=w+1)
ACK=1: 確認字號段有效
ack_seq=v+1+1 : 表示客戶期望接受服務器數據序號為v+1+1
seq=u+1 表示客戶傳輸的數據的序號是u+1
客戶端狀態由FIN_WAIT_2進入TIME_WAIT 等待2MSL時間,進入CLOSED狀態
服務器再收到最後壹次ACK後,由LAST_ACK進入CLOSED
壹、可靠:保證接收方應用進程從緩沖區讀出的字節流與發送發發出的字節流是完全壹樣的
二、TCP實現可靠數據傳輸服務的工作機制
1、應用層數據被 分割 成TCP認為最適合發送的數據塊
2、序號,發送方對發送的數據包進行編號,確保數據按序提交給接收方 采用累積確認
3、確認,接收方向發送方反饋接收狀態,確認是否正確接收數據
4、差錯檢測,利用差錯編碼實現數據包傳輸過程中的比特差錯檢測(甚至糾正)
5、重傳,發送方重新發送接收方沒有正確接收的數據
6、計時器,在發送方引入計時器,解決數據丟失問題
最大報文段長度:1500字節
報文段中封裝的應用層數據的最大長度:1480字節 = 1500 - 最短的首部長度
TCP生成ACK的策略
流量控制:協調發送方與接收方的數據發送與接收 速度
在通信過程中,接收方設置報文段的 接收窗口字段 來將窗口大小通知給發送方
壹、網絡擁塞: 太多的主機``以太快的速度 向網絡中發送 太多的數據 ,超出了網絡處理能力,導致大量數據分組擁擠在中間設備隊列中等待轉發, 網絡性能 顯著下降的現象
二、擁塞控制:通過合理調度、規範、調整向網絡中發送數據的主機數量、發送速率、數據量、以 避免 擁塞或 消除 已發生的擁塞
三、概念補充介紹
四、TCP擁塞控制算法
閾值之前:慢啟動階段
閾值之後:擁塞避免階段
l例如: 發生計時器超時,當前擁塞窗口24MSS,當前閾值為16MSS
新的閾值:為當前擁塞窗口的壹半,新的閾值=24/2=12MSS
新的擁塞窗口:直接調整為1MSS 新的擁塞窗口=1MSS
調整好新的閾值和新的擁塞窗口之後,使用 慢啟動。擁塞避免 算法增加擁塞窗口大小
例如:發送3次重復確認時,當前擁塞窗口為24MSS,當前閾值為16MSS
新的閾值:為當前擁塞窗口的壹半
新的擁塞窗口:調整為新的閾值
調整好新的閾值和新的擁塞窗口後,使用 擁塞避免 算法增加擁塞窗口大小
五、窗口調整的基本策略(Additive Increase,Multiplicative Decrease, AIMD):
網絡未發生擁塞時:逐漸"加性"增大窗口
網絡擁塞時“乘性”減小窗口
六、擁塞預防策略:流量整型技術:規範主機向網絡發送數據的流量