Windows TCP özelliklerinin açıklaması

Bu makalede Windows'daki TCP özellikleri açıklanmaktadır.

Şunlar için geçerlidir: Windows 10 – tüm sürümler, Windows Server 2012 R2
Özgün KB numarası: 224829

Özet

Bu makalede, Windows'taki aşağıdaki TCP özellikleri açıklanmaktadır:

  • TCP pencere boyutu
  • TCP seçenekleri artık destekleniyor
  • Windows ölçeklendirme - RFC 1323
  • Zaman damgası - RFC 1323
  • Sarmalanmış Sıra Numaralarına (PAWS) karşı koruma
  • Seçmeli Bildirimler (SACKS) - RFC 2018
  • TCP yeniden iletimi davranışı ve hızlı yeniden iletim

KAYıT defterindeki girdiler değiştirilerek TCP özellikleri değiştirilebilir.

Önemli

Aşağıdaki bölümler, yöntemler veya görevler, kayıt defterini nasıl değiştirebileceğinizi belirten adımlar içerir. Ancak kayıt defterini hatalı biçimde değiştirirseniz önemli sorunlar oluşabilir. Bu nedenle bu adımları dikkatle uyguladığınızdan emin olun. Ek koruma için kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Böylece, bir sorun oluşursa kayıt defterini daha sonra geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:
322756 Windows'da kayıt defterini yedekleme ve geri yükleme

TCP pencere boyutu

TCP alma penceresi boyutu, bir bağlantı sırasında arabelleğe alınabilen alma verilerinin (bayt cinsinden) miktarıdır. Gönderen ana bilgisayar, alıcı ana bilgisayardan onay ve pencere güncelleştirmesini beklemeden önce yalnızca bu miktarda veri gönderebilir. Windows TCP/IP yığını, çoğu ortamda kendi kendine ayar yapmak için tasarlanmıştır ve önceki sürümlerden daha büyük varsayılan pencere boyutları kullanır.

TCP, sabit kodlanmış varsayılan alma penceresi boyutu kullanmak yerine en büyük segment boyutunun (MSS) artımlarına göre ayarlanır. MSS, bağlantı kurulumu sırasında anlaşmaya varılır. Alma penceresinin MSS artışlarına eşit olarak ayarlanması, toplu veri iletimleri sırasında kullanılan tam boyutlu TCP segmentlerinin yüzdesini artırır.

Alma penceresi boyutu aşağıdaki şekilde belirlenir:

  1. Uzak ana bilgisayara gönderilen ilk bağlantı isteği, 16K (16.384 bayt) bir alma penceresi boyutu tanıtır.
  2. Bağlantı kurulduğunda, alma penceresi boyutu MSS'nin eşit bir artışına yuvarlanmış olur.
  3. Pencere ölçeklendirme seçeneği (RFC 1323) kullanılmadığı sürece pencere boyutu MSS'nin dört katı olacak şekilde en fazla 64 K boyuta ayarlanır.

Not

"Windows ölçeklendirme" bölümüne bakın.

Ethernet bağlantıları için pencere boyutu normalde 17.520 bayt olarak ayarlanır (16K, 1460 baytlık segmentlere yuvarlanır). Seçmeli Onaylar (SACKS) ve Zaman Damgaları gibi genişletilmiş TCP baş seçeneklerini destekleyen bir bilgisayara bağlantı kurulduğunda pencere boyutu küçülebilir. Bu iki seçenek TCP üst bilgi boyutunu 20 bayttan daha fazla artırır ve bu da veriler için daha az yer açar.

önceki Windows NT sürümlerinde, Ethernet bağlantısının pencere boyutu 8.760 bayt veya altı 1460 baytlık kesimdi.

Alma penceresi boyutunu belirli bir değere ayarlamak için TcpWindowSize değerini Windows sürümünüze özgü kayıt defteri alt anahtarına ekleyin. Bunu yapmak için şu adımları uygulayın:

  1. Çalıştırmayı Başlat'ı> seçin, yazınRegedit ve tamam'ı seçin.

  2. Windows sürümünüze özgü kayıt defteri alt anahtarını genişletin:

    • Windows 2000 için aşağıdaki alt anahtarı genişletin: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

    • Windows Server 2003 için aşağıdaki alt anahtarı genişletin: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  3. Düzenle menüsünde Yeni'nin üzerine gelin ve DWORD Değeri'ni seçin.

  4. Yeni Değer kutusuna yazın TcpWindowSize ve Enter tuşuna basın

  5. Düzenle menüsündeDeğiştir'i seçin.

  6. Değer veri kutusuna istediğiniz pencere boyutunu yazın.

    Not

    Pencere boyutu için geçerli aralık 0-0x3FFFC000 Onaltılıktır.

Bu değer varsayılan olarak mevcut değildir. TcpWindowSize değerini eklediğinizde, yukarıda açıklanan varsayılan pencere boyutu algoritmasını geçersiz kılar.

Not

TcpWindowSize, tüm arabirimler için pencere boyutunu genel olarak ayarlamak üzere Parametreler anahtarına da eklenebilir.

TCP seçenekleri artık destekleniyor

Daha önce, tcp seçenekleri öncelikli olarak en yüksek segment boyutlarının anlaşması için kullanılıyordu. Windows'ta, Pencere Ölçeklendirme, Zaman Damgası ve Seçmeli ACK için TCP seçenekleri kullanılır.

İki tür TCP seçeneği vardır:

  1. Belirli bir seçenek türünü belirtmek için kullanılan tek bir sekizli TCP seçeneği.
  2. Bir seçenek türünden, seçenek uzunluğundan ve bir dizi seçenek sekizliden oluşan bir çoklu sekizli TCP seçeneği.

Aşağıdaki listede her TCP seçeneği türü, uzunluğu, adı ve açıklaması gösterilmektedir.

Tür: 0
Uzunluk: 1
Seçenek: Seçenek Listesinin Sonu
Açıklama: Son TCP seçeneği için doldurma gerektiğinde kullanılır.

Tür: 1
Uzunluk: 1
Seçenek: İşlem Yok
Açıklama: Doldurma gerektiğinde kullanılır ve aynı paket içinde daha fazla TCP seçeneği izleniyor.

Tür: 2
Uzunluk: 4
Seçenek: En Büyük Segment Boyutu
Açıklama: Ağ üzerinden gönderilebilen tcp kesiminin en büyük boyutunu gösterir.

Tür: 3
Uzunluk: 3
Seçenek: Pencere Ölçek Seçeneği
Açıklama: 64k'tan büyük pencere boyutları kullanılırken kullanılacak ölçeklendirme faktörünü tanımlar.

Tür: 8
Uzunluk: 10
Seçenek: Zaman Damgası Seçeneği
Açıklama: İletilen paketlerin Gidiş Dönüş Süresini (RTT) hesaplamaya yardımcı olmak için kullanılır.

Tür: 4
Uzunluk: 2
Seçenek: TCP SACK'e izin verilir
Açıklama: Diğer konaklara Seçmeli Ack'lere izin verildiğini bildirir.

Tür: 5
Uzunluk: Değişir
Seçenek: TCP SACK Seçeneği
Açıklama: Konaklar tarafından sıra dışı paketlerin alınıp alınmadığını belirlemek için kullanılır.

Windows ölçeklendirme

Yüksek bant genişliğine sahip ağların daha verimli kullanılması için daha büyük bir TCP penceresi boyutu kullanılabilir. TCP pencere boyutu alanı, veri akışını denetler ve 2 bayt veya 65.535 bayt pencere boyutuyla sınırlıdır.

Boyut alanı genişletilemediğinden ölçeklendirme faktörü kullanılır. TCP pencere ölçeği, maksimum pencere boyutunu 65.535 bayttan 1 Gigabayt'a yükseltmek için kullanılan bir seçenektir.

Pencere ölçek seçeneği yalnızca TCP üç yönlü el sıkışması sırasında kullanılır. Pencere ölçek değeri, 16 bit pencere boyutu alanını sola kaydırmak için bit sayısını temsil eder. Pencere ölçek değeri 0'dan (vardiyasız) 14'e ayarlanabilir.

Gerçek pencere boyutunu hesaplamak için pencere boyutunu 2^S ile çarpın; burada S ölçek değeridir.

Örneğin:

Pencere boyutu 65.535 bayt ise ve pencere ölçek faktörü 3'tür.
Doğru pencere boyutu = 65535*2^3

Doğru pencere boyutu = 524280

Aşağıdaki Ağ İzleyicisi izlemesi, pencere ölçek seçeneğinin nasıl kullanıldığını gösterir:

TCP: ....S., len:0, seq:725163-725163, ack:0, win:65535, src:1217 dst:139(NBT Session)  
TCP: Source Port = 0x04C1  
TCP: Destination Port = NETBIOS Session Service  
TCP: Sequence Number = 725163 (0xB10AB)  
TCP: Acknowledgement Number = 0 (0x0)  
TCP: Data Offset = 44 (0x2C)  
TCP: Reserved = 0 (0x0000)  
+ TCP: Flags = 0x02 : ....S.  
TCP: Window = 65535 (0xFFFF)  
TCP: Checksum = 0x8565  
TCP: Urgent Pointer = 0 (0x0)  
TCP: Options  
+ TCP: Maximum Segment Size Option  
TCP: Option Nop = 1 (0x1)  
TCP: Window Scale Option  
TCP: Option Type = Window Scale  
TCP: Option Length = 3 (0x3)  
TCP: Window Scale = 3 (0x3)  
TCP: Option Nop = 1 (0x1)  
TCP: Option Nop = 1 (0x1)  
+ TCP: Timestamps Option  
TCP: Option Nop = 1 (0x1)  
TCP: Option Nop = 1 (0x1)  
+ TCP: SACK Permitted Option  

Gerçek üç yönlü el sıkışmasında kullanılan pencere boyutu, RFC 1323 bölüm 2.2'ye göre ölçeklendirilen pencere boyutu değildir:

"Syn (örneğin, [SYN] veya [SYN,ACK]) segmentindeki Pencere alanı hiçbir zaman ölçeklendirilemez."

Bu, üç yönlü el sıkışması sonrasında gönderilen ilk veri paketinin gerçek pencere boyutu olduğu anlamına gelir. Ölçeklendirme faktörü varsa, her zaman 65.535 baytlık ilk pencere boyutu kullanılır. Ardından pencere boyutu, üç yönlü el sıkışmasında tanımlanan ölçeklendirme faktörüyle çarpılır. Aşağıdaki tablo, çeşitli pencere boyutları için ölçeklendirme faktörü sınırlarını temsil eder.

Ölçek Faktörü Değeri Ölçeklendir İlk Pencere Ölçeklendirilen Pencere
0 1 65535 veya daha küçük 65535 veya daha küçük
1 2 65535 131,070
2 4 65535 262,140
3 8 65535 524,280
4 16 65535 1,048,560
5 32 65535 2,097,120
6 64 65535 4,194,240
7 128 65535 8,388,480
8 256 65535 16,776,960
9 512 65535 33,553,920
10 1024 65535 67,107,840
11 2048 65535 134,215,680
12 4096 65535 268,431,360
13 8192 65535 536,862,720
14 16384 65535 1,073,725,440

Örneğin:

Kayıt defterindeki pencere boyutu ondalık olarak 2690000000 (269M) olarak girilirse, üç yönlü el sıkışması sırasında ölçeklendirme faktörü 13'tür. 12'lik bir ölçeklendirme faktörü yalnızca 268.431.360 bayta (268M) kadar pencere boyutuna izin verir.

Bu örnekteki ilk pencere boyutu aşağıdaki gibi hesaplanır:
Pencere ölçek faktörü 13 olan 65.535 bayt.
Doğru pencere boyutu = 65535*2^13
Gerçek pencere boyutu = 536.862.720

Pencere boyutu değeri kayıt defterine eklendiğinde ve boyutu varsayılan değerden büyükse, Windows yeni pencere boyutuna uygun bir ölçek değeri kullanmayı dener.

Ölçeklendirme pencerelerini ve zaman damgasını denetlemek için aşağıdaki kayıt defteri anahtarındaki Tcp1323Opts değeri eklenebilir:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

  1. Araç çubuğundaÇalıştırmayıBaşlat'ı> seçin ve kayıt defteri Düzenleyici başlatmak için yazınRegedit.

  2. Kayıt Defteri Düzenleyici Düzenle'yi seçin, Yeni'nin üzerine gelin ve DWORD Değeri'ni seçin.

  3. Yeni Değer kutusuna yazın Tcp1323Opts, ENTER tuşuna basın ve düzenle menüsündeDeğiştir'i seçin.

    Not

    Geçerli aralık 0, 1, 2 veya 3'dür ve burada:
    0 (RFC 1323 seçeneklerini devre dışı bırakma)
    1 (yalnızca pencere ölçeği etkin)
    2 (yalnızca zaman damgaları etkin)
    3 (her iki seçenek de etkin)

Bu kayıt defteri girdisi RFC 1323 zaman damgalarını ve pencere ölçeklendirme seçeneklerini denetler. Zaman damgaları ve Pencere ölçeklendirmesi varsayılan olarak etkindir, ancak bayrak bitleriyle değiştirilebilir. Bit 0 , pencere ölçeklendirmesini denetler. Bit 1 zaman damgalarını denetler.

Zaman damga -ları

Daha önce TCP/IP yığını gidiş dönüş süresini (RTT) hesaplamak için gönderilen veri penceresi başına bir örnek kullanıyordu. Onay alınana kadar paket gönderildiğinde bir zamanlayıcı (yeniden iletim zamanlayıcısı) ayarlandı. Örneğin, bir Ethernet ağında pencere boyutu 64.240 bayt (44 tam segment) ise gidiş dönüş süresini yeniden hesaplamak için her 44 paketten yalnızca biri kullanılmıştır. Maksimum pencere boyutu 65.535 bayt olan bu örnekleme hızı yeterliydi. Pencere ölçeklendirme ve en fazla 1 Gigabayt pencere boyutu kullanıldığında bu RTT örnekleme hızı yeterli değildir.

TCP Zaman Damgası seçeneği artık yığın tarafından uygun olarak kabul edilen segmentlerde (veri ve ACK) aşağıdaki gibi işlemleri yapmak için kullanılabilir:

  • RTT hesaplaması
  • PAWS denetimi

Bu veriler kullanıldığında RTT, büyük pencere boyutlarıyla doğru şekilde hesaplanabilir. RTT, yeniden iletim aralıklarını hesaplamak için kullanılır. Optimum aktarım hızı için doğru RTT ve yeniden iletim zaman aşımları gerekir.

TCP zaman damgası bir TCP oturumunda kullanıldığında, oturumun kaynağı tcp üç yönlü el sıkışmasının ilk paketinde (SYN paketi) seçeneğini gönderir. Her iki taraf da oturum sırasında TCP seçeneğini kullanabilir.

TCP Zaman Damgaları Seçeneği (TSopt):

Tür = 8 Uzunluk = 10 TS Değeri (Tsval) TS Yankı Yanıtı (Tsecr)
1 bayt 1 bayt 4 bayt 4 bayt

Zaman damgası seçeneği alanı, aşağıda gösterildiği gibi TCP seçenekleri alanı genişletilerek Ağ İzleyicisi izlemesinde görüntülenebilir:

TCP: Timestamps Option  
TCP: Option Type = Timestamps  
TCP: Option Length = 10 (0xA)  
TCP: Timestamp = 2525186 (0x268802)  
TCP: Reply Timestamp = 1823192 (0x1BD1D8)

Sarmalanmış Sıra Numaralarına (PAWS) karşı koruma

TCP sıra numarası alanı 32 bit ile sınırlıdır ve bu da kullanılabilir sıra numaralarının sayısını sınırlar. Yüksek kapasiteli ağlar ve büyük bir veri aktarımıyla, bir paket ağdan geçmeden önce sıra numaralarını sarmalamak mümkündür. Saniye başına bir Giga baytlık (Gb/sn) bir ağda veri gönderiliyorsa, sıra numaraları 34 saniye kadar kısa bir sürede kaydırılabilir. Bir paket gecikirse, aynı sıra numarasına sahip farklı bir paket olabilir. Yinelenen sıra numaralarının karışıklığını önlemek için TCP zaman damgası, sıra numarasının uzantısı olarak kullanılır. Paketlerin geçerli ve ilerleyen zaman damgaları vardır. Eski bir paketin daha eski bir zaman damgası vardır ve atılır.

Seçmeli Bildirimler (SACK)

Windows, Seçmeli Bildirim veya SACK olarak bilinen bir performans özelliği için destek sağlar. SACK özellikle büyük TCP pencere boyutları kullanan bağlantılar için önemlidir. SACK'dan önce, alıcı yalnızca alınmış olan bir bitişik veri akışının en son sıra numarasını veya alma penceresinin "sol kenarını" kabul edebilir. SACK etkinleştirildiğinde alıcı, alma penceresinin sol kenarını onaylamak için ACK numarasını kullanmaya devam eder, ancak alınan diğer veri bloklarını tek tek de kabul edebilir. SACK, aşağıda gösterildiği gibi TCP üst bilgi seçeneklerini kullanır.

SACK iki tür TCP Seçeneği kullanır.

TCP Sack-Permitted Seçeneği, seçmeli ACK yapabileceğini belirtmek için yalnızca bir SYN paketinde (TCP bağlantısı kurulması sırasında) kullanılır.

İkinci TCP seçeneği olan TCP Sack Option, bir veya daha fazla veri bloğu için onay içerir. Veri blokları, bu veri bloğunun başında ve sonundaki sıra numarası kullanılarak tanımlanır. Veri bloğunun sol ve sağ kenarı olarak da bilinir.

Tür 4 TCP Sack-Permitted Seçeneğidir. Tür 5, TCP Sack Seçeneğidir. Uzunluk, bu TCP seçeneğinin bayt cinsinden uzunluğudur.

Tcp SACK'e İzin Verilir:

Tür = 4 Uzunluk = 2
1 bayt 1 bayt

Tcp SACK Seçeneği:

Tür = 5 Uzunluk = Değişken
1 bayt İlk bloğun sol kenarından birinci bloğun Sağ kenarına
...
N. bloğun sol kenarından N. bloğun Sağ kenarına

SACK etkinleştirildiğinde (varsayılan), bir paket veya paket serisi bırakılabilir. Alıcı, gönderene hangi verilerin alındığını ve verilerde nerede "delikler" olabileceğini bildirir. Daha sonra gönderen, zaten başarıyla alınmış veri bloklarının yeniden iletimi olmadan eksik verileri seçmeli olarak yeniden aktarabilir. SACK, SackOpts kayıt defteri parametresi tarafından denetlendi.

Aşağıdaki kayıt defteri anahtarındaki SackOpts değeri, seçmeli onayların kullanımını denetlemek için düzenlenebilir:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  1. Araç çubuğundaÇalıştırmayıBaşlat'ı> seçin ve kayıt defteri Düzenleyici başlatmak için yazınRegedit.
  2. Kayıt Defteri Düzenleyici yukarıdaki anahtarı bulup seçin ve ardından Düzenle menüsünde Değiştir'i seçin.
  3. Değer veri kutusuna istediğiniz değeri yazın.

Not

Geçerli ikili değer 0 veya 1, varsayılan değer 1'dir. Bu parametre Seçmeli ACK (SACK - RFC 2018) desteğinin etkinleştirilip etkinleştirilmediğini denetler.

Aşağıdaki Ağ İzleyicisi izlemesi, sıra numarası 54857341 kadar olan tüm verilerin yanı sıra 54858789-54861685 sıra numarasındaki verileri kabul eden bir konağı gösterir. Eksik veriler 54857341 ile 54858788.

TCP: .A...., len:0, seq:925104-925104, ack:54857341, win:32722, src:1242 dst:139  
TCP: Source Port = 0x04DA  
TCP: Destination Port = NETBIOS Session Service  
TCP: Sequence Number = 925104 (0xE1DB0)  
TCP: Acknowledgement Number = 54857341 (0x3450E7D)  
TCP: Data Offset = 44 (0x2C)  
TCP: Reserved = 0 (0x0000)  
+ TCP: Flags = 0x10 : .A....  
TCP: Window = 32722 (0x7FD2)  
TCP: Checksum = 0x4A72  
TCP: Urgent Pointer = 0 (0x0)  
TCP: Options  
TCP: Option Nop = 1 (0x1)  
TCP: Option Nop = 1 (0x1)  
+ TCP: Timestamps Option  
TCP: Option Nop = 1 (0x1)  
TCP: Option Nop = 1 (0x1)  
TCP: SACK Option  
TCP: Option Type = 0x05  
TCP: Option Length = 10 (0xA)  
TCP: Left Edge of Block = 54858789 (0x3451425)  
TCP: Right Edge of Block = 54861685 (0x3451F75)

TCP yeniden iletimi davranışı ve hızlı yeniden iletim

TCP yeniden iletimi

Normal yeniden iletim davranışının bir gözden geçirilmesi olarak, her giden kesim İnternet Protokolü'ne (IP) teslim edildiğinde TCP yeniden iletim zamanlayıcısını başlatır. Süreölçer süresi dolmadan önce belirli bir kesimdeki veriler için bildirim alınmadıysa, segment yeniden aktarılır.

Yeniden iletim zaman aşımı (RTO), RFC 793'te açıklandığı gibi Düzgünleştirilmiş Gidiş Dönüş Süresi (SRTT) hesaplamaları kullanılarak bağlantının özellikleriyle eşleşecek şekilde sürekli olarak ayarlanır. Belirli bir segment için zamanlayıcı, söz konusu segmentin her yeniden iletiminin ardından iki katına çıkar. Bu algoritmayı kullanarak TCP kendisini bağlantının normal gecikmesine ayarlar.

Hızlı yeniden iletim

TCP, yeniden iletim zamanlayıcısının süresi bazı durumlarda dolmadan önce verileri yeniden iletir. En yaygın neden, hızlı yeniden iletim olarak bilinen bir özelliktir. Hızlı yeniden aktarımı destekleyen bir alıcı, beklenenden daha yüksek bir dizi numarasına sahip verileri aldığında, büyük olasılıkla bazı veriler bırakılmıştı. Bu olayın gönderenini bilgilendirmeye yardımcı olmak için alıcı hemen bir ACK gönderir ve ACK numarası beklediği sıra numarasına ayarlanır. Gelen her ek TCP kesimi için bunu yapmaya devam edecektir. Gönderen aynı sıra numarasını onaylayan bir ACK akışı almaya başladığında, bir kesim bırakılmış olabilir. Gönderen, yeniden iletim zamanlayıcısının süresinin dolmasına gerek kalmadan alıcının beklediği segmenti hemen yeniden gönderir. Bu iyileştirme, paketler sık sık bırakıldığında performansı büyük ölçüde artırır.

Varsayılan olarak, Windows aşağıdaki koşullar altında bir segmenti yeniden göndermektedir:

  • Aynı sıra numarası için üç ACK alır: bir ACK ve iki yineleme.
  • Sıra numarası geçerli olanı gecikmeli olarak gösterir.

Bu davranış kayıt defteri parametresiyle TcpMaxDupAcks denetlenebilir.

Aşağıdaki kayıt defteri anahtarındaki TcpMaxDupAcks değeri, hızlı bir yeniden aktarım başlatmak için gereken ACK sayısını denetlemek için düzenlenebilir:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  1. Araç çubuğundaÇalıştırmayıBaşlat'ı> seçin ve kayıt defteri Düzenleyici başlatmak için yazınRegedit.
  2. Kayıt Defteri Düzenleyici yukarıdaki anahtarı bulup seçin ve ardından Düzenle menüsünde Değiştir'i seçin.
  3. Değer veri kutusuna istediğiniz değeri yazın.

Not

Geçerli aralık 1-3, varsayılan değer 2'dir.

Bu parametre, aktarım sırasında bırakılan segmentin yeniden gönderilmesi için tetiklenmeden önce fast retransmit aynı dizi verisi için alınması gereken yinelenen AK sayısını belirler.