共用方式為


<socket> 元素(網路設定)

規定套接字操作是否使用完備埠。

<組態>
   <system.net>
     <場景設定>
       <插座>

語法

<socket
  alwaysUseCompletionPortsForConnect="true|false"
  alwaysUseCompletionPortsForAccept="true|false"
  ipProtectionLevel="EdgeRestricted|Restricted|Unrestricted|Unspecified"
/>

屬性和項目

下列章節說明屬性、子元素和父元素。

Attributes

Attribute 說明
alwaysUseCompletionPortsForAccept 表示套接字是否應該總是使用完成埠來呼叫 Accept 方法。 預設值是 false
alwaysUseCompletionPortsForConnect 指示套接字是否應該總是使用完成埠來呼叫 Connect。 預設值是 false
ipProtectionLevel 指定插槽的預設 System.Net.Sockets.IPProtectionLevel 使用方式。 預設值依 Windows 版本而異。

子元素

沒有。

父項目

元素 說明
設定 配置命名空間的基本網路選項 System.Net

備註

alwaysUseCompletionPortsForAcceptalwaysUseCompletionPortsForConnect屬性用來指定類別System.Net.Sockets在 .namespace 中使用完備埠的預設行為。 高效能伺服器應用建議使用完成埠。

和屬性的預設值alwaysUseCompletionPortsForAcceptfalsealwaysUseCompletionPortsForConnect

AlwaysUseCompletionPortsForAccept可用來從適用的設定檔取得該屬性的alwaysUseCompletionPortsForAccept當前值。 AlwaysUseCompletionPortsForConnect可用來從適用的設定檔取得該屬性的alwaysUseCompletionPortsForConnect當前值。

屬性 ipProtectionLevel 指定了套接字的預設 System.Net.Sockets.IPProtectionLevel 使用。 此 IPProtectionLevel 特性允許將 IPv6 套接字設定限制至指定範圍,例如具有相同連結本地或站點本地前綴的位址。 此選項允許應用程式對 IPv6 套接字設置存取限制。 這些限制使得運行於私有區域網路上的應用程式能夠簡單且穩健地強化自身,抵禦外部攻擊。 此選項可擴大或縮小監聽套接字的範圍,允許公共及私人使用者在適當時不受限制地存取,或僅限制存取同一站點。

ipProtectionLevel 屬性設定僅影響初始輸入流量:

  • 一台 TCP 伺服器在 socket 上監聽進來的連線。

  • 一個 UDP 應用程式在套接字上接收封包。

此設定不影響已建立的 TCP 連線(流量雙向無限制),也不影響發送 UDP 封包的應用程式。

屬性設定的可能值 ipProtectionLevel 對應列舉中 System.Net.Sockets.IPProtectionLevel 指定的保護等級,具體如下:

屬性值 說明
EdgeRestricted IP 保護等級是邊緣限制的。 這個數值會被設計成跨網際網路運作的應用程式使用。 此設定不允許使用 Windows Teredo 實作進行網路位址轉換(NAT)遍歷。 這些應用程式可能繞過 IPv4 防火牆,因此應用程式必須加強防護,以防針對開啟埠口的網路攻擊。 在 Windows Server 2003 和 Windows XP 中,socket 的 IP 保護等級預設值為邊緣限制。
受限制 IP 保護等級是有限的。 此值用於未實作網際網路情境的內聯網應用程式。 這些應用程式通常不會經過測試或加強網路式攻擊。 此設定將限制接收流量僅限於連結本地。
無限制的 IP 保護等級是無限制的。 此數值會被設計用於網際網路運作的應用程式,包括利用 Windows 內建的 IPv6 NAT 遍歷功能(例如 Teredo)。 這些應用程式可能繞過 IPv4 防火牆,因此應用程式必須加強防護,以防針對開啟埠口的網路攻擊。 在 Windows Server 2008 R2 和 Windows Vista 上,套接字的 IP 保護等級預設值為無限制。
未指定 IP 保護等級未明確說明。 在 Windows 7 與 Windows Server 2008 R2 中,套接字的 IP 保護等級預設值未指定。

該屬性的 ipProtectionLevel 預設值為 未指定

IPProtectionLevel此屬性可用來從適用的設定檔取得該屬性的ipProtectionLevel當前值。

組態檔

此元素可用於應用程式設定檔或機器設定檔(Machine.config)。

Example

以下範例說明如何指定應使用完備埠,且 System.Net.Sockets.IPProtectionLevel 預設埠應為無限制。

<configuration>
  <system.net>
    <settings>
      <socket
        alwaysUseCompletionPortsForAccept="true"
        alwaysUseCompletionPortsForConnect="true"
        ipProtectionLevel="Unrestricted"
       />
    </settings>
  </system.net>
</configuration>

另請參閱