We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Sans IO: safe and testable network protocols

00:00

Formal Metadata

Title
Sans IO: safe and testable network protocols
Subtitle
Building safe, deterministic and testable network protocols by removing IO
Title of Series
Number of Parts
561
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Implementing network protocols is a hard task, especially considering the support of conflicting implementations, or long term maintenance. And it does not help that testing them often requires complex client or server setups. By removing IO from the equation, and instead working directly with buffers, we’ll see that testing instantly becomes easier to setup, the core implementation becomes completely deterministic, and the protocol gets more reusable. This talk draws heavily from experience implementing protocols such as HTTP or AMQP. It will show how to build protocols in such a way, using the nom parsing library, cookie-factory serialization library, and a new state machine development library. And we will see how to reuse the resulting protocols, by swapping out the underlying transport (TCP, various TLS libraries, unix sockets…) or wrapping it in a nice futures based API.
Computer networkCommunications protocolBuildingDeterminismSynchronizationStreaming mediaProcess (computing)Thread (computing)System programmingOperations researchInterface (computing)Mobile appEvent horizonSocket-SchnittstelleNetwork socketData bufferError messageCodeEmulatorRun time (program lifecycle phase)Function (mathematics)Vertex (graph theory)Server (computing)Network topologyData structureClient (computing)Dependent and independent variablesString (computer science)SoftwareWeb 2.0Formal languageInterface (computing)Multiplication signPhysical systemBitCodeWechselseitiger AusschlussFehlererkennungOperating systemFunctional (mathematics)Goodness of fitScheduling (computing)Kernel (computing)System callCommunications protocolConnected spaceServer (computing)Thread (computing)Operator (mathematics)Process (computing)Queue (abstract data type)Event horizonRun time (program lifecycle phase)Reading (process)Network socketCartesian coordinate systemProxy serverGame controllerComputing platformSocket-SchnittstelleLie groupConcurrency (computer science)Buffer solutionCombinational logicLatent heatData structureView (database)Video gameDigital electronicsPerturbation theoryCellular automatonRight angleDataflowSingle-precision floating-point formatPrisoner's dilemmaState of matterWeightLevel (video gaming)Point (geometry)Directed graphInformationBus (computing)Subject indexingMaterialization (paranormal)Bridging (networking)Computer animation
Query languageCloningSoftware testingExecution unitLevel (video gaming)Default (computer science)Error messageSurjective functionAbstractionSynchronizationImplementationCommunications protocolReverse engineeringProxy serverClient (computing)Library (computing)Android (robot)Virtual machineComputer networkMessage passingSoftware frameworkoutputDeterminismState of matterCodeComputer programmingCommunications protocolCASE <Informatik>ImplementationFluid staticsType theory2 (number)Data structureProjective planeMessage passingComputing platformSoftwareServer (computing)State of matterEvent horizonSoftware developerNetwork socketLibrary (computing)BitLastteilungSystem callTerm (mathematics)Matching (graph theory)Random number generationDirect numerical simulationCuboidPlastikkarteCodeSoftware frameworkSoftware testingoutputFunctional (mathematics)Hydraulic jumpLevel (video gaming)Multiplication signConnectivity (graph theory)Proxy serverReverse engineeringCartesian coordinate systemClient (computing)Game controllerMereologyFinite-state machineDependent and independent variablesExecution unitDatabaseFunction (mathematics)CompilerRun time (program lifecycle phase)InformationAdditionTape driveNumberPoint (geometry)Single-precision floating-point formatWeightTable (information)Directed graphGoodness of fitUnit testingNetwork topologyArithmetic meanResultantProgrammer (hardware)Observational studyCondition numberComputer animation
Communications protocolVirtual machineFunction (mathematics)Message passingState of matterStreaming mediaTelephone number mappingData structureFinite-state machineError messageParsingParsingInterface (computing)EmailStrutLengthLine (geometry)String (computer science)LengthFinite-state machineState of matterLine (geometry)Error messageParsingInterface (computing)Server (computing)EmailPattern matchingMessage passingBitConnected spaceWeb browserEnumerated typeTelephone number mappingSoftwareFluid staticsCategory of beingComputer programmingNetwork socketPoint (geometry)Dynamical systemCodeRun time (program lifecycle phase)Data structureClient (computing)Buffer solutionRepresentation (politics)Thread (computing)Dependent and independent variablesCartesian coordinate systemConcurrency (computer science)Streaming mediaDataflowComplete metric spaceCommunications protocolFront and back endsBuildingImplementationContent (media)Virtual machineSet (mathematics)Distribution (mathematics)2 (number)Different (Kate Ryan album)Drop (liquid)Digital electronicsAreaProduct (business)Series (mathematics)Position operatorPattern languageInformationAdditionType theoryRight angleGodChainUniverse (mathematics)NumberLatent heatLevel (video gaming)Real-time operating systemEvent horizonProcess (computing)CASE <Informatik>Computer animation
Error messageStrutTelephone number mappingoutputGraph (mathematics)Execution unitSoftware testingBuffer solutionCodeSocket-SchnittstelleParsingPartial derivativeVirtual machineBuildingInterface (computing)Coma BerenicesParsingRevision controlHTTP cookieFactory (trading post)Loop (music)Event horizonImplementationCommunications protocolMessage passingGUI widgetFactory (trading post)Virtual machineMessage passingState of matterError messagePattern languageImplementationData structureCommunications protocolLengthEmailBitInformationBuildingCartesian coordinate systemCodeWritingBoilerplate (text)Telephone number mappingLevel (video gaming)Buffer solutionAttribute grammarView (database)Graph (mathematics)SoftwareActive contour modelRight angleHTTP cookieMereologyUnit testingEvent horizonServer (computing)CASE <Informatik>Combinational logicGroup actionParsingMacro (computer science)Set (mathematics)Procedural programmingLibrary (computing)ParsingType theoryFinite-state machineRevision controlResultantLoop (music)Line (geometry)Analytic continuationComputer programmingCondition numberForm (programming)Ultraviolet photoelectron spectroscopyIdeal (ethics)1 (number)Logic gateStreaming mediaMultiplication signAreaOnline helpSequencePosition operatorNumberAxiomPhase transitionComputer animation
BuildingLoop (music)Event horizonAlgebraic closureConvex hullCloningComputer configurationTask (computing)StrutState of matterError messageFrame problemCommunications protocolDeterminismVirtual machineFactory (trading post)Link (knot theory)BitLevel (video gaming)Computer programmingSet (mathematics)Regulärer Ausdruck <Textverarbeitung>SoftwareWrapper (data mining)Queue (abstract data type)Library (computing)Message passingToken ringEvent horizonFinite-state machinePhysical systemImplementationSocket-SchnittstelleHTTP cookieProjective planeLoop (music)WritingNormal (geometry)Communications protocolPoint (geometry)Network socketState of matterError messageDeclarative programmingBoilerplate (text)Server (computing)Game controllerFunction (mathematics)CodeKernel (computing)PlastikkarteAlgebraic closureMultiplication signProduct (business)File systemBuffer solutionReading (process)Data storage deviceVirtual machineData structureRight angleParsingRepetitionDigital electronicsFormal languageWorkstation <Musikinstrument>CausalitySystem callDot productMachine visionFunctional (mathematics)Reflection (mathematics)Drop (liquid)Game theoryBit rateRule of inferenceFactory (trading post)Analytic continuationGroup actionCAN busStreaming mediaOpen setBinary codeNumberFlow separationComputer animation
WindowDefault (computer science)Semiconductor memoryVirtual machineInformationImplementationLevel (video gaming)Finite-state machineCapability Maturity ModelCommunications protocolPoint (geometry)State of matterResultantPhysical lawCodeComputer animation
Computer animation
Transcript: English(auto-generated)