簡體   English   中英

是使用C套接字編程來偵聽防火牆“后面”還是“后面”的傳入數據?

[英]Is using C socket programming to listen for incoming data “behind” or “after” a firewall?

最近,我一直在研究使用C語言進行網絡套接字編程。 我想知道我是否編寫一個程序來偵聽傳入的數據,這是在防火牆之前還是之后?

我了解的是像nginx,lighttpd或cherokee這樣的Web服務器使用套接字編程來偵聽數據,但是我可以設置防火牆(如OpenBSD的“ pf”)來控制傳入的數據,因此似乎C語言中的套接字編程是在防火牆之后。

但是,如果是這樣,那么如何編寫防火牆? 他們如何監聽來自特定端口的傳入數據?

防火牆由內核在網絡代碼的不同部分實現。 從本質上講,它相當於一系列“鈎子”(可以通過內核空間或用戶空間或兩者訪問),它們可以通知活動。

該活動可以是傳入(入口)或傳出(出口),這取決於誰發起了數據包。 對於每個數據包,通常是針對有狀態的面向連接協議的每個連接,都為防火牆提供了重寫,否決(例如返回錯誤)或簡單地靜默丟棄給定數據包或連接的機會。 (實施方式各不相同,可用的操作可能更復雜)。

關鍵是接口與普通的套接字接口完全不同-有人告訴您事情正在發生,並詢問與此相關的操作,但是您沒有得到相同的接受/收聽/連接樣式接口,通常用於套接字編程。

例如,在Linux上,防火牆被實現為此數據包流程圖中的輸入/輸出“過濾器”框,而您的套接字代碼發生在頂部的紅色層(標記為“協議/應用層”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM