請問大神們個困擾了我好久的問題:
假如我ip地址為124.xxx.xxx.207,現在我偽造一個ip為124.xxx.xxx.12的請求發送給服務器,
比如是我想通過偽造ip來向服務器投票,那么我發送給服務器的請求肯定可以讓服務器完成
投票任務的,現在服務器需要發送html給客戶端,那么它是發送給124.xxx.xxx.12那臺機器還是
我本來的機器呢?
我覺得是應該發送給本機,因為服務器沒有跟124.xxx.xxx.12的主機進行tcp連接,所以還是發送
給進行偽裝的本機。不知道對不對,請大神指點一下?
還有如果本機偽裝成另一個網段的ip地址的話比如200.xxx.xxx.23主機的話,又是怎么能路由到
服務器的呢?
uj5u.com熱心網友回復:
服務器是根誰握手就回發給誰,即便是你偽造的,但是回來的包就不一定到你本機,因為你偽造的IP地址說不準中間的路由器會給路由到哪里去了的uj5u.com熱心網友回復:
當建立tcp連接的時候,客戶端向服務端發送syn之后,服務端向客戶端發送ack確認,客戶端再向服務端發送ack,這樣之后兩端才會建立連接,所以你偽造Ip發送請求的時候發送syn之后,由于客戶端所在ip地址不存在,發送ack的服務器接收不到之后應該由客戶端回傳的ack導致服務器連接超時,關閉套接字,后面的資料傳送就無法完成,所以最后是沒法連接的。不過通過原始套接字大量偽造不存在ip發送syn可以可以使服務器不斷地發送ack卻得不到回復從而讓服務器崩潰。這也是一種攻擊的思路也是很常見的手法。
如果還不清楚lz主可以去查一下tcp鏈接的三路握手,在UNIX網路編程里面有很詳細的解釋
另外這張圖也可以幫助lz
uj5u.com熱心網友回復:
對了,syn攻擊不能叫服務器崩潰,由于服務器在呼叫listen函式的時候會維護一個訊息列隊,存放著所有正在執行與等待執行連接的套接字數量和,只有當一個完成連接套接字關閉之后訊息列隊數才會較少1,由于訊息列隊數是有最大值的(就是由listen()函式的第二個變數設定),當訊息列隊排滿之后,后面的連接只能等待若在設定的時間內仍無法排入列隊與服務器建立連接的話,那么連接就會超時而取消。syn攻擊大量占用列隊但是卻不能形成連接,導致后面正常的連接請求無法進入列隊而超時。這就是syn floodinguj5u.com熱心網友回復:
支持1樓的回答,你偽造的包,一般是不會回傳到你的,這是由路上的路由器決定的,你沒有辦法轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/136709.html
標籤:網絡通信
