1.TCP和UDP的區別:
1.是否面向連接?
- TCP通過三次握手,建立連接。
- UDP是不用建立連接。
2.是否可靠?
- TCP傳輸的是可靠並有序的數據
- UDP只是盡最大努力交付,不一定可靠
3.UDP具有較好的實時性 適用場景:短消息,多客戶端,對信息可靠性要求不高,對效率要求高。
4.每一條TCP是點對點的,UDP支持更廣泛 一對一,多對一,多對多。
5.TCP對資源要求較高,UDP對資源要求較少。
6.TCP面向數據流, UDP面向數據報。
2.TCP/IP 實現可靠傳輸的方式:
- 序列號,ACK信號:發送方給每個要發送的數據包都標有一個序列號。接受方在接收到數據包后,給發送送發送一個ACK信號包含了,要求的下一個數據包的序列號。
- 超時重發:當發送方在規定時間內沒有接收到接收方的ACK時,將會重發送該數據包,並下一次等待重發的時間成指數增長。當重發一定次數后,若還沒有收到ACK,就會強制的斷開連接。
- TCP的連接管理:三次握手,四次揮手。
- 以段為單位發送數據包:在通信雙方建立連接的同時,協商數據包的單位即(最大的消息長度(MSS))。
- 滑動窗口:包括前端已發送未收到ACK的數據包,和后端待發送的數據包。接收端收到ACK后,窗口向前滑動,直到有數據未確認時停止。
- 流量控制:TCP數據報首部字段來控制滑動窗口的大小。
- 擁塞控制:發送端通過擁塞窗口主動控制數據流量。 慢啟動:防止通信雙方一開始就發送大量的數據包,擁塞窗口一開始的大小為:1MSS,每收到一個ACK擁塞窗口就擴大兩倍,發送數據包時選擇擁塞窗口和滑動窗口的較小值。擁塞避免算法:相比慢啟動,擁塞窗口的增長速度更慢。快速重傳:當在規定時間限度內沒有收到ACK,那么很可能就是網絡出現問題。此時將擁塞窗口減小為一,重新慢開始。