வாடிக்கையாளர் 200 Connection Established ஐக் கண்டு TLS ஐத் தொடங்கி, TLS பதிவு இருக்க வேண்டிய இடத்தில் உடனே அர்த்தமற்றதைத் தெரிவிக்கிறது. இலக்கின் சைஃபர் அமைப்புகளைக் குறை சொல்வதற்கு முன் முடிக்கப்படாத HTTP பதிலைத் தேடுங்கள்.

HTTP/1 CONNECT பரிமாற்றத்தில் நிலை வரி பதிலின் தொடக்கம் மட்டுமே. அதன் பிறகு தலைப்புப் புலங்கள் வரலாம். வெற்றிகரமான CONNECT பதிலுக்குப் பின் தலைப்புப் பகுதியை முடிக்கும் காலி வரி சுரங்கப்பாதைக்கான மாற்றத்தைக் குறிக்கிறது.

HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n

இந்த பைட்டுகள் ஒரு வாசிப்பில், பல வாசிப்புகளில், அல்லது அடுத்த பைட்டுகளையும் கொண்ட வாசிப்பில் வரலாம். TCP சேவையகத்தின் எழுதல் எல்லைகளைப் பாதுகாக்காது.

ஒப்படைப்பை வெளிப்படையான பார்சர் நிலையாக்குங்கள்

  1. நிலை வரியைச் சேகரித்து பகுப்பாய்வு செய்யுங்கள். துல்லியமான ஆங்கில காரணச் சொற்றொடருக்குப் பதிலாக எண்ணியல் நிலையைப் பயன்படுத்துங்கள்.
  2. தலைப்புப் பகுதியின் முழு முடிவும் வரும்வரை தொடருங்கள். வெற்றிகரமான நிலை வரி மீதமுள்ள புலங்களை மறையச் செய்யாது.
  3. வெற்றிகரமான CONNECT பதிலில், அந்த முடிவுக்கு உடனடியாகப் பின் வரும் பைட்டை சுரங்கத் தரவின் தொடக்கமாகக் கருதுங்கள். மற்ற பதில்களில் பொருத்தமான HTTP பதில் மற்றும் அங்கீகாரக் கையாளுதலைப் பின்பற்றுங்கள்.
  4. இணைப்பையும் பயன்படுத்தப்படாத பைட்டுகளையும் அடுத்த நெறிமுறை ஆதரிக்கும் இடையக I/O இடைமுகம் வழியாக மாற்றுங்கள்.

நல்ல பிரிப்பான் தேடல் இருந்தாலும் இறுதிப் படி முக்கியம். இடையக வாசிப்பான் பார்சர் கேட்டதைவிட அதிக socket ஐ நுகர்ந்திருக்கலாம். அந்த வாசிப்பானைக் கைவிட்டு வெற்று socket இல் TLS ஐத் தொடங்கினால் பைட்டுகள் வாசிப்பானின் தனிப்பட்ட இடையகத்தில் சிக்கலாம்.

அமைப்புக்கு ஒரு கால அவகாசமும் தலைப்பு அளவு வரம்பும் பயன்படுத்துங்கள். முடிவுக்கு முன் வரும் EOF என்பது முழுமையற்ற ப்ராக்ஸி பதில், எல்லையில்லாமல் காத்திருக்கவோ எப்படியாவது TLS ஐ முயலவோ அழைப்பு அல்ல.

பல எல்லைகளைப் பற்றி சிந்தியுங்கள்

Proxy-Agent: க்குப் பின் முடியும் ஒரு வாசிப்பை கற்பனை செய்யுங்கள். பார்சருக்கு இன்னும் HTTP தலைப்புப் பைட்டுகள் தேவை. கடைசி CRLF வரிசையின் நடுவில் முடியும் மற்றொன்றை கற்பனை செய்யுங்கள். அது இன்னும் முழுமையான தலைப்புப் பகுதி அல்ல. இப்போது அதே இடையகத்தில் முழுமையான வெற்றிகரமான தலைப்புப் பகுதிக்குப் பின் சுரங்கப் பைட்டுகள் வருவதை கற்பனை செய்யுங்கள்: அந்தக் கூடுதல் பைட்டுகள் ஒப்படைப்பைத் தாண்ட வேண்டும்.

407 வேறு முடிவு. அதற்கு அங்கீகாரக் கையாளுதல் தேவை; ஒருபோதும் திறக்கப்படாத சுரங்கப்பாதைக்குள் TLS ClientHello அனுப்ப அது அனுமதிக்காது.

கைக்குலுக்கலைச் செயல்படுத்துவதே பணியாக இல்லாவிட்டால் பராமரிக்கப்படும் இணைப்பியைத் தேர்ந்தெடுங்கள். இந்த எல்லை இங்கு காட்டப்படும் HTTP/1 பரிமாற்றத்துக்கு மட்டுமே. HTTP/2 ப்ராக்ஸி CONNECT ஐ வேறு பிரேமிங் கொண்ட ஸ்ட்ரீமில் எடுத்துச் செல்கிறது.

தொடர்புடைய கட்டுரைகள்