Maximal segmentstorlek

Den maximala segmentstorleken ( MSS ) är en parameter i alternativfältet i TCP -huvudet som anger den största mängden data, specificerad i byte , som en dator eller kommunikationsenhet kan ta emot i ett enda TCP-segment . Den räknar inte TCP-huvudet eller IP-huvudet (till skillnad från till exempel MTU för IP-datagram). IP -datagrammet som innehåller ett TCP-segment kan vara fristående i ett enda paket, eller så kan det rekonstrueras från flera fragmenterade delar; hur som helst, MSS-gränsen gäller den totala mängden data som finns i det slutliga, rekonstruerade TCP-segmentet.

För att undvika fragmentering i IP-lagret måste en värd ange den maximala segmentstorleken som lika med det största IP-datagram som värden kan hantera minus IP- och TCP-huvudstorlekarna. Därför IPv4- värdar för att kunna hantera en MSS på 536 oktetter (= 576 - 20 - 20) och IPv6 -värdar krävs för att kunna hantera en MSS på 1220 oktetter (= 1280 - 40 - 20).

Små MSS-värden kommer att minska eller eliminera IP-fragmentering men kommer att resultera i högre overhead .

Varje dataflödesriktning kan använda olika MSS.

För de flesta datoranvändare är MSS-alternativet etablerat av operativsystemet .

Standardvärde

Standard TCP Maximum Segment Size är 536. Om en värd vill ställa in den maximala segmentstorleken till ett annat värde än standard, specificeras den maximala segmentstorleken som ett TCP-alternativ, initialt i TCP SYN-paketet under TCP - handskakningen . Värdet kan inte ändras efter att anslutningen har upprättats.

Kommunikation mellan skikt

För att meddela MSS till den andra änden görs en mellanskiktskommunikation enligt följande:

  • Nätverksdrivrutinen (ND) eller gränssnittet bör känna till den maximala överföringsenheten (MTU) för det direktanslutna nätverket.
  • IP:n bör fråga nätverksdrivrutinen om den maximala överföringsenheten.
  • TCP:n bör fråga IP:n om maximal datagramdatastorlek (MDDS). Detta är MTU minus IP-huvudets längd (MDDS = MTU - IPHdrLen).
  • När du öppnar en anslutning kan TCP skicka ett MSS-alternativ med värdet lika med: MDDS - TCPHdrLen. Med andra ord, MSS-värdet som ska skickas är: MSS = MTU - TCPHdrLen - IPHdrLen

När TCP-segment skickas till den andra änden sker en kommunikation mellan skikten enligt följande:

  • TCP bör bestämma den maximala segmentdatastorleken (MSDS) från antingen standardvärdet eller det mottagna värdet för MSS-alternativet.
  • TCP bör avgöra om källfragmentering är möjlig (genom att fråga IP) och önskvärd.
    • Om så är fallet kan TCP lämna till IP, segment (inklusive TCP-huvudet) upp till MSDS + TCPHdrLen.
    • Om inte, kan TCP lämna till IP, segment (inklusive TCP-huvudet) upp till det lägsta av (MSDS + TCPHdrLen) och MDDS.
  • IP kontrollerar längden på data som skickas till den av TCP. Om längden är mindre än eller lika med MDDS, bifogar IP IP-huvudet och lämnar det till ND. Annars måste IP:n göra källfragmentering.

MSS och MTU

MSS blandas ibland ihop med MTU/PMTU , vilket är en egenskap hos det underliggande länklagret , medan MSS gäller specifikt för TCP och därmed transportlagret . De två är lika genom att de begränsar den maximala storleken på nyttolasten som bärs av deras respektive protokolldataenhet (ram för MTU, TCP-segment för MSS), och relaterade eftersom MSS inte kan överskrida MTU för dess underliggande länk (med hänsyn till overheaden) av alla rubriker som lagts till av lagren under TCP). Skillnaden, förutom att tillämpas på olika lager, är dock att MSS kan ha ett annat värde i båda riktningarna och även att ramar som överskrider MTU kan orsaka att paket (som kapslar in segment) fragmenteras av nätverkslagret, medan segment som överskrider MSS slängs helt enkelt.

Vidare läsning

  • Comer, Douglas E. (2006). Internetarbete med TCP/IP . Vol. 1 (5/E ed.). Upper Saddle River, NJ, USA: Prentice Hall.
  • Kozierok, Charles M. (2005-09-20). TCP/IP-guiden (3.0 utg.) . Hämtad 2011-09-08 .

Se även