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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络基础2-2(传输层,端口,详谈UDP)

發(fā)布時(shí)間:2023/11/30 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络基础2-2(传输层,端口,详谈UDP) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳輸層

負(fù)責(zé)數(shù)據(jù)能夠從發(fā)送端傳輸接收端.

端口號(hào)

  • 端口號(hào)(Port)標(biāo)識(shí)了一個(gè)主機(jī)上進(jìn)行通信的不同的應(yīng)用程序;
  • 在TCP/IP協(xié)議中, 用 “源IP”, “源端口號(hào)”, “目的IP”, “目的端口號(hào)”, “協(xié)議號(hào)” 這樣一個(gè)五元組來標(biāo)識(shí)一個(gè)通信(可以通過 netstat -n查看);
  • 一個(gè)端口只能被一個(gè)進(jìn)程占用,一個(gè)進(jìn)程可以使用多個(gè)端口
  • 端口號(hào)范圍劃分

  • 0 - 1023: 知名端口號(hào), HTTP, FTP, SSH等這些廣為使用的應(yīng)用層協(xié)議, 他們的端口號(hào)都是固定的.
  • 1024 - 65535: 操作系統(tǒng)動(dòng)態(tài)分配的端口號(hào). 客戶端程序的端口號(hào), 就是由操作系統(tǒng)從這個(gè)范圍分配的
  • 查看知名端口

    cat /etc/services

    兩個(gè)問題

  • 一個(gè)進(jìn)程是否可以bind多個(gè)端口號(hào)?
    可以
    因?yàn)橐粋€(gè)進(jìn)程可以打開多個(gè)文件描述符,而每個(gè)文件描述符都對應(yīng)一個(gè)端口號(hào),所以一個(gè)進(jìn)程可以綁定多個(gè)端口號(hào)
  • 一個(gè)端口號(hào)是否可以被多個(gè)進(jìn)程bind?
    不可以
  • UDP協(xié)議

    UDP協(xié)議格式

    udp協(xié)議字段:

    16位源端口,16位目的端口:負(fù)責(zé)端與端之間傳輸
    16位校驗(yàn)和:驗(yàn)證數(shù)據(jù)的完整一致性(二進(jìn)制反碼求和)
    16位udp數(shù)據(jù)報(bào)總長度:udp數(shù)據(jù)報(bào)總長度的存儲(chǔ)只有16位,意味著一個(gè)包含有頭部信息的udp數(shù)據(jù)報(bào)最大長度=65535字節(jié),意味著如果發(fā)送的數(shù)據(jù)長度大于65535-8大小,則這個(gè)數(shù)據(jù)需要用戶在應(yīng)用層進(jìn)行數(shù)據(jù)分段;因?yàn)閡dp不會(huì)在傳輸層自動(dòng)進(jìn)行數(shù)據(jù)分段

    注意
  • 16位UDP長度, 表示整個(gè)數(shù)據(jù)報(bào)(UDP首部+UDP數(shù)據(jù))的大長度;
  • 如果校驗(yàn)和(二進(jìn)制反碼求和)出錯(cuò), 就會(huì)直接丟棄;
  • UDP的特點(diǎn)

    UDP傳輸?shù)倪^程類似于寄信.

  • 無連接: 知道對端的IP和端口號(hào)就直接進(jìn)行傳輸, 不需要建立連接;
  • 不可靠: 沒有確認(rèn)機(jī)制, 沒有重傳機(jī)制; 如果因?yàn)榫W(wǎng)絡(luò)故障該段無法發(fā)到對方, UDP協(xié)議層也不會(huì)給應(yīng)用層 返回任何錯(cuò)誤信息,沒有粘包問題;
  • 面向數(shù)據(jù)報(bào): 不能夠靈活的控制讀寫數(shù)據(jù)的次數(shù)和數(shù)量,數(shù)據(jù)只能整條整條的交付給應(yīng)用層
  • udp不保證數(shù)據(jù)報(bào)的有序到達(dá),需要用戶在應(yīng)用層進(jìn)行包序管理
  • 面向數(shù)據(jù)報(bào)

    應(yīng)用層交給UDP多長的報(bào)文, UDP原樣發(fā)送, 既不會(huì)拆分, 也不會(huì)合并
    例如:
    如果發(fā)送端調(diào)用一次sendto, 發(fā)送100個(gè)字節(jié), 那么接收端也必須調(diào)用對應(yīng)的一次recvfrom, 接收100個(gè) 字節(jié); 而不能循環(huán)調(diào)用10次recvfrom, 每次接收10個(gè)字節(jié);

    UDP的緩沖區(qū)

  • UDP沒有真正意義上的 發(fā)送緩沖區(qū). 調(diào)用sendto會(huì)直接交給內(nèi)核, 由內(nèi)核將數(shù)據(jù)傳給網(wǎng)絡(luò)層協(xié)議進(jìn)行后 續(xù)的傳輸動(dòng)作
  • UDP具有接收緩沖區(qū). 但是這個(gè)接收緩沖區(qū)不能保證收到的UDP報(bào)的順序和發(fā)送UDP報(bào)的順序一致; 如果 緩沖區(qū)滿了, 再到達(dá)的UDP數(shù)據(jù)就會(huì)被丟棄
  • UDP的socket既能讀, 也能寫, 這個(gè)概念叫做 全雙工

    UDP使用注意事項(xiàng)

  • , UDP協(xié)議首部中有一個(gè)16位的大長度. 也就是說一個(gè)UDP能傳輸?shù)臄?shù)據(jù)大長度是64K(包含UDP首 部).
  • 64K在當(dāng)今的互聯(lián)網(wǎng)環(huán)境下, 是一個(gè)非常小的數(shù)字. 如果我們需要傳輸?shù)臄?shù)據(jù)超過64K, 就需要在應(yīng)用層手動(dòng)的分包, 多次發(fā)送, 并在接收端手動(dòng)拼裝;
  • 基于UDP的應(yīng)用層協(xié)議

  • NFS: 網(wǎng)絡(luò)文件系統(tǒng)
  • TFTP: 簡單文件傳輸協(xié)議
  • DHCP: 動(dòng)態(tài)主機(jī)配置協(xié)議
  • BOOTP: 啟動(dòng)協(xié)議(用于無盤設(shè)備啟動(dòng))
  • DNS: 域名解析協(xié)議
  • 。。。。。。
  • 總結(jié)

    以上是生活随笔為你收集整理的网络基础2-2(传输层,端口,详谈UDP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。