หากคุณบล็อกการเชื่อมต่อที่เข้ามาทั้งหมดคุณจะยังใช้อินเทอร์เน็ตได้อย่างไร


22

หาก ISP หรือไฟร์วอลล์ของคุณบล็อกการเชื่อมต่อขาเข้าทั้งหมดเว็บเซิร์ฟเวอร์จะยังสามารถส่งข้อมูลไปยังเบราว์เซอร์ของคุณได้อย่างไร คุณส่งคำขอ (ขาออก) และเซิร์ฟเวอร์ส่งข้อมูล (ขาเข้า) หากคุณบล็อกขาเข้าทั้งหมดเว็บเซิร์ฟเวอร์จะตอบสนองได้อย่างไร

แล้ววิดีโอแบบสตรีมและเกมแบบผู้เล่นหลายคนที่ใช้ UDP ล่ะ UDP นั้นไม่มีการเชื่อมต่อดังนั้นจึงไม่มีการสร้างการเชื่อมต่อดังนั้นไฟร์วอลล์หรือ ISP จะจัดการกับสิ่งนั้นอย่างไร


2
บล็อกสายเรียกเข้าทั้งหมด / โอนสายเรียกเข้าทั้งหมดไปยังข้อความเสียงหรือไม่ ไม่หยุดคุณไม่ให้โทรหาใครบางคน
WernerCD

คำตอบ:


43

"บล็อกขาเข้า" หมายความว่าที่เข้ามาเชื่อมต่อใหม่จะถูกบล็อก แต่จัดตั้งขึ้นการจราจรที่ได้รับอนุญาต ดังนั้นหากได้รับอนุญาตให้มีการเชื่อมต่อใหม่ขาออกดังนั้นครึ่งที่เข้ามาของการสนทนานั้นจะไม่เป็นไร

ไฟร์วอลล์จะจัดการสิ่งนี้ด้วยการติดตามสถานะการเชื่อมต่อ (ไฟร์วอลล์ดังกล่าวมักจะเรียกว่า "ไฟร์วอลล์แบบสถานะ") จะเห็น TCP SYN ที่ส่งออกและอนุญาต มันเห็น SYN / ACK ขาเข้าที่เข้ามาและสามารถตรวจสอบว่าตรงกับ SYN ขาออกที่มันเห็นและปล่อยให้ผ่านไปเรื่อย ๆ หากอนุญาตการจับมือสามทาง (เช่นอนุญาตตามกฎไฟร์วอลล์) จะอนุญาตการสนทนานั้น และเมื่อมันเห็นจุดสิ้นสุดของการสนทนานั้น (FINs หรือ RST) มันจะนำการเชื่อมต่อนั้นออกจากรายการแพ็กเก็ตเพื่ออนุญาต

UDP ทำในทำนองเดียวกันแม้ว่าจะเกี่ยวข้องกับไฟร์วอลล์ที่จำได้เพียงพอที่จะแสร้งว่า UDP มีการเชื่อมต่อหรือเซสชัน (ซึ่ง UDP ไม่ได้)


1
สำหรับ UDP เนื่องจากไม่มีการเชื่อมต่อจริงไฟร์วอลล์มักจะติดตาม IP ปลายทางและพอร์ตของแพ็กเก็ต UDP ขาออกและหากมีแพ็กเก็ตขาเข้าที่มี IP และพอร์ตเดียวกันกับแหล่งที่มามันจะถือว่าเป็นการตอบกลับและปล่อยให้มัน ใน
WhiteWinterWolf

17

@gowenfawr มีภาพระดับสูงลงมา อย่างไรก็ตามฉันคิดว่าฉันจะเพิ่มรายละเอียดบางอย่างเกี่ยวกับวิธีการ "จับคู่" สำหรับการติดตามการเชื่อมต่อเนื่องจากอาจฟังดูไม่น่าเชื่อ

ทุกการเชื่อมต่อ TCP มีหมายเลขพอร์ตของแต่ละด้าน ตามที่นักเทคนิคส่วนใหญ่ทราบแล้วเซิร์ฟเวอร์ HTTP ทำงานบนพอร์ต 80 เมื่อเบราว์เซอร์ของคุณเชื่อมต่อกับเว็บเซิร์ฟเวอร์มันจะขอให้ระบบปฏิบัติการสร้างหมายเลขพอร์ต "ท้องถิ่น" ซึ่งจะเป็นสิ่งที่สุ่มเช่น 29672 ที่ไม่ได้ใช้โดยผู้อื่น การเชื่อมต่อ TCP จากคอมพิวเตอร์เครื่องนั้น (และระบบปฏิบัติการสามารถทำได้เนื่องจากรู้เกี่ยวกับการเชื่อมต่อ TCP ที่ใช้งานอยู่ทั้งหมด) จากนั้นแพ็กเก็ตการตั้งค่าเริ่มต้น TCP จะถูกส่งจากเครื่องของคุณ (IP_YOURS) และหมายเลขพอร์ต 29672 ไปยัง ip ของเว็บเซิร์ฟเวอร์ (IP_WEBSERVER) และหมายเลขพอร์ต 80 ณ จุดนั้นไฟร์วอลล์ stateful จะพูดว่า "aha, แพ็กเก็ตในอนาคตจาก IP_WEBSERVER 80 ไปที่ IP_YOURS พอร์ต 29672 ไม่ใช่การเชื่อมต่อใหม่เป็นการตอบกลับการเชื่อมต่อที่มีอยู่และได้รับอนุญาต " ไฟร์วอลล์ stateful รักษาตาราง


3
นี่เป็นสิ่งที่ถูกต้องส่วนใหญ่ แต่เนื่องจากจุดเล็ก ๆ สองสามหมายเลขพอร์ตจะหยุดที่ 65535 (เป็นตัวเลขที่ไม่มีเครื่องหมาย 16 บิต) และนอกเหนือจากการหมดเวลาแล้วแพ็คเก็ตที่มีธง FIN หรือ RST สามารถส่งสัญญาณว่า TCP การเชื่อมต่อถูกปิด
reirab

@ รีแรบโอ้โหหมายเลขพอร์ตไม่สำเร็จ การปิด Wrt แน่นอนว่าเป็นไปได้ที่จะตรวจสอบการตั้งค่าสถานะ TCP แต่การคำนึงถึงความสูญเสียของแพ็กเก็ตที่เป็นไปได้และการส่งสัญญาณลำดับปิดนั้นมีความซับซ้อนมากพอที่ฉันจะสันนิษฐานว่าไฟร์วอลล์ส่วนใหญ่ ติดตามอย่างถูกต้อง

@atsby คุณสามารถแก้ไขการโพสต์และแทนที่หมายเลขพอร์ตด้วยสิ่งที่เหมาะสมกว่าได้หรือไม่

ทั้งหมดนี้เป็นข้อมูลที่ดี แค่ต้องการเพิ่มสิ่งหนึ่งไปยังพอร์ตที่กล่าวถึงโดยความเห็นด้านบน พวกเขาถูกเรียกว่า 'พอร์ตชั่วคราว' และช่วงของมันถูกกำหนดโดยเคอร์เนลเฉพาะสำหรับแต่ละระบบปฏิบัติการ บน Linux คุณสามารถหาได้โดย "cat / proc / sys / net / ipv4 / ip_local_port_range" --- ช่วงเริ่มต้นคือ "32768 ถึง 61000"
Arul Selvan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.