1. 程式人生 > >關於繫結IP地址與埠號的見解

關於繫結IP地址與埠號的見解

客戶和伺服器通過呼叫函式bind時可以指定IP地址或埠號,可以都指定,也可以都

不指定根據期望的結果,對sin_addr和sin_port,或sin6_addr和sin6_port應置為什麼值,下面做了總結:

/**

程序指定

結果
IP地址

通配地址
0
核心選擇IP地址和埠
通配地址
非0
核心選擇IP地址,程序指定埠
本地IP地址
0
程序指定IP地址,核心選擇埠
本地IP地址
非0
程序指定IP地址和埠

**/

客戶端

1.TCP客戶端:

1)當TCP客戶未繫結IP地址,當它呼叫connect時核心會根據外出介面給它繫結一個IP地址和一個臨時埠號。並且TCP伺服器在接到這個連線後會以這個IP地址作為迴應資料報的目的IP地址。

2)當TCP客戶綁定了IP地址,它就為發出的資料連線指定了一個源IP地址,並且TCP伺服器在接到這個連線後會以這個IP地址作為迴應資料報的目的IP地址。

3)TCP客戶只能根據四元組(原埠號,原IP地址,目的埠號,目的IP地址)接受資料報。

2.UDP客戶端:

1)當UDP客戶未繫結IP地址,當它呼叫sendto時核心會根據外出介面給它繫結一個IP地址和一個臨時埠號。(UDP客戶可以接收到達它繫結的臨時埠的任何UDP資料報)。

2)當UDP客戶綁定了IP地址,它就為發出的資料報指定了一個源IP地址,並且UDP伺服器在接到這個資料報後會以這個IP地址作為迴應資料報的目的IP地址。(UDP客戶只能接收到達它繫結的臨時埠並且目的地址為它繫結的IP地址

的UDP資料報)。

3)當UDP客戶呼叫connect,核心記錄下對方的IP地址和埠號,它們包含在傳遞給connect的套介面地址結構中,併為UDP客戶綁定了一個臨時埠號和IP地址。(UDP客戶只能接收目的IP地址為它繫結的IP地址和埠號並且源IP地址為它指定對方的IP地址和埠號的資料報)。

伺服器端

1.TCP伺服器:

1)當TCP伺服器繫結通配IP地址,套介面會接收到達它繫結埠的任何TCP連線。並以接收的目的IP地址作為它的源IP地址(用以確定四源組),以接收的源IP地址作為它的目的IP地址發回應答。

2)當TCP伺服器繫結本地IP地址,這就限制了套介面只接收到達它繫結埠並且目的地址為此IP地址的客戶連線。以繫結的目的IP地址作為源IP地址(當然,繫結的IP地址肯定與接收連線的目的IP地址相同,否則它不會接收),並以接收的源IP地址作為它的目的IP地址發回應答。

2.UDP伺服器:

1)當UDP伺服器繫結通配IP地址,套介面會接收到達它繫結埠的任何UDP資料報。並以資料報的外出介面的主IP地址為源IP地址,以接收到的源IP地址作為它的目的IP地址發回應答。

2)當UDP伺服器繫結本機IP地址,這就限制了套介面只接收到達它繫結埠並且目的地址為此IP地址的UDP資料報。並以繫結的IP地址作為源IP地址,以接收的源IP地址作為它的目的IP地址發回應答。

3)當UDP伺服器呼叫connect,核心記錄下對方的IP地址和埠號,它們包含在傳遞給connect的套介面地址結構中,併為UDP伺服器綁定了一個臨時埠號和IP地址。(UDP伺服器只能接收目的IP地址為它繫結的IP地址和埠號並且源IP地址為它指定對方的IP地址和埠號的資料報)。

相關推薦

關於IP地址見解

客戶和伺服器通過呼叫函式bind時可以指定IP地址或埠號,可以都指定,也可以都 不指定,根據期望的結果,對sin_addr和sin_port,或sin6_addr和sin6_port應置為什麼值,下面

Linux的Apache應用筆記--指定地址

配置Apache HTTP伺服器來監聽特定的地址和埠 概述 Listen: 監聽指定的埠或主機地址或者兩者的組合,這決定了httpd如何響應不同的ip地址、主機名和埠。 為了讓主機響應埠8

node——5-ip地址 的概念

所有聯網的程式都需要進行網路通訊,都會佔用一個埠號 可以同時開啟多個服務,但要保證不同服務佔用的埠號不一致 計算機中只有一個物理網絡卡,而且同一個區域網中,網絡卡的地址必須是唯一的。 網絡卡是通過唯一的 ip 地址來進行定位的。 IP 地址用來定位計算機 埠號用來定位具體的應用程式(

嵌入式Linux網路程式設計,網路基礎,套接字socket(SOCK_STREAM、SOCK_DGRAM、SOCK_RAW),IP地址,位元組序,位元組序轉換函式,IP地址的轉換

文章目錄 1,socket 1.1,socket的型別(SOCK_STREAM、SOCK_DGRAM、SOCK_RAW) 1.2,socket的位置 2,IP地址 2.1,特殊IP地址: 3,埠號

【119】用Java實現TCP協議的IP地址的轉發功能

最近碰到了這樣的需求:使用者通過TCP訪問伺服器 A,伺服器 A 再把 TCP 請求轉發給伺服器 B;同時伺服器 A 把伺服器 B 返回的資料,轉發給使用者。也就是伺服器 A 作為中轉站,在使用者和伺服器 B 之間轉發資料。示意圖如下: 為了滿足這個需求,

IP地址、網路位元組序

一.IP地址1. 簡單認識    IP協議有兩個版本:IPv4和IPv6。        (1)IP地址在IP協議中,用來標識網路中不同主機的地址。        (2)對於IPv4來講,IP地址是一個4位元組,32位的整數;對於IPv6來講,IP地址是一個16位元組,128位的整數。(3)我們常用“點分十進

根據socket獲取IP地址

String CTalkRoomDlg::GetSocketInfo(SOCKET sSocket) {   CString strFmt;   sockaddr_in addr;   int nLen = sizeof(addr);   getsockname(sSock

Socket獲取客戶端IP地址

  Socket類包含一些非常有用的屬性,這些屬性允許確定關於正在連線的客戶端的資訊。其中關鍵資訊之一是返回EndPoint物件的RemoteEndPoint屬性。EndPoint類本身是抽象的,要想收集有用的資訊,需·要把EndPoint強制型別轉換為IPEndPoint物

Winsock:獲取UDP資料傳送端的IP地址

 UDP的接收端使用函式 recvfrom接收資料,這個函式在winsock.h中定義如下: int recvfrom( __in SOCKET s, __out char* buf, __in int len,

IP地址(1024-65535)的正則表示式

工作需要,網上找了好久,分享下能用的。 IP地址: "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\." + "(1\\d{2}|2[0-4]\\d|2

黑客如何通過使用你的ip地址來入侵你的電腦,我們又該如何防範

ports of target’s IP address[ xxxx ] .Open ports are like closed door without locks, you can go inside and outside easily.Note down open ports somewhere w

本地遠端連線雲伺服器的Mysql , 連線不了問題的可能原因: ip,設定訪問許可權,開放

1. 先設定雲伺服器上的mysql允許遠端訪問 . 編輯檔案/etc/mysql/mysql.conf.d/mysqld.cnf: sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 註釋掉bind-address = 127.0.0.1:修改為

C# Socket程式設計之IP

 Socket serverSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);  //獲取Socket     &

Qt自動獲取本機IPTCP客戶端IP

       客戶端使用特定的埠號與伺服器進行通訊,這是在進行網路程式設計開發時候經常容易遇到的問題。這篇部落格是關於網路程式設計中客戶端編寫的小總結。 繫結埠號        在Qt的Socket開發中,有豐富的函式可以呼叫,要實現客戶端繫結指定的埠,只需要在建立Soc

如何hosts檔案?怎麼將IP地址域名

什麼是Hosts檔案?Hosts是一個沒有副檔名的系統檔案,主要作用是定義IP地址和主機名的對映關係,就是將一些常用的域名網址與其對應的IP地址建立一個關聯“資料庫”,當用戶在瀏覽器中輸入一個需要登入的網址時,系統會首先自動從Hosts檔案中尋找對應的IP地址,如果找到,系統會立即開啟對應網頁,若沒有找到,則

Windows 7下用arp命令IP和MAC地址,提示“ARP 項新增失敗: 拒絕訪問”的解決方法

在Win 7版本以管理員身份執行時提示:“ARP 項新增失敗:請求的操作需要提升。”    解決辦法: CMD中輸入:netsh i  i show in  //注意兩個i之間是有空格的 然後找到“本地連線”對應的 “Idx” (我的是

linux ping IP地址telnet 測試IP

ping命令是不能夠測試埠的,ping只是測試網路聯接狀況以及資訊包傳送和接收狀況。 格式:ping IP地址或主機名 [-t] [-a] [-n count] [-l size] 引數含義:-t不停

Linux Arp命令IP和MAC地址防止ARP欺騙

Linux Arp命令危害:Linux Arp命令危害極大,有的病毒就使用ARP欺騙,不僅影響自身機器,同時也會影響同網段的其它機器,將其它機器的HTTP資料包里加入病毒程式碼。 1、程式碼例子如:<html><iframe src=http://病毒連結.htm width=0 h

Android中驗證輸入是否為漢字及手機號,郵箱驗證,IP地址可用port驗證

bili repl ips gettext content 驗證 arr mat 數據 1,驗證是否為漢字 // 驗證昵稱 private boolean verifyNickname() { String nickname = edt_use

IP地址MAC地址

class gateway 運行 釋放 width 無法 是否 adapter sub 眾所周知,每一塊網卡在出廠時都燒錄了世界唯一的MAC地址,使用該地址可以在網絡中識別不同的計算機。同時,互聯網中也使用IP地址來定位客戶端,這是因為IP地址比MAC地址定位更方便,而且也