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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析)

發布時間:2025/4/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于聯通短信發送程序(SGIP協議)沒有收到返回狀態報告的報告(使用WireShark分析)

? ? 這是數年前給一個公司做的;使用WireShark抓包分析程序問題;是使用WireShark分析程序涉及到網絡相關問題的一個很好案例。
? ? 對于進行短彩信開發的人可以詳細看一下;非短彩信開發人員可以了解一下WireShark的應用。

? ? 短彩信群發業務(SGIP協議),簡單來說是這樣。是一種電信增值業務。要做短彩信群發的單位,先去當地聯通或移動,申請開通此項業務;然后它會提供一根專線,連接到公司的服務器;公司的程序,把要發送短信的用戶號碼和短信內容,包裝為SGIP協議的數據包,一條條的,提交到聯通或移動的短信網關,然后就不用管了;聯通或移動的短信網關收到SGIP的協議數據,它自己會把短信發給用戶手機。
? ? 短信發送程序本質是一個TCP/IP套接字程序,不過要同時實現套接字的發送和接收;因為按SGIP協議要求,提交數據給短信網關,同時也要接收短信網關返回的狀態。
? ? 這里SGIP協議是位于TCP/UDP之上的一個應用層協議。SGIP協議,大約60、70頁文字,可以全部描述清楚其細節。如果對TCP/IP協議比較了解,對上述應該不難理解。
? ? 短信發送程序可以用C#或Java開發,可以直接用套接字,也可以用一些套接字的包裝類。網上有參考源碼。
? ? 涉及到SGIP協議術語就不解釋了,如需要可網上查閱SGIP資料。SP是指發送端,SMG是短信網關。
? ? 具體的IP之類的一些內容,涉及商業信息的全部隱去,只討論純技術問題。
? ? 開發通常先使用模擬網關,是一個程序,就是一個套接字的收發程序,不過它可以分析出SGIP協議數據;短信發送程序對模擬網關進行收發,測試都通過,再對實際網關進行發送。

? ? SGIP這一類型的短信協議,在WireShark中識別出來,很多時候顯示為SMPP協議。

一 開發過程中出現的現象

? ? 按照sgip協議的要求,SP對SMG發送時,如果ReportFlag字段設置為1,不論該條消息成功與失敗,SMG都應返回一個report。
? ? 在實際調試和測試中,不論用模擬網關,還是真實聯通網關,在發送程序界面上均未顯示有收到report。在SmsServer.cs中有添加代碼,當收到report時在界面上添加提示。

? ? 需要分析是程序的問題,還是聯通方面的問題。

二 分析

? ? 由于聯通網關現在并不能deliver;SubmitResp是SP對SMG進行提交短信時,SMG被動返回的;Report和Deliver都是SMG主動發送的;所以可能是聯通關閉了主動發送功能。
? ? 該問題應該不影響短信發送。只要收到SubmitResp即可。
? ? 但為了程序可靠性,通過實際分析測試來證實。

三 程序界面

? ? 在TcpSocketServer.cs的AcceptCallBack函數內,收到一個Bind之后,添加:
? ? this.addText(">>>>>>接收到網關Bind請求!!!");//測試用
? ? 這樣如果收到網關主動連接請求,就會在界面上提示;

? ? 在SmsServer.cs的ServerRecvEvent函數中的switch語句中,當分支條件為5時,即收到網關report時,添加:
? ? this.AddTextEvent(string.Concat(new object[] { ">==接收到SGIP_REPORT ? ?手機號", report.UserNumber, ";狀態:", report.ErrorCode }));
? ? 這樣如果收到網關Report,就會在界面上提示;

四 抓包工具WireShark的安裝配置使用

? ? 在WireShark官網下載WireShark,然后安裝,安裝過程中彈出提示安裝WinPcap, WireShark是用WinPcap開發的,要同時安裝上WinPcap;安裝結束即可使用。

? ? 抓包
? ? 啟動WireShark,選定網卡,點擊開始,即開始包的捕獲。
? ? 如果網卡接口選擇列表為空,或者彈出相關提示,表明NPF服務沒有啟動,WireShark抓包需要該服務。以管理員身份運行CMD,然后執行net start npf命令,啟動npf服務。

? ? 需要選定合適的網卡或接口,如選擇不對將不會捕獲到需要的包,或者只能捕獲一個方向(流進或流出)的包。

? ? 網卡與連接選擇列表

?

五 對模擬網關的抓包分析

?

? ? 由短信發送程序對網關進行三次發送,每次25條。
? ? 首先啟動WireShark,開始抓包。然后啟動發送程序進行發送。發送結束停止抓包。

? ? 所捕獲的包包含此時段內所有在本機網卡上流進流出的包。數量比較多,難以進行分析,需要進行過濾,過濾出網關對發送程序返回的包進行分析。

? ? 編寫過濾表達式如下:
? ? ip.dst==192.168.1.29 and ip.src==192.168.1.37 and !udp

? ? 即只需要目的地址為本機(192.168.1.29)、源地址(模擬網關部署地址)為192.168.1.37的包,并濾除所有UDP包。

? ? 過濾后的包數量較少,可進行分析。
? ? 以第三次發送捕獲后過濾后的包進行示例,如下圖。


? ? 由模擬網關對短信發送程序返回的包可見,返回的包的類型主要有TCP的ACK包(即模擬網關對發送程序請求建立連接的確認包)、
? ? SMPP Query_sm - resp包(WireShark把SGIP協議認為SMPP協議)。

? ? 在所有返回的包中并未發現有report類型的包。

?

六 對真實的聯通網關進行抓包分析

?

? ? 由短信發送程序進行四次發送,10條三次,20條一次。分別捕獲每次發送時的包。

? ? 然后用WireShark打開所捕獲的包,鍵入過濾表達式:
? ? ip.dst==xxx.x.xxx.xxx and ip.src==xxx.xx.xxx.xxx and !udp

? ? 即由聯通網關對短信發送程序部署機器返回的包,并濾除所有UDP包;
? ? 過濾后進行分析。

? ? 以10條第二次、20條第一次為例,如下圖所示。


? ? 由聯通網關對短信發送程序返回的包中主要包含三類包:聯通網關對短信發送程序請求建立連接的包(TCP的SYN包)、聯通網關對短信發送程序建立連接請求返回的確認包(TCP的ACK包)、聯通網關對發送程序提交的短信返回的響應(SMPP Query_sm - resp,
WireShark把SGIP協議認為SMPP協議)。

? ? 在所有返回的包中并未發現有report類型的包。

七 結論、電話聯系

? ? 由以上可知,聯通網關收到短信后并未返回Report。程序本身沒有問題。


? ? 電話聯系聯通陳工,陳工表示“狀態報告是通過上行接口返回的”,聯通的上行接口沒有開放,不能收到返回的Report是正常的,與分析情況相符,和報告中 二 的意思是一致的。

總結

以上是生活随笔為你收集整理的关于联通短信发送程序(SGIP协议)没有收到返回状态报告的报告(使用WireShark分析)的全部內容,希望文章能夠幫你解決所遇到的問題。

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