Förstå fjärrskrivbordsprotokollet (RDP)

I den här artikeln beskrivs fjärrskrivbordsprotokollet (RDP) som används för kommunikation mellan terminalservern och terminalserverklienten. RDP kapslas in och krypteras i TCP.

Gäller för: Windows Server 2012 R2
Original-KB-nummer: 186607

Sammanfattning

RDP baseras på och är en förlängning av T-120-serien med protokollstandarder. Ett protokoll med flera kanaler möjliggör separata virtuella kanaler för att bära följande information:

  • presentationsdata
  • seriell enhetskommunikation
  • licensinformation
  • högt krypterade data, till exempel tangentbord, musaktivitet

RDP är en förlängning av kärnprotokollet T.Share. Flera andra funktioner behålls som en del av RDP, till exempel de arkitektoniska funktioner som krävs för att stödja MultiPoint (flerapartssessioner). Dataleverans med MultiPoint gör att data från ett program kan levereras i realtid till flera parter, till exempel virtuella whiteboards. Det krävs inte att samma data skickas till varje session individuellt.

I den här första versionen av Windows Terminal Server koncentrerar vi oss på att tillhandahålla tillförlitlig och snabb punkt-till-punkt-kommunikation (en session). Endast en datakanal används i den första versionen av Terminal Server 4.0. RDP:s flexibilitet ger dock gott om utrymme för funktioner i framtida produkter.

En anledning till att Microsoft har valt att implementera RDP i anslutningssyfte i Windows NT Terminal Server är att det ger en utökningsbar bas för att skapa många fler funktioner. RDP tillhandahåller 64 000 separata kanaler för dataöverföring. Aktuella överföringsaktiviteter använder dock bara en enda kanal (för tangentbords-, mus- och presentationsdata).

RDP är utformat för att stödja många olika typer av nätverkstopologier, till exempel ISDN, POTS. RDP är också utformat för att stödja många LAN-protokoll, till exempel IPX, NetBIOS, TCP/IP. Den aktuella versionen av RDP körs bara över TCP/IP. Med kundfeedback kan annan protokollsupport läggas till i framtida versioner.

Aktiviteten som används för att skicka och ta emot data via RDP-stacken är i stort sett densamma som OSI-modellstandarderna på sju lager för vanliga LAN-nätverk idag. Data från ett program eller en tjänst som ska överföras skickas via protokollstackarna. De delas upp, dirigeras till en kanal (via MCS), krypteras, omsluts, ramas in, paketeras på nätverksprotokollet och adresseras och skickas slutligen via kabeln till klienten. Returnerade data fungerar på samma sätt men i omvänd ordning. Paketet tas bort från sin adress och packas sedan upp, dekrypteras och så vidare. Slutligen presenteras data för programmet för användning. Viktiga delar av protokollstackens ändringar sker mellan det fjärde och sjunde skiktet, där data är:

  • krypterade
  • insvepta
  • inramade
  • dirigerade till en kanal
  • prioriterade

En av de viktigaste punkterna för programutvecklare är att Microsoft i användningen av RDP har abstraherat bort komplexiteten i hanteringen av protokollstacken. Det gör att de kan skriva rena, väldesignade, välstrukturerade 32-bitarsprogram. Sedan tar RDP-stacken som implementeras av Terminal Server och dess klientanslutningar hand om resten.

Mer information om hur program interagerar på Terminal Server och vad du bör veta när du utvecklar program för en Windows Terminal Server-infrastruktur finns i följande faktablad:
Optimera program för Windows NT Server 4.0, Terminal Server Edition

Fyra komponenter som är värda att diskutera i RDP-stackinstansen är:

  • Multipoint Communication Service (MCSMUX)
  • Generic Conference Control (GCC)
  • Wdtshare.sys
  • Tdtcp.sys

MCSmux och GCC ingår i International Telecommunication Union (ITU) T.120-familjen. MCS består av två standarder:

  • T.122: Den definierar MultiPoint-tjänster
  • T.125: Den anger dataöverföringsprotokollet

MCSMux-kontroller:

  • kanaltilldelning genom att multiplexera data till fördefinierade virtuella kanaler i protokollet
  • prioritetsnivåer
  • segmentering av data som skickas

Den abstraherar i stort sett flera RDP-stackar till en enda entitet, från perspektivet i GCC. GCC ansvarar för hanteringen av dessa kanaler. Med GCC kan du skapa och ta bort sessionsanslutningar och styrresurser som tillhandahålls av MCS. Varje Terminal Server-protokoll (för närvarande stöds endast RDP och Citrix ICA) har en protokollstackinstans som läses in (en lyssnarstack väntar på en anslutningsbegäran). Terminal Server-drivrutinen samordnar och hanterar RDP-protokollaktiviteten. Den består av mindre komponenter:

  • en RDP-drivrutin (Wdtshare.sys) för överföring av användargränssnitt, komprimering, kryptering, inramning och så vidare.
  • en transportdrivrutin (Tdtcp.sys) för att paketera protokollet till det underliggande nätverksprotokollet, TCP/IP.

RDP utvecklades till att vara helt oberoende av den underliggande transportstacken, i det här fallet TCP/IP. Det innebär att vi kan lägga till andra transportdrivrutiner för andra nätverksprotokoll när kunderna behöver dem, med små eller inga betydande ändringar i de grundläggande delarna av protokollet. De är viktiga element för prestanda och utökningsbarhet för RDP i nätverket.