UDP是一個無連接的協議,在實作上比TCP簡單的多,
1、創建socket
無論是TCP還是UDP,底層都是一個socket對應,socket中有著接收佇列、等待佇列、發送佇列三個佇列,
接收佇列:
用來存放對應的資料
等待佇列:
當執行緒呼叫recv_msg()的時候,如果接收佇列為空,就阻塞,將其加入到等待佇列中,如果接收佇列不為空,就直接讀取對應的資料
發送佇列:
當執行緒呼叫send_msg()的時候,就將資料掛到發送佇列中,對應的內核執行緒會將其寫入網卡中
2、接收資料
當資料到達網卡后,會一層一層的呼叫到udp_recv(),里面會根據源IP地址、源埠號來找到對應的socket,然后將資料包掛到socket的接收佇列中,接著將等待佇列中的執行緒喚醒,執行緒會繼續執行recv_msg(),讀取接收佇列中的資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/304721.html
標籤:其他
上一篇:Nginx 開啟http3 quic支持——筑夢之路
下一篇:計算機網路基礎-1
