{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"cs/protocol","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/cs/protocol/","da":"https://cmaintz.github.io/tech-atlas/da/terms/cs/protocol/"},"term":{"en":"Protocol","da":"Protokol"},"aka":{"en":["network protocol"],"da":["netværksprotokol"]},"domain":["cs"],"cluster":"networking","layer":"network","status":"current","era":1967,"summary":{"en":"An agreed set of rules for how devices on a network format, send and answer messages.","da":"Et aftalt sæt regler for, hvordan enheder på et netværk opbygger, sender og besvarer beskeder."},"body":{"formal":{"en":"A specification of the format and order of messages exchanged between two or more parties, and of the actions each party takes when a message is sent or received.","da":"En beskrivelse af formatet og rækkefølgen af de beskeder, der udveksles mellem to eller flere parter, og af hvad hver part gør, når en besked sendes eller modtages."},"plain":{"en":"Like the rules everyone follows on a phone call - you say hello, wait for an answer, take turns and say goodbye before hanging up.","da":"Som de regler, alle følger i en telefonsamtale - man siger hej, venter på svar, skiftes til at tale og siger farvel, før man lægger på."},"inPractice":{"en":"A region's laboratory machines and its patient record system come from different suppliers, yet exchange test results because both follow the same agreed protocol for health data.","da":"En regions laboratorieudstyr og patientjournalsystem kommer fra forskellige leverandører, men kan udveksle prøvesvar, fordi begge følger den samme aftalte protokol for sundhedsdata."},"whyItMatters":{"en":"Many attacks work by bending the rules - sending messages a protocol never expected, or using an old protocol that lacks encryption - so knowing which protocols run on a network shows where it can be attacked.","da":"Mange angreb virker ved at bøje reglerne - ved at sende beskeder, protokollen ikke forventer, eller ved at udnytte en gammel protokol uden kryptering - så viden om, hvilke protokoller der kører på et netværk, viser, hvor det kan angribes."}},"deepDive":{"en":"A protocol specification has three parts: syntax (the exact format of each message), semantics (what each field means and what the receiver must do) and timing or sequencing (which messages may follow which). The sequencing is often defined as a finite state machine; the TCP connection states from LISTEN and SYN-SENT to TIME-WAIT in RFC 9293 are the classic example. Encodings range from fixed binary fields (IP, TCP), through type-length-value structures (TLS extensions, ASN.1 DER in X.509 certificates), to text protocols such as SMTP and HTTP/1.1, whose grammar is written in ABNF (RFC 5234). IETF specifications use the BCP 14 keywords MUST, SHOULD and MAY (RFC 2119 and RFC 8174) to separate hard requirements from recommendations, and a surprising number of interoperability and security problems live in the gap between SHOULD and MUST.\n\nProtocols are layered, each layer using the service of the one below and encapsulating its data. The OSI reference model (ISO/IEC 7498-1) has seven layers; the internet's own model, as described in RFC 1122, has four: link, internet, transport and application. Standards come from different bodies: the IETF publishes RFCs for internet protocols, IEEE defines link layers such as 802.3 and 802.11, W3C and WHATWG cover web platform standards, and domain bodies such as HL7 define health-data standards like FHIR, the kind of shared protocol the laboratory example relies on. Protocols can be stateful, like TCP, or stateless, like HTTP, where applications rebuild state with cookies or tokens.\n\nJon Postel's robustness principle, \"be conservative in what you send, be liberal in what you accept\" (RFC 761, later RFC 1122), helped early interoperability but is now viewed critically. RFC 9413 (2023) argues that tolerating deviations lets bugs become entrenched and creates parser differentials that attackers exploit. A related problem is ossification: middleboxes that reject anything unfamiliar make protocols hard to evolve. TLS 1.3 therefore presents itself on the wire much like a TLS 1.2 session resumption, and GREASE (RFC 8701) makes clients send random reserved values so that extension points stay usable.\n\nMany security failures are protocol failures. Parsers that trust a length field produce bugs such as Heartbleed (2014, in OpenSSL's TLS heartbeat extension); two components that parse the same message differently allow HTTP request smuggling; version negotiation without downgrade protection enabled attacks such as POODLE against SSL 3.0; and legacy cleartext protocols such as Telnet, FTP, SNMPv1/v2c with community strings, or LDAP simple binds without TLS expose credentials to anyone on the path. Defences include fuzzing protocol implementations, formally analysing designs (TLS 1.3 was analysed with tools such as Tamarin and ProVerif during standardisation), inventorying which protocols actually run on the network from flow data, and disabling obsolete versions.","da":"En protokolspecifikation har tre dele: syntaks (det præcise format for hver besked), semantik (hvad hvert felt betyder, og hvad modtageren skal gøre) og timing eller rækkefølge (hvilke beskeder der må følge hvilke). Rækkefølgen defineres ofte som en endelig tilstandsmaskine; TCP-forbindelsens tilstande fra LISTEN og SYN-SENT til TIME-WAIT i RFC 9293 er det klassiske eksempel. Kodningen spænder fra faste binære felter (IP, TCP) over type-længde-værdi-strukturer (TLS-udvidelser, ASN.1 DER i X.509-certifikater) til tekstprotokoller som SMTP og HTTP/1.1, hvis grammatik skrives i ABNF (RFC 5234). IETF-specifikationer bruger BCP 14-nøgleordene MUST, SHOULD og MAY (RFC 2119 og RFC 8174) til at skelne mellem ufravigelige krav og anbefalinger, og et overraskende antal problemer med interoperabilitet og sikkerhed opstår netop i mellemrummet mellem SHOULD og MUST.\n\nProtokoller er lagdelte: Hvert lag bruger tjenesten fra laget nedenunder og indkapsler sine data i det. OSI-referencemodellen (ISO/IEC 7498-1) har syv lag; internettets egen model, som beskrevet i RFC 1122, har fire: link, internet, transport og applikation. Standarderne kommer fra forskellige organer: IETF udgiver RFC'er for internetprotokoller, IEEE definerer linklag som 802.3 og 802.11, W3C og WHATWG dækker webplatformens standarder, og fagspecifikke organer som HL7 definerer standarder for sundhedsdata som FHIR - den slags fælles protokol, eksemplet med laboratoriet bygger på. Protokoller kan være tilstandsfulde som TCP eller tilstandsløse som HTTP, hvor applikationerne genskaber tilstand med cookies eller tokens.\n\nJon Postels robusthedsprincip, \"vær konservativ i det, du sender, og liberal i det, du accepterer\" (RFC 761, senere RFC 1122), hjalp den tidlige interoperabilitet, men ses i dag kritisk. RFC 9413 (2023) argumenterer for, at tolerance over for afvigelser lader fejl slå rod og skaber forskelle i fortolkningen, som angribere udnytter. Et beslægtet problem er forkalkning (ossification): Mellemliggende udstyr, der afviser alt ukendt, gør det svært at videreudvikle protokoller. TLS 1.3 fremstår derfor på ledningen meget som en genoptaget TLS 1.2-session, og GREASE (RFC 8701) får klienter til at sende tilfældige reserverede værdier, så udvidelsespunkterne forbliver brugbare.\n\nMange sikkerhedsfejl er protokolfejl. Parsere, der stoler på et længdefelt, giver fejl som Heartbleed (2014, i OpenSSL's TLS heartbeat-udvidelse); to komponenter, der fortolker samme besked forskelligt, muliggør HTTP request smuggling; versionsforhandling uden beskyttelse mod nedgradering muliggjorde angreb som POODLE mod SSL 3.0; og gamle klartekstprotokoller som Telnet, FTP, SNMPv1/v2c med community strings eller LDAP simple bind uden TLS afslører legitimationsoplysninger for alle på vejen. Forsvaret omfatter fuzzing af protokolimplementeringer, formel analyse af designet (TLS 1.3 blev analyseret med værktøjer som Tamarin og ProVerif under standardiseringen), kortlægning af, hvilke protokoller der faktisk kører på netværket, ud fra flow-data, og deaktivering af forældede versioner."},"edges":[{"type":"requires","to":"cs/network","confidence":"high","strength":"normal"}],"depth":1,"sources":[{"title":"Kurose & Ross, Computer Networking: A Top-Down Approach","tier":"textbook"}],"draft":true}