JASPER
(Java Симулатор на протоколи за едукација и истражување)

http://www.cs.stir.ac.uk/~kjt/software/comms/jasper.html

Видете ја страната за симнување за да го добиете овој програм

Опис

Овој симулатор на протокол овозможува:

  • Можност за интерактивно и графичко симулирање на широк спектар на комуникациски протоколи
  • Претходно дефинирани симулации на различни добро познати протоколи:
    • ABP (Alternating Bit Protocol)
    • ABRA (Abracadabra Protocol)
    • BOOTP (Boot Protocol)
    • HTTP (HyperText Transfer Protocol)
    • IP (Internet Protocol)
    • SMTP (Simple Mail Transfer Protocol)
    • SWP (Sliding Window Protocol, 3 и 5 column layout)
    • TCP (Transmission Control Protocol)
    • TFTP (Trivial File Transfer Protocol)
    • UDP (User Datagram Protocol)
  • Рамка за креирање нови симулации на протоколи

Дополнителни симулации биле креирани под договор на Пирсон Едукација за Податочни и Компјутерски Комуникации од страна на Вилијам Сталингс. Овие не се достапни во јавната дистрибуција на Jasper, но се достапни преку веб страната на Пирсон (на база на претплата).

Можете веднаш да ги испробане онлајн симулациите за да добиете осет за што може да прави симулаторот. Вашиот веб прелистувач ќе треба да биде конфигуриран за да може да се пуштат Јаva 1.5 делови и (идеално) JavaScript.

Симулаторот е напишан во Java, па може да биде користен на скоро секоја платформа со веб прелистувач и/или Java околина.

Инсталација

Зебележете дека онлајн и претходно вградениот код бил компилиран користејќи JKD 1.5. Исто така ќе компилира и финкционира користејќи (да речеме) JDK 1.6.

Симулаторот е овозможен како Zip архива. Симулаторот се пренесува во фолдер наречен jasper-N.N според бројот на верзијата. Можете да го преименувате овој фолдер во jasper за поедноставност. Дистрибуцијата содржи:

build.bat, clean.bat

MS DOS групни скрипти за да се раководи со кодот

build.xml

Ant вграден фајл за да се раководи со кодот

docs

основна документација

html

именик за веб страни и симулирана JAR архива

source

именици за Java код (протокол, симулатор, поддршка)

Симулација како мини апликација

Симулаторот може да биде користен на симнатите датотеки со назначување на прелистувач на /jasper/html (или можно е…jasper/html/index.html). Ова претпоставува дека сте го преименувале фолдерот на дистрибуција во jasper. Ова ќе ја вклучи главната страна, со генерални инструкции и листа на протоколи кои можат да бидат симулирани. Вашиот веб прелистувач ќе треба да биде подесен за да функционира со Java 1.5.мини апликации и (идеално) JavaScript. Алтернативно, користете мини апликација за гледање на фајловите (иако JavaScript за местење на параметрите за протокол нема да функционира).

Повеќето симулации се во триколонски формат: 2 протоколни ентитети (испраќач/примач или А/Б) и комуникациски медиум (линк или мрежа). Неколку симулации ги додаваат испраќачките и примачките корисници (апликации) во надворешните колони. Овој формат е корисен за покажување на тоа што го гледаат корисниците; вообичаено ова е само дел од тоа што се случува во протоколот.

Во веб прелистувачот, изберете акција со кликање на листата на долниот десен корнер од дијаграмот. Акции се активности како корисник да испрати податочна порака или  медиумот да достави протоколна порака. Вие сте во целосна контрола на симулацијата. На пример, може да одлучите кога да ја пратите пораката, дали да признаете порака, и дали да доставите или да тргнете порака од медиумот. Бидејки симулацијата не функционира во реално време, тајм-аут е можен веднаш откако одредена порака е испратена.

Последната акција во дијаграмот е прикажана во црвено. Исто така, различни протоколни коментари можат да бидат забележани во дијаграмот, пр. дека тајм-аут се случил или дека некоја порака била игнорирана.

Ако направите грешка, или само сакате да ја следите симулацијата, тогаш кликнете Undo. Исто така, може да се вратите назад колку чекори сакате, се до почетокот на симулацијата. Кликнувањето на Redo повторно ќе го изведе последниот вратен чекор. Clear ќе ја рестартира симулацијата со моменталните протоколни параметри. Ако кликнете на Run, симулаторот ќе се пушти автоматски, правејќи случајни избори наместо вас. Ако не сте сигурни со што да експериментирате, ова е лесен начин да се види протоколот во функција. Додека ова се случува, копчето Run се менува во Stop. Кликнете на Stop за да го вратите симулаторот под корисничка контрола. Може да продолжите од оваа точка ако вие самите сте ги направиле сите автоматски избори.

Копчињата PrintLoad и Save се оневозможени бидејќи симулациите функционираат како делчиња. Ако сакате испринтана копија од симулацијата, позиционирајте го скрол барот во симулационитот панел на интересна точка и испринтајте ја целата веб страна.

Некои симулации имаат поврзани протоколни параметри. За да ги промените стандардните кои се прикажани, внесете нови вредности и кликнете Change Values. Во некои случаи, ова ќе ја принуди симулацијата да се рестартира. Следното е скриншот од TCP симулацијата, која ги покажува протоколните параметри и главните симулациони контроли.

Симулацијата како Апликација

 

Пуштање на протоколната симулација како апликација дава пристап до PrintLoad и Save копчињата.

Print дава испринтана копија од целото симулационо сценарио. Забележете дека индивидуалните страни не можат да бидат слектирани за принтање. Ширината на испечатокот е направена според ширината на прозорчето на екранот. Константите winWidth и winHeight во ProtocolSimulator ја дефинираат иницијалната големина на прозорчето. ConstantmaxHeight во TimeSequenceDiagram ја дефинира вертикалната големина на испринтаните страни. Моменталните големини се соодветни за А4 формат на страни. Доколку е потребно, сменете ги во (да речеме) формат на УС писмо.

Load лоадира фајл за симулационо сценарио (со име кое завршува на .scn); ова мора да биде за истиот протокол кој моментално го симулирате. Го заменува моменталното симулационо сценарио (доколку имаа некое). Save ја зачувува моменталната симулација како сценарио фајл (со име кое завршува на .scn). Ако сте авантуристички настроени, можете да креирате и именувате ваши лични сценарија користејќи уредувач на текст.

Кога симулаторот е пуштен како апликација, задолжително името на протоколот следи по симулационата класа. Протоколни параметри може да бидат дадени ако се побарани; протоколите имаат стандардни параметри за овие. Претпоставете дека симулаторот бил граден во, и треба да се почнува од најгорното ниво на Jasper. Следното ќе го активира ТСР во клиент-сервер модели, со големини на прозорчиња со пораки различни од стандардните:    java -cp html/ProtocolSimulator.jar simulator.ProtocolSimulator TCP/cs windowSizeA=500 windowSizeB=300

Развој

Комплетниот извор на симулаторот е овозможен. (Повеќето фајлови најверојатно ќе имаат Unix End-Of-Line. Би било преферирано кодот да биде повторно изграден користејќи го Ant build.xml фајлот за градење. ant -p ќе испечати помошни информации за градечките цели. ant simulator ќе го обнови ProtocolSimulator.jar во html именикот. ant clean ќр ги отстрани сите компилирани класовни фајлови и поддржувачки фајлови, но ќе го зачува JAR фајлот. ant spotless ќе го отстрани дури и ова.

Ако немате Ant но користите MS DOS/Windows, можете наместо тоа да ги користите групните фајлови build.bat и clean.bat. Овие ги изведуваат основните задачи на креирање на симулациониот ЈАR фајл и ги средува изградените фајлови.

За да модифицирате постоечка протокол симулација или да напишете нова ќе ви треба знаење на рамката на симулацијата. Погледнете го артиклот Интерактивен симулатор на визуелен протокол  за детали поврзани со ова и проширен пример за тоа како да развиете симулација. Откако рамката е сфатена, едноставна симулација може да биде развиена во еден ден; комплексни протоколи може да одземат и до недела-две за да се развијат.

Претпоставете дека сакате да развиете нова симулација на протоколот ЕХР (‘Пример Протокол’). Ќе треба да напишете ЕХР.java за да ги прикажете неколкуте ентитети во протоколот. За едноставен протокол, потоа би требало да напишете EXPSender.java и EXPReceiver.java за да го дефинирате односот на испраќање или примање на протоколен ентитет. Покомплексни протоколи може да вклучуваат одделни ентитети за да се справи со услужниот интерефејс и протоколниот ентитет. Исто така може да биде потребно да се дефинираат форматите на протоколните пораки и варијација на основниот Medium за да се поврзат овие.

Запомнете дека голем дел од развојната работа беше изработена од студенти, па нивоата на коментари во кодот на некои места е ограничено. АВР симулацијата е наједноставна од протоколите и е добро место за почеток. TFTP симулацијата е најдобро коментираната и најдобро објаснета од сите протоколи. Ги илустрира скоро сите клучни поенти во развој на една симулација.

Лиценца

Овој програм е бесплатен софтвер. Може да го дистрибуирате и/или да го модифицирате под GNU Генералната Јавна Лиценца како што е објавена од Бесплатната Софтвер Фондација – било да е верзија 2 од Лиценцата, или (на ваш избор) било која подоцнежна верзија.

Овој програм е дистрибуиран во надеж дека ќе биде корисен, но без никаква гаранција, без ниту ни гаранцијата за трговија или фитнес за посебна цел. Видете ја GNU Генералната Јавна Лиценца за повеќе детали.

Може да го редистрибуирате овој софтвер доколку го зачувате овој README фајл. Извештаи за грешки (багови) треба да бидат испратени на Кен Тарнер, кој исто така би ценел ако прими било какви корекции или кодови од нови протоколи.

Признавања

Ијен А. Робин превзема најголем дел од развојот за неговиот Мастер проект под надзор на Кен Тарнер. Пол Џонсон и Кенет А. Вајт допринесоо за развојот на некои од симулациите за нивните Мастер проекти

Историја

  • Верзија0: Приватна внатрешна верзија, Ијен Робин, 1ви Септември 1999
  • Верзија 1: Приватна внатрешна верзија, Кен Тарнер, 22ри Декември 2000
  • Верзија2: Приватна внатрешна верзија, Кен Тарнер, 5ти Март 2001
  • Верзија3: Прво јавно пуштање, Кен Тарнер, 6ти Јуни 2001
  • Верзија 4: Генерално ажурирање, Кен Тарнер, 9ти Март 2006:
    • HTML фајлови ажурирани да бидат XHTML-согласни.
    • Изворот ажуриран за JDK 1.5, и Swing графика е користена. Забележете дека JDK 1.5 или подоцнежна верзија е сега барана за да се ре-компилира изворот или да се употреби кодот.
    • Највисоко ниво на структура на именикот ревидиран за да има source, build и docs директориуми.
    • Makefile заменет од Ant build фајл. Само build и clean групни фајлови се задржани. [Благодарност до д-р П.Џ.Б.Кинг, Хериот-Ват Универзитет, за доприносот во ова.]
    • Празни линии се игнорирани во сценарио фајлови.
    • ABP и SWP3 медиумска контрола е сега понудена низ пераметар (достава/загуба, само достава, автоматски). Би било можно во принципиелна употреба со други протоколу, но има смисла само во некои случаеви.  [Благодарност до д-р П.Џ.Б.Кинг, Хериот-Ват Универзитет, за доприносот во ова.]
    • SMTP протоколната порака беше ситно преименувана за конзистентност со RFC.
    • TCP Стандардна големина на прозорче е обновена при рестартирање. Признавања сега се пратени при примањето на податоци, а не кога прозорчето за примање станува преполно. Некои комплексни промени беа предизвикани од ова. Доставки на податоци во тек сега се праќаат на корисникот пред да бидат затворени. Отварање додека се затвара друго прозорче  сега води до затварање кога е целосно заторено прозорчето, а не веднаш. Дуплицирање на SYN плус ACK сега прекинува било какви преноси додека е во акција Established.
  • Верзија5: Доградувања за нови протоколи, Кен Тарнер, 11ти Февруари 2011:
    • Најголемиот дел нова работа беше додадаток на нови симулации (CSMA/CD, Multicast, Multiplexing, Protocol Stack, TCP Slow Start). Како што оваа работа беше превземена под договор за Пирсон Едукација, не е јавно достапна. Но, други подобрувања направени во оваа верзија се јавно достапни.
    • Повеќе коментари, особено JavaDoc, беа додадени на многу фајлови (кои исто така беа реформатирани).
    • Повеќе детални проверки на вредности беа додадени во JavaScript во HTML фајлови. Додатно, HTML фајловите беа проверени и реформатирани
    • Класата TimeSequenceDiagram беше променета. Вертикален простор сега е додаден пред DELIVER протоколен настан, и исто така пред COMMENT (иако ова не е прво). TRAVERSE протоколен настан беше додаден за да се справ со случаеви каде што цртата преминува преку повеќе колони. Кореспондирачка TraverseTransmission класа беше додадена.
    • Medium класата беше проширена со две isEmpty методи: еден за да се провери дали медиумот е целосно празен од пораки, и еден за да се провери дали медиумот е празен од пораки од одреден извор.
    • TCP класите беа проширени за да ја поддржуваат варијантата на спор почеток (ТСР/ѕѕ). Додатно, некои проблеми со ТСР беа поправени (чудни ситуации кога протоколот не закрепнува кога се обидувате да го затворите). TIME_WAIT состојбата е сега користена за да се справи со овие ситуации, вклучувајќи и друга ненадејна терминација кога FIN е добиен во невообичаени ситуации.
    • A Protocol може сега да ги имплементира методите getRandNumbers и setRandomNumbers (по стандарди, овие не прават ништо корисно). Ако овие методи се воведени, листа на случајни броеви е додадена на насловот на сценариото кога сценариото е зачувано, и ова е вратено кога сценариото ќе се отвори. Ова е за протоколи како СЅМА кои генерираат нивни сопствени случајни броеви (наспроти медиуми што прават така како во претходните верзии). Насловната линија е сега во формат како “Jasper CSMA 0.3,0.01,0.891”. Ако случајни броеви не се презентирани следејќи го типот на протокол (како во случајот со претходните сценарио фајлови), тогаш никаква акција не се превзема.

Log in with your credentials

Forgot your details?

ARE YOU READY? GET IT NOW!
Increase more than 500% of Email Subscribers!
Your Information will never be shared with any third party.
Get a Free Quote Now
Success! We'll be in touch.
Get a Quick Quote
Get a Free Quote Now
Get a new copy of this list each time it's updated.
(Don't worry, we hate spam too)
We'll Let You Know When We Update This List.
Wait! We update this list regularly.
Subscribe to get notified when we add new shippers.
Don't worry, we hate spam too.
Get a new copy of this list each time it's updated.
(Don't worry, we hate spam too)
We'll Let You Know When We Update This List.
GET THE LATEST UPDATES
Wait a minute! Before you go, complete this form so we can let you know when this list is updated.
Don't worry, we hate spam too.
Success! We'll Let You Know When We Update This List.
Get Notified When This List Is Updated
Wait a minute! We update this list on a regular basis. Do you want to get notified as soon as changes are made?
* Don't worry, we hate spam too.
Form submitted, we'll let you know.