999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JSP計算網(wǎng)絡(luò)時延的實現(xiàn)

2023-12-29 00:00:00費東陽,王艷麗,王蒙恩,張書寧,孫智慧,張學(xué)良
電腦知識與技術(shù) 2023年33期

摘要:為了計算源主機到目的主機的端到端的時延,該文設(shè)計了一種基于JSP的計算網(wǎng)絡(luò)時延程序。首先通過使用MINA框架的IoHandler接口進行服務(wù)端和客戶端的搭建;然后使用IoService接口來封裝數(shù)據(jù);用SSM框架中的Mybatis用來持久層與數(shù)據(jù)庫的交互;日志的記錄采用了基于Java的Apache Log4j組件;最后利用SSL的密碼處理技術(shù)保證了TCP連接中的網(wǎng)絡(luò)安全通信。測試結(jié)果表明,本程序計算的端到端的時延是準確的,符合實際的。

關(guān)鍵詞:JSP;網(wǎng)絡(luò)時延;TCP;SSL

中圖分類號:TP311" " " 文獻標識碼:A

文章編號:1009-3044(2022)33-0071-03

1 引言

隨著計算機網(wǎng)絡(luò)的迅速發(fā)展,許多因特網(wǎng)應(yīng)用,如搜索、Web瀏覽、電子郵件、地圖、及時信息和IP語音,它們的性能受網(wǎng)絡(luò)時延的影響很大。很多時候我們在微信聊天,打游戲或看視頻會遇到卡頓情況,網(wǎng)絡(luò)時延便是導(dǎo)致卡頓的一個非常重要的因素。而很多同步應(yīng)用對網(wǎng)絡(luò)時延的要求是非常高的,網(wǎng)絡(luò)時延不穩(wěn)定可能會導(dǎo)致丟包從而使其不能使用。而且不同的服務(wù)類型在相同的延時下,給人的主觀感受也是不一樣的。例如,當(dāng)視頻加載時,10s的初始化時延是能忍受的,但當(dāng)我們即時通信時,5s的時延就會很糟糕。這時候就需要一個專門的程序來幫我們測試在不同情況下我們請求服務(wù)的時延[1]。

延遲時間長的設(shè)備都將使網(wǎng)絡(luò)速度慢下來,無論其利用率是多少。我們可能會認為高速以太網(wǎng)的毫秒級延遲不會對應(yīng)用造成影響。其實不然,在高速以太網(wǎng)中,即使幾毫秒的時延也會極大地降低TCP性能。而80%以上的Internet通信使用的是TCP,延時便成了一個我們不得不考慮的問題。通過研究時延,可以讓我們的系統(tǒng)更加流暢,讓用戶擁有更好的體驗,讓系統(tǒng)的研究維護成本大大降低。尤其對一些需要實時更新、實時通信的應(yīng)用來說,研究時延就變得非常重要。因此,計算網(wǎng)絡(luò)時延程序的實現(xiàn)有著重要的意義。

2 技術(shù)要求

2.1 主要技術(shù)

本項目是基于JSP實現(xiàn)的Java小程序。前端是一個VUE框架實現(xiàn)的可視化圖形界面。后端則以MINA,SSM兩大框架為主體,Apache Log4j組件和JSEE技術(shù)為輔助,實現(xiàn)計算網(wǎng)絡(luò)時延的功能。

網(wǎng)絡(luò)編程抽象地來說,就是信息的交互。在發(fā)送端按照協(xié)議對信息進行封裝,通過物理媒介傳輸?shù)浇邮斩恕T诮邮斩送瑯影凑諈f(xié)議對消息進行解析,提取出信息,實現(xiàn)信息的交互。網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換。這個連接的端點由IP地址和端口號共同組成,叫作Socket。因此,網(wǎng)絡(luò)編程也叫作Socket編程。本程序主要使用的是Socket的TCP連接。Socket可以看作是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它就是一組接口[2]。

MINA框架是一個網(wǎng)絡(luò)通信應(yīng)用框架,可以快速地開發(fā)性能優(yōu)良,擴展性高的網(wǎng)絡(luò)通信應(yīng)用。其核心是IoSession接口,服務(wù)端和客戶端交互的信息便封裝在其中。在客戶端與服務(wù)端可以通過繼承MINA框架中的IoHandlerAdapter類來獲取IoSession接口中的信息。在服務(wù)端也可以用來表示客戶端,在服務(wù)端通過IoSession接口對客戶端進行操作。MINA框架也可以遠程搭建服務(wù)器并遠程控制服務(wù)器。服務(wù)端和客戶端的端口號和IP地址,可以自動指定也可以用戶定義。

SSM就是三個框架的集合。其中Spring包括SpringMVC。是整個項目中用來與數(shù)據(jù)庫動態(tài)交互的框架。通過使用SSM可以極大地簡化連接數(shù)據(jù)庫的過程與代碼,使開發(fā)更加高效便捷。其核心思想是控制反轉(zhuǎn)。

Spring是一個開源的框架,更準確地說它就是一個容器。容器中的每一個Bean都是一個抽象的方法。Spring通過建立Bean工廠來管理這些Bean。雖然Spring有很多的Bean,但是它是模塊化的,它的Bean是單獨的,只需利用有用的即可。

和Spring一樣,MyBatis也是一個開源的框架。文檔與代碼的結(jié)合使用是其最鮮明的特點。MyBatis的核心是XML文件的配置。通過XML配置或者注解的使用,我們幾乎不需要JDBC代碼。它實現(xiàn)了SQL語句與代碼的分離,降低了代碼的耦合性,使程序便于維護與測試。SSM動態(tài)連接數(shù)據(jù)庫的方便與快捷便體現(xiàn)在MyBatis上。

Apache Log4j是當(dāng)前在J2EE和J2SE開發(fā)中用的最多的日志框架,它具有出色的性能和靈活的配置以及豐富的功能,并且可以使用自定義組件來代替框架中組件來滿足要求。如果說MyBatis是文檔與代碼的結(jié)合。那Apache Log4j完完全全就是文檔編程。通過Apache Log4j框架,在編寫配置文件時就可以與數(shù)據(jù)庫進行交互,不需要再另寫代碼。

JSEE技術(shù)實現(xiàn)了SSL協(xié)議和TSL協(xié)議。在網(wǎng)絡(luò)編程中,一個非常重要的問題就是數(shù)據(jù)傳輸?shù)陌踩浴1卷椖渴褂玫腟SL證書數(shù)據(jù)安全加密的方式遵守SSL協(xié)議,是數(shù)字證書的一種,類似于日常生活中的數(shù)字簽名。

使用SSL加密,要向數(shù)字證書頒發(fā)機構(gòu)申請。申請通過后會有一份具有數(shù)據(jù)傳輸加密和服務(wù)器身份驗證功能的SSL證書。通過SSL證書我們可以對信息進行加密解密。同樣SSL也會保證信息的完整性和一致性,防止信息被篡改。

SSL協(xié)議位于應(yīng)用層協(xié)議和傳輸層協(xié)議之間,主要是用來對TCP通道進行加密。而SSL協(xié)議又可以分為兩層:SSL記錄協(xié)議和SSL握手協(xié)議。記錄協(xié)議主要是對數(shù)據(jù)進行封裝、壓縮、加密。握手協(xié)議顧名思義就是服務(wù)端和客戶端進行握手,進行一些信息交互前的操作,例如身份驗證、交換密鑰等。

Vue框架是一個只關(guān)注視圖層的前端框架,它具有靈活的組件和高效的數(shù)據(jù)綁定,同時它封裝了大量前端頁面常用的功能。前端的代碼往往是繁雜的,冗余的,Vue框架通過代碼復(fù)用,功能封裝,極大地減少了代碼量。

2.2 主要實現(xiàn)過程

通過MINA框架在目標服務(wù)器上再搭建一個服務(wù)端,然后運行在本地的客戶端通過socket與搭建的服務(wù)器端進行TCP連接[3]。客戶端通過服務(wù)端遠程控制目標服務(wù)器執(zhí)行ping命令,并將獲得的數(shù)據(jù)儲存在LOG日志中,然后再通過MINA的IoSession返回數(shù)據(jù)給客戶端。客戶端通過SSM框架來與數(shù)據(jù)庫進行交互,并對數(shù)據(jù)進行相應(yīng)的處理之后生成URL地址。前臺頁面通過axios訪問URL地址獲得數(shù)據(jù)。JSSE通過生成clientkeystore和serverkeystore加密證書來保證數(shù)據(jù)的安全性。圖1為實現(xiàn)過程圖。

3 系統(tǒng)功能設(shè)計

3.1 服務(wù)端與客戶端的搭建

首先,建立兩個處理器類PingServerIoHandler和PingClientIoHandler繼承MINA框架的IoHandlerAdapter類來分別作為服務(wù)端和客戶端的處理器。在服務(wù)端處理器中通過System的getProperty方法獲得操作系統(tǒng)的OsName,通過OsName選擇合適的命令。遠程調(diào)用目標服務(wù)器的cmd執(zhí)行ping命令,通過MessageFormat來格式化命令字符串。客戶端連接服務(wù)端,通過服務(wù)端的Runtime來遠程控制目標服務(wù)器執(zhí)行命令獲得數(shù)據(jù),并將獲得的數(shù)據(jù)一行行寫入IoSession中,IoSession是客戶端和服務(wù)端的特定連接,以鍵值對的形式保存數(shù)據(jù)。

與PingServerIoHandler相對的是PingServer服務(wù)端。在服務(wù)端創(chuàng)建一個非阻塞的Socket,通過NioSocketAcceptor來實現(xiàn)。消息的傳送會經(jīng)過一系列的過濾器。自定義過濾器使數(shù)據(jù)、操作和狀態(tài)存儲在日志中。然后使用MINA框架提供的文本換行符編解碼器來轉(zhuǎn)化文本為UTF-8類型。最后為接收器設(shè)置管理服務(wù)并綁定端口。這一系列過程通過Acceptor來實現(xiàn)。

同樣與PingClientIoHandler相對的是PingController客戶端,也是SSM的控制器。類似地,客戶端也需要創(chuàng)建一個非阻塞的Socket,并綁定一個與服務(wù)端相同的端口。不同的是需要給客戶端一個固定IP地址,而服務(wù)端的IP地址則作為數(shù)據(jù)輸入。因為我們的服務(wù)端是在目標服務(wù)器上搭建的服務(wù)器,所以服務(wù)端的IP地址和目標服務(wù)器的IP地址不一樣,這從某種程度上保證了一定的安全性。這個數(shù)據(jù)的輸入是在客戶端完成的,輸入數(shù)據(jù)也會寫入IoSession中。同樣的客戶端也能從IoSession中獲得服務(wù)端寫入的數(shù)據(jù)。數(shù)據(jù)也會經(jīng)過一系列的過濾器。同時客戶端需要一個計時機制來提前結(jié)束獲取數(shù)據(jù)超時的連接。

3.2 數(shù)據(jù)的安全傳輸

遠程連接服務(wù)器和網(wǎng)絡(luò)中數(shù)據(jù)的傳輸是本程序的核心。通過事件驅(qū)動,異步操作的編程模型使程序高性能,高擴展性地遠程控制服務(wù)器;利用控制反轉(zhuǎn)來降低代碼之間的耦合性;設(shè)置一系列的攔截器,過濾器,控制器來與數(shù)據(jù)庫進行交互;I/O流來進行數(shù)據(jù)的讀寫;Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

在客戶端和服務(wù)器之間通過TCP/IP協(xié)議傳輸數(shù)據(jù)時,數(shù)據(jù)并不是安全的。為了保證數(shù)據(jù)傳輸?shù)陌踩裕覀儾捎昧薐SSE技術(shù)[4]。在這里我們使用了JAVA自帶的keytool命令去生成證書文件。在編寫SSL相關(guān)類時通過調(diào)用getInstance工廠方法創(chuàng)建SSLContext對象。在客戶端和服務(wù)端還需要分別添加Ssl Filter安全加密過濾器。需要注意的是要確保注入SslFilter到過濾器鏈中的第一位置。目的負責(zé)管理數(shù)據(jù)的加密和解密通過安全連接。圖2是SSL相關(guān)文件目錄:

3.3 數(shù)據(jù)的存儲與日志的處理

在存儲數(shù)據(jù)時則采用了SSM框架。SSM框架的核心是web.xml文件,用來初始化Spring核心,配置攔截器,配置過濾器。Jdbc.properties配置連接數(shù)據(jù)庫的各種信息。applucationContext.xml加載jdbc.properties,連接數(shù)據(jù)庫,掃描包下面的注解,配置映射對象,配置聲明式事務(wù)管理器,視圖解析,json轉(zhuǎn)換器等功能。自定義Apache Log4j組件對日志進行格式化處理與輸出,同時還需要在前臺設(shè)置過濾器來對輸出的日志數(shù)據(jù)進行過濾。Apache Log4j框架的核心的log4j.properties,其通過使用Log4j的三個主要組件:Logger,Appender和Layout來分別完成客戶端代碼調(diào)用,日志的輸出以及日志信息格式化[5]。

3.4 實驗數(shù)據(jù)

本程序獲得的數(shù)據(jù):

4 結(jié)束語

本程序的主要功能就是為了測試網(wǎng)絡(luò)中存在的時延。雖然隨著技術(shù)的更新?lián)Q代,時延越來越小,不再像以前一樣不能忍受,但是時延是不可避免的,無論是打游戲時的卡頓還是看視頻時的加載,都會影響我們的主觀感受和應(yīng)用的性能。在理想情況下,希望時延能在現(xiàn)有的技術(shù)下達到最小,改善用戶的體驗,提高應(yīng)用的性能。本程序通過一系列的框架和算法實現(xiàn)初步達到了測試時延的目的。通過運行本程序可以獲得一系列相關(guān)的時延數(shù)據(jù)。通過分析實驗數(shù)據(jù),得到一般性結(jié)論,再反復(fù)實驗進行驗證,對改善網(wǎng)絡(luò)時延,提高應(yīng)用性能具有重要意義。

參考文獻:

[1] James F.Kurous,Keith W.Ross.Computer Networking A Top-Down Approach[M].陳鳴,譯.7版. 北京:機械工業(yè)出版社,2018.

[2] 蘇鵬飛,徐松毅,于曉磊.基于WOA-LSTM的窄帶通信網(wǎng)網(wǎng)絡(luò)時延預(yù)測算法[J].河北工業(yè)科技,2022,39(1):9-15.

[3] 張民忠.Apache Mina中TCP服務(wù)器集群功能擴展研究[D].武漢:武漢理工大學(xué),2018.

[4] 周明華,楊海云,吳鑫哲,等.國密算法JSSE密碼套件的設(shè)計與實現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2019(7):34-36.

[5] 夏文忠.Log4J在學(xué)生管理系統(tǒng)中的開發(fā)與應(yīng)用[J].電腦編程技巧與維護,2009(10):34-36.

【通聯(lián)編輯:梁書】

主站蜘蛛池模板: 国产91导航| 国产精品视频白浆免费视频| 粉嫩国产白浆在线观看| 国产精品原创不卡在线| 亚洲国产成人无码AV在线影院L | 91精品国产91久无码网站| 国产美女在线观看| 日韩国产综合精选| 国产区免费| 色悠久久久| 午夜视频www| 国产91线观看| 亚洲精品福利视频| 亚洲精品国产综合99久久夜夜嗨| 亚洲91精品视频| 啪啪国产视频| 国产免费观看av大片的网站| 日韩不卡高清视频| 亚洲中字无码AV电影在线观看| 无码一区中文字幕| 在线免费观看AV| 欧美激情首页| 欧美亚洲一二三区| 国产成人精品午夜视频'| 欧美亚洲国产精品第一页| 国产自在线播放| 欧美日韩国产一级| 日本色综合网| Aⅴ无码专区在线观看| 婷婷色一区二区三区| 亚洲AV无码乱码在线观看代蜜桃| 波多野结衣第一页| 色有码无码视频| 在线观看91精品国产剧情免费| 欧美.成人.综合在线| 99久久精品无码专区免费| 77777亚洲午夜久久多人| 在线观看热码亚洲av每日更新| 日韩黄色大片免费看| 特级毛片免费视频| 天天躁夜夜躁狠狠躁图片| 91色爱欧美精品www| 精品一區二區久久久久久久網站| 日韩毛片在线视频| 宅男噜噜噜66国产在线观看| 在线观看国产黄色| 呦女亚洲一区精品| 久久久久久久蜜桃| 日本黄色a视频| 一级一毛片a级毛片| 成人福利视频网| 亚洲伦理一区二区| jizz国产在线| 久久精品亚洲专区| 2019国产在线| 欧美在线天堂| 少妇精品网站| 无码人中文字幕| www.狠狠| 91久久偷偷做嫩草影院免费看| 国产手机在线小视频免费观看| 国产Av无码精品色午夜| 午夜激情福利视频| 国产日韩av在线播放| 久久网综合| 久久黄色视频影| 久久天天躁狠狠躁夜夜2020一| 成人av专区精品无码国产| 欧美.成人.综合在线| 亚洲愉拍一区二区精品| 18禁色诱爆乳网站| 亚洲精品无码人妻无码| 免费啪啪网址| 91精品国产91欠久久久久| 国产第一色| 二级特黄绝大片免费视频大片| 天堂va亚洲va欧美va国产| 91小视频在线观看免费版高清| 日韩欧美国产精品| 精品国产中文一级毛片在线看| 久久综合色88| 久久香蕉国产线看观看亚洲片|