【轉】socket通信顯示連接被拒絕問題總結

socket通信方式

    通常使用的是socket通信模式為c/s模式,就是通過服務端創建連接,并綁定監聽相關的端口,客戶端通過連接至相應的端口,實現使用tcp的三次握手來進行可靠性連接,從而達到數據傳輸。如果對應的客戶端和服務端在同一臺服務器上,因是數據內部通信方式,可直接相連接。但是當我們的客戶端和服務端分別部署在不同的服務器上,有時候會出現客戶端連接的時候提示connect refuse,連接拒絕,的問題。這種情況是因為防火墻開啟(*前提是服務端程序正常啟動,并正常監聽對應的端口*),說明服務端監聽的端口沒有放行,解決方法,而通過關閉防火墻,但是這并不是一種好的方法,因為畢竟防火墻為了保護服務器免予收到外部的攻擊,從而導致服務癱瘓。為了解決該方法,可以將我們需要監聽的端口配置在防火墻配置表里,讓其放行服務監聽的端口,這樣客戶端就能正常的連接至服務端,并開始的數據的發送接收處理。

如何將監聽的端口配置防火墻配置表中,讓其放行端口,如下所示:

(1)可以在/etc/sysconfig/iptables文件中配置將需要放行的端口進行配置,之后重啟防火墻,這樣該端口每次接收連接請求的時候就會進行放行,就不會攔截,導致連接被拒絕的問題。如圖所示:

如上如所示,默認的放行的端口為22,可以將自己使用的端口添加至該文件中,之后重啟防火墻命令:service iptables restart.

(2)直接通過命令行累添加

查看防火墻規則及編號:

iptables -nL --line-number

添加端口命令:

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 端口號 -j ACCEPT

保存執行的命令:

service iptalbes save

順帶介紹其他的幾個參數的含義:

  –A 參數就看成是添加一條規則

  –p 指定是什么協議,我們常用的tcp 協議,當然也有udp,例如53端口的DNS

  –dport 就是目標端口,當數據從外部進入服務器為目標端口

  –sport 數據從服務器出去,則為數據源端口使用 

   –j 就是指定是 ACCEPT -接收 或者 DROP 不接收

   -s 禁止某個IP的訪問:

  例如: iptables  -A INPUT  -p  tcp  -s 192.168.1.1 -j DROP  表示禁止該IP訪問該服務

   -D 刪除某個規則

  例如: iptables -D INPUT 2  表示刪除編號為2的規則、
  1. 還存在一種情況是,頻繁的啟動服務端程序導致系統內核中的文件描述符所占用的端口,尚未被釋放掉,需要等待一段時間釋放改端口的占用,之后再啟動方可成功啟動服務。但是并不能都等待,可在編寫程序的時候,設置socket地址重用,setblockopt該方法設置地址重用。

————————————————
版權聲明:本文為CSDN博主「一顆簡單的心」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_26105397/article/details/82747401

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.安全技術 (1)入侵檢測與管理系統(Intrusion Detection Systems): 特點是不阻斷任...
    尛尛大尹閱讀 2,487評論 0 2
  • 防火墻的概念iptables的簡介iptables命令網絡防火墻NATfirewalld服務 一、防火墻的概念 (...
    哈嘍別樣閱讀 1,847評論 0 1
  • iptables詳解 iptables簡介 netfilter/iptables(簡稱為iptables)組成Li...
    jony456123閱讀 549評論 0 0
  • 原文地址: http://powermichael.blog.51cto.com/12450987/1952049...
    Caiaolun閱讀 487評論 0 0
  • 01 從前有一個人去飯館吃飯,酒足飯飽之后,摸摸口袋才想起出來沒有帶錢,便對老板說:“今天沒帶錢,改天給您送來”。...
    木炎道人閱讀 870評論 0 1