Dlaczego mój C # gzip tworzy większy plik niż Fiddler lub PHP?

Jeśli I GZip ten tekst:

Witaj świecie

przez C # za pomocą tego kodu:

Stream stream = new MemoryStream(Encoding.Default.GetBytes("Hello World"));
var compressedMemoryStream = new MemoryStream();
using (var gzipStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress))
{
    stream.CopyTo(gzipStream);  
    gzipStream.Close(); 
} 

wynikowy strumień ma długość 133 bajtów

Uruchamianie tego samego ciągu przez dowolną skrzypaczkęUtilities.GzipCompress lubta strona PHP wynik ma długość tylko 31 bajtów.

W obu przypadkach dane wejściowe mają 11 bajtów, więc wyobrażam sobie, że wynik PHP jest poprawny, ale oczywiście oznacza to, że nie mogę dekompresować zip PHP z .NET lub odwrotnie. Dlaczego wyjście .NET jest znacznie większe?

W rzeczywistości okazuje się, że podczas gdy wynik PHP i Fiddlera jest tej samej długości, nie są one takie same. Mogę zdekompresować wersję PHP w .NET, ale nie wersję Fiddlera. Strona PHP dekompresuje wszystkie trzy, więc wygląda na to, że może istnieć niezgodność między implementacjami gzipa Fiddlera i .NET.

Zgodnie z żądaniem załadowałem trzy wyjścia do Dropboxtutaj.

A to są surowe zrzuty heksadecymalne tych plików (nie jestem pewien, czy tak naprawdę są takie, ale myślę, że pokazuje, że różnica między wersją skrzypka i PHP jest w nagłówku, a nie w samych skompresowanych danych):

Skrzypek:

0000-0010:  1f 8b 08 00-c2 e6 ff 4f-00 ff f3 48-cd c9 c9 57  .......O ...H...W
0000-001f:  08 cf 2f ca-49 01 00 56-b1 17 4a 0b-00 00 00     ../.I..V ..J....

PHP:

0000-0010:  1f 8b 08 00-00 00 00 00-00 03 f3 48-cd c9 c9 57  ........ ...H...W
0000-001f:  08 cf 2f ca-49 01 00 56-b1 17 4a 0b-00 00 00     ../.I..V ..J....

DO#:

0000-0010:  1f 8b 08 00-00 00 00 00-04 00 ec bd-07 60 1c 49  ........ .....`.I
0000-0020:  96 25 26 2f-6d ca 7b 7f-4a f5 4a d7-e0 74 a1 08  .%&/m.{. J.J..t..
0000-0030:  80 60 13 24-d8 90 40 10-ec c1 88 cd-e6 92 ec 1d  .`.$..@. ........
0000-0040:  69 47 23 29-ab 2a 81 ca-65 56 65 5d-66 16 40 cc  iG#).*.. eVe]f.@.
0000-0050:  ed 9d bc f7-de 7b ef bd-f7 de 7b ef-bd f7 ba 3b  .....{.. ..{....;
0000-0060:  9d 4e 27 f7-df ff 3f 5c-66 64 01 6c-f6 ce 4a da  .N'...?\ fd.l..J.
0000-0070:  c9 9e 21 80-aa c8 1f 3f-7e 7c 1f 3f-22 be 9d 97  ..!....? ~|.?"...
0000-0080:  65 95 7e b7-aa cb d9 ff-13 00 00 ff-ff 56 b1 17  e.~..... .....V..
0000-0085:  4a 0b 00 00-00

questionAnswers(5)

yourAnswerToTheQuestion