CONNECT ನಂತರದ ಖಾಲಿ ಸಾಲಿಗಾಗಿ ಕಾಯಿರಿ
ಸ್ಥಿತಿ ಸಾಲು ಮೊದಲು ಬಂದರೂ, ಸಾಕೆಟ್ ಅನ್ನು TLS ಗೆ ಒಪ್ಪಿಸುವ ಮೊದಲು ಪೂರ್ಣ HTTP/1 CONNECT ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಓದಿ.
ಕ್ಲೈಂಟ್ 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 ಸರ್ವರ್ನ ಬರವಣಿಗೆ ಮಿತಿಗಳನ್ನು ಉಳಿಸುವುದಿಲ್ಲ.
ಹಸ್ತಾಂತರವನ್ನು ಸ್ಪಷ್ಟ ಪಾರ್ಸರ್ ಸ್ಥಿತಿಯನ್ನಾಗಿ ಮಾಡಿ
- ಸ್ಥಿತಿ ಸಾಲನ್ನು ಸಂಗ್ರಹಿಸಿ ಪಾರ್ಸ್ ಮಾಡಿ. ನಿಖರ ಇಂಗ್ಲಿಷ್ ಕಾರಣ ವಾಕ್ಯದ ಬದಲು ಸಂಖ್ಯಾತ್ಮಕ ಸ್ಥಿತಿ ಬಳಸಿ.
- ಹೆಡರ್ ವಿಭಾಗದ ಪೂರ್ಣ ಅಂತ್ಯ ಬರುವವರೆಗೆ ಮುಂದುವರಿಸಿ. ಯಶಸ್ವಿ ಸ್ಥಿತಿ ಸಾಲು ಉಳಿದ ಕ್ಷೇತ್ರಗಳನ್ನು ಮಾಯವಾಗಿಸುವುದಿಲ್ಲ.
- ಯಶಸ್ವಿ CONNECT ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ಆ ಅಂತ್ಯದ ನಂತರದ ಬೈಟ್ ಅನ್ನು ಸುರಂಗ ದತ್ತಾಂಶದ ಆರಂಭ ಎಂದು ಪರಿಗಣಿಸಿ. ಇತರ ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ ಸೂಕ್ತವಾದ HTTP ಪ್ರತಿಕ್ರಿಯೆ ಮತ್ತು ದೃಢೀಕರಣ ನಿರ್ವಹಣೆಯನ್ನು ಅನುಸರಿಸಿ.
- ಸಂಪರ್ಕ ಮತ್ತು ಬಳಸದ ಬೈಟ್ಗಳನ್ನು ಮುಂದಿನ ಪ್ರೋಟೋಕಾಲ್ ಬೆಂಬಲಿಸುವ ಬಫರ್ ಮಾಡಿದ I/O ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ವರ್ಗಾಯಿಸಿ.
ಉತ್ತಮ ಡೆಲಿಮಿಟರ್ ಹುಡುಕಾಟವಿದ್ದರೂ ಕೊನೆಯ ಹಂತ ಮುಖ್ಯ. ಬಫರ್ ಮಾಡಿದ ಓದುಗ ಪಾರ್ಸರ್ ಕೇಳಿದ್ದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸಾಕೆಟ್ ಬಳಸಿರಬಹುದು. ಬರಿ ಸಾಕೆಟ್ ಮೇಲೆ TLS ಪ್ರಾರಂಭಿಸಿ ಆ ಓದುಗನನ್ನು ಬಿಟ್ಟರೆ ಬೈಟ್ಗಳು ಓದುಗನ ಖಾಸಗಿ ಬಫರ್ನಲ್ಲಿ ಸಿಲುಕಬಹುದು.
ಸೆಟಪ್ಗೆ ಗಡುವು ಮತ್ತು ಹೆಡರ್ ಗಾತ್ರದ ಮಿತಿ ಬಳಸಿ. ಅಂತ್ಯಕ್ಕಿಂತ ಮೊದಲು EOF ಅಪೂರ್ಣ ಪ್ರಾಕ್ಸಿ ಪ್ರತಿಕ್ರಿಯೆ, ಶಾಶ್ವತವಾಗಿ ಕಾಯಲು ಅಥವಾ ಹೇಗಾದರೂ TLS ಪ್ರಯತ್ನಿಸಲು ಆಹ್ವಾನವಲ್ಲ.
ಹಲವು ಮಿತಿಗಳ ಬಗ್ಗೆ ಯೋಚಿಸಿ
Proxy-Agent: ನಂತರ ಮುಗಿಯುವ ಓದನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಪಾರ್ಸರ್ಗೆ ಇನ್ನೂ ಹೆಚ್ಚು HTTP ಹೆಡರ್ ಬೈಟ್ಗಳು ಬೇಕು. ಕೊನೆಯ CRLF ಅನುಕ್ರಮದ ಮಧ್ಯದಲ್ಲಿ ಮುಗಿಯುವ ಇನ್ನೊಂದನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಅದು ಇನ್ನೂ ಪೂರ್ಣ ಹೆಡರ್ ವಿಭಾಗವಲ್ಲ. ಈಗ ಅದೇ ಬಫರ್ನಲ್ಲಿ ಪೂರ್ಣ ಯಶಸ್ವಿ ಹೆಡರ್ ವಿಭಾಗದ ನಂತರ ಸುರಂಗ ಬೈಟ್ಗಳು ಬರುವುದನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ: ಆ ಹೆಚ್ಚುವರಿ ಬೈಟ್ಗಳು ಹಸ್ತಾಂತರವನ್ನು ದಾಟಬೇಕು.
407 ಬೇರೆ ಫಲಿತಾಂಶ. ಅದಕ್ಕೆ ದೃಢೀಕರಣ ನಿರ್ವಹಣೆ ಬೇಕು; ಎಂದೂ ತೆರೆಯದ ಸುರಂಗಕ್ಕೆ TLS ClientHello ಕಳುಹಿಸಲು ಅದು ಅನುಮತಿ ನೀಡುವುದಿಲ್ಲ.
ಹ್ಯಾಂಡ್ಶೇಕ್ ಜಾರಿಗೊಳಿಸುವುದೇ ಕೆಲಸವಲ್ಲದಿದ್ದರೆ ನಿರ್ವಹಿತ ಕನೆಕ್ಟರ್ ಆಯ್ಕೆಮಾಡಿ. ಈ ಮಿತಿ ಇಲ್ಲಿ ತೋರಿಸಿದ HTTP/1 ವಿನಿಮಯಕ್ಕೆ ಸೀಮಿತ. HTTP/2 ಪ್ರಾಕ್ಸಿ CONNECT ಅನ್ನು ಬೇರೆ ಫ್ರೇಮಿಂಗ್ ಇರುವ ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ಸಾಗಿಸುತ್ತದೆ.