傳輸層協議有哪些
TCP / UDP
TCP/UDP 比較&使用場景
TCP UDP 都是傳輸層協議,都基於IP協議。
協議 | 是否需要建立會話 | 可靠傳輸 | 分段傳輸 | 流量控制 | 例子 |
TCP | 建立會話 | 可靠傳輸 | 需要將要傳輸的文件分段傳輸 | 流量控制 | QQ傳文件,訪問WEB,訪問FTP |
UDP | 不需要建立會話 | 不可靠傳輸 |
不分段 (一個包就能完成通信) |
不需要流量控制 | 發QQ信息(也是UDP包反饋收到,否則消息發送失敗),DNS解析,多播組播(收直播) |
TCP傳的是段
UDP傳的是報文
小擴展:QQ視頻通話,是TCP還是UDP
如果TCP,可靠性要求很高,如果丟包,會要求重傳,則收視頻的方面會"一秒也不錯過",但會卡頓。
如果UDP,可靠性要求不高,如果丟包,不要求重傳,收視頻的方面,雖然丟失某幾秒的內容,但是實時交流。
傳輸層協議 和 應用層協議 之間的關係:
傳輸層:TCP協議 UDP協議
應用層:http https ftp smtp等協議
傳輸層:通過不同的端口號,來區分不同的應用層協議
http = TCP + 80端口
https = TCP + 443端口
FTP = TCP +21
SMTP = TCP +25
應用層協議和傳輸層協議之間的關係
- 服務使用TCP或UDP的端口偵聽客戶端請求
- 客戶端使用IP地址定位服務器 ; 使用目標端口,定位服務
- 可以在服務器網卡上設置只開放必要的端口,實現服務器網絡安全(不讓遠程連接,就不開3389)(只開80端口,別的都關)
網絡層 與 傳輸層 的不同
網絡層:主機與主機的通信
傳輸層:進程與進程的通信
瀏覽器訪問,會話都有啥
不同網頁窗口,源端口不衝突,目標端口80
例:瀏覽器1 5997端口 訪問 80端口,回來的也是給 5997端口
(有可能一個頁面 播放2個視頻,連2個不同的服務器 則2個會話)
TCP:點到點 --什麼是socket
socket == IP地址+ 端口
TCP協議如何實現可靠傳輸?
停止等待協議:沒有確認,我就等待
只要你沒告訴我你收到了,我就認爲你沒收到。
功能實現了,但是實際上,信道利用率太低!
滑動窗口技術 保證流水線傳輸
得到確認,移動
累積確認
124發送到了,3丟了,這種情況下:B確認 收到了2(1已經收到了)
五層傳輸流程
- 應用層:給出數據
- 傳輸層:切割分段,加首部(包括源端口、目的端口、序列號seq、確認號ack、SYN ACK 窗口信息等),首部+ 切割的數據 == 【段】
- 網絡層:得到傳輸層的【段】,加上ip首部(包括源ip地址、目標ip地址、協議等), ip首部 + 【段】 == 【包】
- 數據鏈路層:得到【包】 加 源mac地址 目標mac地址,幀頭、幀尾、 FCS 得到 【幀】
- 物理層:01010101
(重要,很有成就感!!!!)
TCP首部
注:確 == 確認號、序 == 序號、源 == 源端口、目 == 目標端口
ACK == 0代表確認號無效,1代表有效
SYN == 同步標記。 SYN == 1 建立會話請求 ,XP扔過去。WEB站點同意,SYN = 1 扔回來。
真實情況下,TCP如何實現可靠傳輸
以字節byte爲單位的滑動窗口技術
確認號7
選擇性確認 s ack :可以只發丟失的
擁塞控制
路由器需要處理的數據包太多,忙不過來,丟包了
剛開始是 擁塞窗口 = 1(單位:報文段),然後2的指數增加;
一旦達到慢開始門限,增長方式變爲 ++;
若出現網絡擁塞:擁塞窗口 = 1;慢開始門限 /= 2;
快重傳:
一般情況:如果已知3丟了,還需要收到4 5,再發送確認.
快重傳:已知3丟了,應該立即連發3個確認,讓你重傳3 4 5。
快恢復(與快重傳 配套)
剛開始是 擁塞窗口 = 1(單位:報文段),然後2的指數增加;
一旦達到慢開始門限,增長方式變爲 ++;
若收到3個重複的確認(快重傳算法):新慢開始門限 = current擁塞窗口 / 2;擁塞窗口 = 新慢開始門限; 開始++;
TCP連接的建立,三次握手
傳輸連接有三個階段,即:建立連接、數據傳送、釋放連接。
採用的都是 client/server 方式
SYN 只有前兩次,兩次已經同步好了。
第三次 沒有SYN了,只有ACK,是再次確認。
若沒有第三次確認
三次握手:“爲了防止已失效的連接請求報文段(第一份)突然又傳送到了服務端,因而產生錯誤”