日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

系列(九)—TCP/UDP协议

發布時間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系列(九)—TCP/UDP协议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、計算機網絡協議模型

物理層主要負責在物理線路上傳輸原始的二進制數據。兩臺計算機要通信,就得通過介質,比如光纖、電纜等,物理層就是干這些事情的,。
數據鏈路層主要負責在通信的實體間建立數據鏈路連接。物理層它只是單純著負責在計算機之間傳輸0,1這樣的電信號。假如這些0,1組合的傳送毫無規則,計算機是解讀不了的。因此,我們需要制定一套規則來進行0,1的傳送。例如多少個電信號為一組啊,每一組信號應該如何標識才能讓計算機讀懂啊等。數據鏈路層就是在物理層之上,負責給這些0,1制定傳送的規則,然后另一方再按照相應的規則來進行解讀。
網絡層要負責創建邏輯鏈路,以及實現數據包的分片和重組,實現擁塞控制、網絡互連等功能。假如網絡不進行細化,沒有子網的話,當一臺計算機發送信息時,其他所有的計算機都能收到的,然后再刪選舍棄這樣下去計算機是會崩潰的,網絡層就是負責解決這類問題的。建立主機到主機的通信。
傳輸層負責向用戶提供端到端的通信服務,實現流量控制以及差錯控制。雖然我們已經把數據成功從計算機傳送到另一臺計算機了,可是另一臺計算機又怎么知道這些數據是給誰的,
這個時候,就產生了端口,也就是說,我們在從計算機A傳數據給計算表B的時候,還得指定一個端口,以供特定的應用程序來接受處理。傳輸層的功能就是建立端口到端口的通信。
應用層應用層是最接近用戶的,用來規定應用程序的數據格式。為應用程序提供了網絡服務。

2、tcp與udp的區別

?UDPTCP
是否連接無連接面向連接
是否可靠不可靠傳輸,不使用流量控制和擁塞控制可靠傳輸,使用流量控制和擁塞控制
連接對象個數支持一對一,一對多,多對一和多對多交互通信只能是一對一通信
傳輸方式面向報文面向字節流
首部開銷首部開銷小,僅8字節首部最小20字節,最大60字節
適用場景適用于實時應用(qq聊天、在線視頻、網絡語音電話、視頻會議、直播等即時通訊、廣播通信等)適用于要求可靠傳輸的應用,例如文件傳輸、收發郵件、遠程登錄

目前常見的直播方案都是上行采用rtmp;下行采用http-flv或者hls,底層都是tcp。UDP理論上更適合用于直播系統,但開發效率低,周期長。

做視頻直播,用UDP好還是TCP好?為什么?做視頻點播呢?

抖音底層用的什么傳輸協議TCP,還是UDP?:為適應弱網都基于UDP做可靠傳輸,本質上既不是TCP也不是UDP。

3、tcp如何實現連接

1)tcp三次握手

為了確認雙方各自的接受和發送能力是否正常(服務端需要確認服務端和客戶端、客戶端也需要確認服務端和客戶端的收發能力)

  • 第一次握手:客戶端給服務器端發送一個SYN報文;
  • 第二次握手:服務器收到SYN報文之后,會應答一個SYN+ACK報文。
  • 第三次握手:客戶端收到SYN+ACK報文之后,會回應一個ACK報文。
  • 服務器收到ACK報文之后,三次握手建立完成。

?

·第一次握手:客戶端發送網絡包,服務器收到了。服務器斷就能得到結論:客戶端的發送能力、服務端的接收能力是正常的。

·第二次握手:服務端發包,客戶端收到了。客戶端就能得出結論:服務端的接收能力、發送能力,客戶端的接收、發送能力是正常的。不過此時服務器并不能確認客戶端的接收能力是否正常。

·第三次握手:客戶端發包,服務器端收到了。服務端得出結論:服務器自己的發送能力,接收能力正常。

2)tcp四次揮手

?

?

3)為什么TIME_WAIT狀態需要經過2MSL才能返回到CLOSE狀態?

第一,為了保證A發送的最后一個ACK報文段能夠到達B。假設網絡是不可靠的,有可以最后一個ACK丟失。所以TIME_WAIT狀態就是用來重發可能丟失的ACK報文。在Client發送出最后的ACK回復,但該ACK可能丟失。Server如果沒有收到ACK,將不斷重復發送FIN片段。所以Client不能立即關閉,它必須確認Server接收到了該ACK。Client會在發送出ACK之后進入到TIME_WAIT狀態。Client會設置一個計時器,等待2MSL的時間。如果在該時間內再次收到FIN,那么Client會重發ACK并再次等待2MSL。所謂的2MSL是兩倍的MSL(Maximum Segment Lifetime)。MSL指一個片段在網絡中最大的存活時間,2MSL就是一個發送和一個回復所需的最大時間。如果直到2MSL,Client都沒有再次收到FIN,那么Client推斷ACK已經被Server成功接收,則結束TCP連接。

4)為什么連接的時候是三次握手,關閉的時候確實四次揮手?

為了防止客戶端沒有接受到服務器的數據包。當客戶端發送FIN報文后,服務器返回一個ACK報文,客戶端進入等待狀態,當服務端把所有報文發送完畢后,服務端向客戶端發送一個FIN報文,客戶端返回ACK后斷開連接

?

5、如果已經建立了連接,但是客戶端突然出現故障了怎么辦?

TCP還設有一個保活計時器,顯然,客戶端如果出現故障,服務器不能一直等下去,白白浪費資源。服務器每收到一次客戶端的請求后都會重新復位這個計時器,時間通常是設置為2小時,若兩小時還沒有收到客戶端的任何數據,服務器就會發送一個探測報文段,以后每隔75分鐘發送一次。若一連發送10個探測報文仍然沒反應,服務器就認為客戶端出了故障,接著就關閉連接。

6、TCP協議如何保證可靠傳輸

確認應答機制、超時重傳機制、流量控制機制、擁塞控制機制

TCP協議可靠性保證(確認應答機制,超時重傳機制,流量控制,擁塞窗口)

7、同步IO、異步IO、阻塞IO、非阻塞IO

如何區分是同步IO還是異步IO呢?

總結

以上是生活随笔為你收集整理的系列(九)—TCP/UDP协议的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。