2012-04-08 11 views
6

स्टैक ओवरव्लो अपने सभी पृष्ठों पर GZip एन्कोडिंग का उपयोग करता है; ऐसा लगता है कि वे अपने वेबसाइकिल यातायात के लिए सच साबित होते हैं क्योंकि यह पूरी तरह से खराब हो जाता है।वेबसाकेट यातायात एन्कोडिंग (जीजेआईपी)

enter image description here

कैसे/क्या वे इस लक्ष्य को हासिल करने के लिए प्रयोग करेंगे; बल्कि मुझे यह प्राप्त करने के लिए क्या करना होगा क्योंकि मेरे websocket सर्वर को आईआईएस आदि के बिना अपने अलग सर्वर पर होस्ट किया गया है?

यह भी ध्यान देने योग्य है कि http compression या तो उनके वेबस्केट कनेक्शन अनुरोध पर सेट नहीं है।


पूर्ण लॉग स्क्रीनशॉट: http://i44.tinypic.com/19s4yr.jpg

+0

ब्याज से, कैसे हैं आप websocket यातायात sniffing? इसके अलावा, यह ध्यान देने योग्य है कि उपर्युक्त संदेश का सादा पाठ भाग 1 9 बाइट लंबा है, इसलिए वास्तव में अप्रचलित नहीं हो सकता है। – simonc

+0

@ सिमोनक मैं वास्तव में इसे केवल मौके से देखता हूं कि लॉग के माध्यम से ब्राउज़ क्यों किया जाता है; बीडी को फिडलर पर दिखने के स्क्रीनशॉट के साथ पोस्ट अपडेट करें। तब यह क्या हो सकता है क्योंकि मेरा वेबसाइकिल यातायात स्पष्ट पाठ में है। – f0x

उत्तर

6

RFC6455 के अनुसार, क्लाइंट सर्वर तक WebSocket पेलोड नकाबपोश किया जाना चाहिए, ग्राहक के लिए सर्वर नहीं नकाबपोश किया जाना चाहिए। मास्किंग 32 बिट मास्क के साथ XORring पेलोड द्वारा किया जाता है .. वह मूल्य जो आप अपने लॉग में देखते हैं।

खाना पकाने में एक डब्ल्यूएस एक्सटेंशन है जो फ्रेम-आधारित संपीड़न (डिफ्लेट) प्रदान करता है। मास्किंग के साथ इसका कोई लेना-देना नहीं है। प्रति-फ्रेम-संपीड़न सक्रिय पेलोड के साथ पेलोड, और फिर मास्क पेलोड (सर्वर से क्लाइंट)।

+0

धन्यवाद, दोस्त! क्या आप शायद मुझे मास्किंग कार्यान्वयन की दिशा में इंगित कर सकते हैं, शायद .net ढांचे पर? चूंकि मूल्य ऊपर दिए गए मेरे स्क्रीनशॉट में क्लाइंट के लिए इनबाउंड मास्क किया गया है, तो क्या एसओ कार्यान्वयन spec के अनुसार गलत है? – f0x

+0

स्क्रीनशॉट पढ़ता है: "ब्राउजर से प्राप्त 68 बाइट .. संदेश मास्किंग सच"। इसलिए, यदि यह ब्राउजर-टू-सर्वर मास्क किए गए पेलोड है, तो यह ठीक है। क्या यह वास्तव में सर्वर से क्लाइंट होना चाहिए, तो यह spec तोड़ रहा है। कल्पना इसके बारे में स्पष्ट है: नहीं करना चाहिए। – oberstet

+0

मास्किंग एल्गोरिदम छोटा है: पेलोड [i]^= मास्क [i% 4], जहां पेलोड और मास्क बाइट सरणी हैं, और मैं फ्रेम पेलोड को अनुक्रमित करता हूं। – oberstet

1

मुझे नहीं लगता कि यहां कोई भी gzipping है। ऐसा लगता है कि फिडलर ने websockets के लिए समर्थन जोड़ना शुरू कर दिया है, लेकिन यह अभी भी एक काम प्रगति पर है।

लॉग एक कनेक्शन से पता चलता
... तो 12 बाइट्स (461,287-इनबॉक्स। प्रारंभिक बाइट्स 81 8C एक नया, पूर्ण, पाठ 4 बाइट मुखौटा और डेटा के 12 बाइट्स के साथ फ्रेम दिखाने के पहले संदेश। फ़िडलर सही ढंग से यह डीकोड करता है।)
... फिर 1 9 बाइट्स का एक दूसरा संदेश (धाराओं में 81 9 3 - 1 बाइट बाइट्स - 4 बाइट मास्क और डेटा के 1 9 बाइट्स के साथ एक नया, पूर्ण, टेक्स्ट फ्रेम दिखाएं)
। .. फिर 1 9 बाइट्स का तीसरा संदेश (बाद में बाइट 81 9 3 - धारा में लगभग 44 बाइट्स - 4 बाइट मास्क और डेटा के 1 9 बाइट्स के साथ एक नया, पूर्ण, टेक्स्ट फ्रेम दिखाएं)

+0

धन्यवाद, दोस्त। मैं आपको अपने वेबस्केट इम्प्लेमेनेशन का एक लॉग दिखा सकता हूं जहां पूरा पाठ देखा जाता है। – f0x

+0

आह, मैं देखता हूं कि मास्किंग वास्तव में 'झूठी' है, इसलिए वास्तव में केवल पेलोड का अपमान है। http://i43.tinypic.com/2n8tug1.png ओह और +1 हाहा :) – f0x

संबंधित मुद्दे