国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

sip消息拆包原理及組包流程

這篇具有很好參考價值的文章主要介紹了sip消息拆包原理及組包流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

操作系統(tǒng) :CentOS 7.6_x64 ? ??
freeswitch版本 :1.10.9
sofia-sip版本: sofia-sip-1.13.14
?
freeswitch使用sip協(xié)議進(jìn)行通信,當(dāng)sip消息超過mtu時,會出現(xiàn)拆包的情況,這里整理下sip消息拆包原理及組包流程。

一、拆包的原理

?簡單來說:拆包的原因是,sip消息過長,超過mtu值。
?具體原理可以參考《TCP/IP詳解 卷2:實現(xiàn)》第10章 : IP的分片與重裝
sip消息拆包原理及組包流程

這里貼下拆包的示意圖:

sip消息拆包原理及組包流程

二、生成sip拆包的pcap文件

1、讓sip消息超過mtu值

這里列舉兩種方法讓sip消息超過mtu值,具體如下:
1) 添加sip消息內(nèi)容,超出默認(rèn)mtu值
該方法和真實場景比較貼合,建議使用,可以通過在orginate時添加自定義sip頭實現(xiàn),具體操作步驟獲取途徑:
關(guān)注微信公眾號(聊聊博文,文末可掃碼)后回復(fù)?20230402 獲取。
2)設(shè)置網(wǎng)卡的mtu為比較小的值
一般網(wǎng)卡默認(rèn)的mut值是 1500 ,可以通過以下命令修改:
ifconfig enp0s3 mtu 500up

其中,500是新的mtu值,具體效果如下:

sip消息拆包原理及組包流程

2、抓包獲取pcap文件

為了方便起見,這里以修改mtu值的方式演示下。
這里使用tcpdump進(jìn)行抓包,具體如下:
tcpdump -i enp0s3 udp -w sipTest1-mtu.pcap
具體效果如下:
sip消息拆包原理及組包流程

上圖的INVITE消息已經(jīng)拆包了。

組包時,需要看ip頭里面的 More fragments 標(biāo)識,拆包的數(shù)據(jù)Identification字段一致,在本示例里面是 22448 這個值。

三、sip消息組包

由于拆包是IP層的行為,sip消息大多基于udp實現(xiàn),拆包的數(shù)據(jù)包里面可能沒有端口信息(端口數(shù)據(jù)在udp里面定義的),解析之前需要先進(jìn)行組包,這里以python為例進(jìn)行演示。
python版本:python 3.9
libpcap版本:1.11.0b7
python3如何使用libpcap的具體講解,可從如下途徑獲?。?/div>
關(guān)注微信公眾號(聊聊博文,文末可掃碼)后回復(fù)?2022102901? 獲取。

1、基于udp實現(xiàn)的sip協(xié)議數(shù)據(jù)報文結(jié)構(gòu)

完整的sip消息的IP數(shù)據(jù)報有IP首部、UDP首部、UDP數(shù)據(jù)組成,具體如下:
sip消息拆包原理及組包流程

?

?其中IP首部為20字節(jié),結(jié)構(gòu)如下:

sip消息拆包原理及組包流程

UDP首部為8字節(jié),結(jié)構(gòu)如下:

sip消息拆包原理及組包流程

2、解析IP首部及UDP首部

ip首部解析如下:
ipHdr = struct.unpack('!BBHHHBBH4s4s',bytes(p[14:34]))
ver = (ipHdr[0] & 0xF0) >> 4
udp首部解析如下:
udpHdr = struct.unpack('!HHHH',bytes(p[34:42]))
srcPort,dstPort = udpHdr[0],udpHdr[1]

3、拼接SIP消息

解析過程大概分為以下幾個步驟:
1)解析ip頭及udp頭;
2)判斷ip頭是否有moreFrag標(biāo)識,如果有,則進(jìn)行特殊標(biāo)記處理;
3)根據(jù)數(shù)據(jù)包標(biāo)識拼接sip消息,然后解析;
運行效果如下:
sip消息拆包原理及組包流程

拼接效果如下:

sip消息拆包原理及組包流程

示例代碼如下:

sip消息拆包原理及組包流程

?

?四、資源獲取

本文涉及文件和完整python示例代碼從如下途徑獲取:文章來源地址http://www.zghlxwxcb.cn/news/detail-405370.html

關(guān)注微信公眾號(聊聊博文,文末可掃碼)后回復(fù)?20230408 獲取。
sip消息拆包原理及組包流程

到了這里,關(guān)于sip消息拆包原理及組包流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • macOS系統(tǒng)下載安裝IDEA 操作流程

    macOS系統(tǒng)下載安裝IDEA 操作流程

    目錄 第一步 進(jìn)入官網(wǎng),選擇箭頭指向的版本 第二步 下載完成后打開,拖動安裝包安裝?編輯 第三步 點擊\\\"+ project\\\",在JDK下拉框選擇\\\"Download JDK\\\" 第四步 下載完成以后,點擊右下角的Create按鈕。 Other Versions - IntelliJ IDEA 到這里就安裝完畢,附一張進(jìn)入IDEA的截圖

    2024年01月18日
    瀏覽(22)
  • linux系統(tǒng)升級/更新OpenSSL版本操作流程記錄

    linux系統(tǒng)升級/更新OpenSSL版本操作流程記錄

    問題描述:有時 OpenSSL 版本過老升級,或者需要更新 OpenSSL 版本 我的輸入后版本信息為:OpenSSL 1.1.1g FIPS 21 Apr 2020 ,可以看到是一年前更新版本,是有些老。 登錄 https://www.openssl.org/ 官網(wǎng)后,找到需要的版本 我這里選擇 3.1 版本,進(jìn)入后如下圖: 我的輸入后版本信息為:Op

    2024年02月07日
    瀏覽(50)
  • Linux:Linux操作系統(tǒng)流程控制語句-case語句使用介紹

    本博客將介紹Linux操作系統(tǒng)中流程控制語句-case語句的使用方法。我們將通過多個案例來詳細(xì)說明case語句的執(zhí)行流程和用法。這些案例包括菜單選項、rsync服務(wù)腳本、nginx服務(wù)腳本、實現(xiàn)系統(tǒng)工具箱和實現(xiàn)簡單的jumpserver跳板機(jī)。通過學(xué)習(xí)這些內(nèi)容,您將能夠更好地掌握Shell腳本

    2024年02月12日
    瀏覽(20)
  • 操作系統(tǒng)原理大題

    操作系統(tǒng)原理大題

    某一頁表內(nèi)容自0~7依次為03; 07; 0B;11;1A;1D;20;22. 請計算頁面大小為1K和4K時的邏輯地址134D對應(yīng)的物理地址。 首先,將134D轉(zhuǎn)換為二進(jìn)制數(shù)為 0001001101001101 1k為2的10次方? 從后往前占十位為 000100|1101001101 豎線前面的二進(jìn)制轉(zhuǎn)化為十進(jìn)制是4,4塊號對應(yīng)的是1A,那么將豎線前的二進(jìn)制

    2024年02月05日
    瀏覽(23)
  • 【操作系統(tǒng)】幾種基本頁面置換算法的基本思想和流程圖

    【操作系統(tǒng)】幾種基本頁面置換算法的基本思想和流程圖

    ??在地址映射過程中,若在頁面中發(fā)現(xiàn)所要訪問的頁面不在內(nèi)存中,則產(chǎn)生缺頁中斷。當(dāng)發(fā)生缺頁中斷時,如果操作系統(tǒng)內(nèi)存中沒有空閑頁面,則操作系統(tǒng)必須在內(nèi)存選擇一個頁面將其移出內(nèi)存,以便為即將調(diào)入的頁面讓出空間。而用來選擇淘汰哪一頁的規(guī)則叫做頁面置換

    2024年02月16日
    瀏覽(21)
  • 操作系統(tǒng)原理 —— 什么是中斷?(四)

    操作系統(tǒng)原理 —— 什么是中斷?(四)

    我們先來看看早期的計算機(jī)的工作流程: 如上圖,在早期的計算機(jī)假設(shè)有三個程序需要執(zhí)行,執(zhí)行順序是:先執(zhí)行程序1,等待程序1結(jié)束之后,再開始執(zhí)行程序2,以此類推,所以它們是串行執(zhí)行的,這種方式效率就比較低,為了能夠使計算機(jī)能夠同時執(zhí)行多個程序,從而引入

    2023年04月24日
    瀏覽(28)
  • 如何基于麒麟操作系統(tǒng)(Kylin)部署K8S集群(詳細(xì)流程文檔)

    如何基于麒麟操作系統(tǒng)(Kylin)部署K8S集群(詳細(xì)流程文檔)

    序號 操作系統(tǒng)及版本 備注 1 Kylin V10 SP3 需求 CPU 內(nèi)存 硬盤 角色 主機(jī)名 值 4C 8G 100GB master k8s-master01 值 4C 8G 100GB worker(node) k8s-worker01 值 4C 8G 100GB worker(node) k8s-worker02 1.3.1 主機(jī)名配置 由于本次使用3臺主機(jī)完成kubernetes集群部署,其中1臺為master節(jié)點,名稱為k8s-master01;其中2臺為work

    2024年02月10日
    瀏覽(18)
  • Windows操作系統(tǒng)AD域服務(wù)器簡介、原理及 搭建操作

    Windows操作系統(tǒng)AD域服務(wù)器簡介、原理及 搭建操作

    1.1 AD 簡介 域(Domain)是Windows網(wǎng)絡(luò)中獨立運行的單位,域之間相互訪問則需要建立信任關(guān)系。 當(dāng)一個域與其他域建立了信任關(guān)系后,2個域之間不但可以按需要相互進(jìn)行管理,還可以跨網(wǎng)分配文件和打印機(jī)等設(shè)備資源,使不同的域之間實現(xiàn)網(wǎng)絡(luò)資源的共享與管理,以及相互通信和

    2024年02月04日
    瀏覽(18)
  • 1.2 操作系統(tǒng)原理和常見命令

    操作系統(tǒng)原理 操作系統(tǒng)的概述: 定義:操作系統(tǒng)是控制和管理計算機(jī)硬件與軟件資源,提供應(yīng)用程序和用戶訪問的系統(tǒng)軟件。 功能:進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、設(shè)備管理、安全性等。 作用:協(xié)調(diào)和優(yōu)化計算機(jī)資源,提供統(tǒng)一的接口給應(yīng)用程序。 角色:操作系統(tǒng)在計

    2024年02月13日
    瀏覽(22)
  • 學(xué)習(xí)操作系統(tǒng)的必備教科書《操作系統(tǒng):原理與實現(xiàn)》| 文末贈書4本

    學(xué)習(xí)操作系統(tǒng)的必備教科書《操作系統(tǒng):原理與實現(xiàn)》| 文末贈書4本

    使用了6年的實時操作系統(tǒng),是時候梳理一下它的知識點了 摘要: 本文簡單介紹了博主學(xué)習(xí)操作系統(tǒng)的心路歷程,同時還給大家總結(jié)了一下當(dāng)下流行的幾種實時操作系統(tǒng),以及在工程中OSAL應(yīng)該如何設(shè)計。希望對大家有所啟發(fā)和幫助。 操作系統(tǒng)一直伴隨著我的工作,早些年我

    2023年04月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包