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

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

2022-04-02 03:18:49費東陽,王艷麗,王蒙恩,張書寧,孫智慧,張學良
電腦知識與技術(shù) 2022年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ò)時延便是導致卡頓的一個非常重要的因素。而很多同步應(yīng)用對網(wǎng)絡(luò)時延的要求是非常高的,網(wǎng)絡(luò)時延不穩(wěn)定可能會導致丟包從而使其不能使用。而且不同的服務(wù)類型在相同的延時下,給人的主觀感受也是不一樣的。例如,當視頻加載時,10s的初始化時延是能忍受的,但當我們即時通信時,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是當前在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框架通過代碼復用,功能封裝,極大地減少了代碼量。

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到過濾器鏈中的第一位置。目的負責管理數(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é)論,再反復實驗進行驗證,對改善網(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ò)時延預測算法[J].河北工業(yè)科技,2022,39(1):9-15.

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

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

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

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

主站蜘蛛池模板: 情侣午夜国产在线一区无码| 国产主播一区二区三区| 亚洲人成在线精品| 精品久久高清| 一级毛片免费高清视频| 91精品国产91久久久久久三级| 中文字幕久久亚洲一区| 久久这里只有精品国产99| 一级黄色片网| 99热国产这里只有精品无卡顿" | 午夜精品久久久久久久2023| 欧美激情视频在线观看一区| 精品国产Ⅴ无码大片在线观看81| 日本国产精品一区久久久| 精品久久国产综合精麻豆| 亚洲aⅴ天堂| 韩日免费小视频| 91精品视频在线播放| 香蕉视频在线精品| 99热线精品大全在线观看| 日韩不卡免费视频| 99re精彩视频| 国产精品久久国产精麻豆99网站| 91国内在线视频| 日本道综合一本久久久88| 亚欧成人无码AV在线播放| 亚洲狠狠婷婷综合久久久久| 免费视频在线2021入口| 五月天福利视频| 久久久无码人妻精品无码| 香蕉伊思人视频| 亚洲日本在线免费观看| 国产亚洲高清视频| 亚洲福利网址| 精品91视频| 日韩av无码DVD| 美女免费精品高清毛片在线视| 国产95在线 | 日韩毛片在线视频| 色综合久久综合网| 日韩无码黄色| 少妇精品久久久一区二区三区| 国产精品视频3p| 伊人久久青草青青综合| 亚洲视频无码| 麻豆AV网站免费进入| 亚洲国产系列| 国产免费a级片| 亚洲乱码精品久久久久..| 日本在线免费网站| 在线无码av一区二区三区| 国产视频欧美| 麻豆精品在线播放| 久久综合九九亚洲一区| 人人看人人鲁狠狠高清| 91成人在线免费观看| 狠狠色丁婷婷综合久久| aaa国产一级毛片| 日本a级免费| 日韩专区第一页| 亚洲AⅤ综合在线欧美一区| 91视频国产高清| 欧美日韩第三页| 国产成人a在线观看视频| 国产高颜值露脸在线观看| 狠狠色成人综合首页| 色亚洲激情综合精品无码视频| 亚洲成AV人手机在线观看网站| 狠狠色狠狠综合久久| 91精品免费久久久| 亚洲首页在线观看| 国产黄色爱视频| 国产精品v欧美| 一区二区三区国产精品视频| 欧美日韩精品一区二区在线线| 婷婷色中文| V一区无码内射国产| 久热re国产手机在线观看| 欧美黄色网站在线看| 亚洲天堂视频在线播放| 麻豆精品久久久久久久99蜜桃| 国产精品欧美日本韩免费一区二区三区不卡|