通訊協定
供應商
定義於 fuchsia.posix.socket.packet/socket.fidl
封包通訊端供應商。
通訊端
要求封包通訊端。
- 要求
kind要建立的封包通訊端類型。
- 回應
socket封包通訊端。
要求
| 名稱 | 類型 |
|---|---|
kind |
Kind
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Provider_Socket_Result
|
SocketWithOptions
要求建立封包通訊端,並提供建立選項。
- 要求
kind要建立的封包通訊端類型。 - 要求通訊端的
opts建立選項。
- 回應
socket封包通訊端。
要求
| 名稱 | 類型 |
|---|---|
kind |
Kind
|
opts |
fuchsia.posix.socket/SocketCreationOptions
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Provider_SocketWithOptions_Result
|
通訊端
定義於 fuchsia.posix.socket.packet/socket.fidl
封包通訊端。
這個介面基本上是 POSIX。
此類型的所有方法都是非封鎖式,其確切行為與 Linux 對應項目相符。
警告:這項通訊協定尚未開放用戶端直接使用。用戶端應改用 BSD sockets API 與通訊端互動。我們計劃大幅變更這項通訊協定,如果用戶端直接與這項通訊協定結合,會使這些變更更加困難。
AttachBpfFilterUnsafe
附加指定的 eBPF 篩選器。篩選器應使用 2 個引數進行驗證
- 指向大小為 0 的封包,也就是說,不直接存取 (僅使用 cBPF 封包載入指令)。
- 封包大小 (BPF_LOAD)。不支援輔助函式和對應。
要求
| 名稱 | 類型 |
|---|---|
code |
vector<uint64>:4096
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Socket_AttachBpfFilterUnsafe_Result
|
裝訂
將通訊端繫結至通訊協定和/或介面。
- 要求
protocol通訊端的新通訊協定關聯。 - 要求
bound_interface_id通訊端的新介面繫結。
要求
| 名稱 | 類型 |
|---|---|
protocol |
ProtocolAssociation?
|
bound_interface_id |
BoundInterfaceId
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Socket_Bind_Result
|
複製
要求
| 名稱 | 類型 |
|---|---|
request |
server_end:fuchsia.unknown/Cloneable
|
關閉
終止連線。
呼叫 Close 後,用戶端不得傳送任何其他要求。
伺服器傳送狀態回應後,無論狀態為何,都應關閉連線,且不傳送 epitaph。
關閉管道的用戶端,在語意上應等同於呼叫 Close,而不知道關閉作業何時完成或其狀態。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.unknown/Closeable_Close_Result
|
描述
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
SocketDescribeResponse
|
GetAcceptConn
取得 SOL_SOCKET -> SO_ACCEPTCONN。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetAcceptConn_Result
|
GetBindToDevice
取得 SOL_SOCKET -> SO_BINDTODEVICE。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetBindToDevice_Result
|
GetBindToInterfaceIndex
取得 SOL_SOCKET -> SO_BINDTOIFINDEX。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetBindToInterfaceIndex_Result
|
GetBroadcast
取得 SOL_SOCKET -> SO_BROADCAST。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetBroadcast_Result
|
GetCookie
取得 SOL_SOCKET -> SO_COOKIE。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetCookie_Result
|
GetError
取得 SOL_SOCKET -> SO_ERROR。
如果通訊端有錯誤設定,則傳回最後一個錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetError_Result
|
GetInfo
傳回通訊端的屬性。
- 回應
kind通訊端的Kind。 - 回應
protocol通訊端的通訊協定關聯 (如有)。 - 回應
bound_interface屬性。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Socket_GetInfo_Result
|
GetKeepAlive
取得 SOL_SOCKET -> SO_KEEPALIVE。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetKeepAlive_Result
|
GetLinger
取得 SOL_SOCKET -> SO_LINGER。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetLinger_Result
|
GetMark
例如 SOL_SOCKET -> SO_MARK。主要差異在於,與標準 SO_MARK 不同,這個 API 有多個標記網域,且每個標記都可以在各個網域中獨立擷取。
要求
| 名稱 | 類型 |
|---|---|
domain |
fuchsia.net/MarkDomain
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetMark_Result
|
GetNoCheck
取得 SOL_SOCKET -> SO_NO_CHECK。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetNoCheck_Result
|
GetOutOfBandInline
取得 SOL_SOCKET -> SO_OOBINLINE。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetOutOfBandInline_Result
|
GetReceiveBuffer
取得 SOL_SOCKET -> SO_RCVBUF。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetReceiveBuffer_Result
|
GetReuseAddress
取得 SOL_SOCKET -> SO_REUSEADDR。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetReuseAddress_Result
|
GetReusePort
取得 SOL_SOCKET -> SO_REUSEPORT。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetReusePort_Result
|
GetSendBuffer
取得 SOL_SOCKET -> SO_SNDBUF。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetSendBuffer_Result
|
GetTimestamp
取得 SOL_SOCKET -> SO_TIMESTAMP 或 SO_TIMESTAMPNS。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_GetTimestamp_Result
|
查詢
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
protocol |
vector<uint8>
|
RecvMsg
從通訊端接收訊息。
- request
want_packet_info要求傳回封包的相關資訊。 - 要求
data_len回應資料緩衝區允許的最大長度。 - 要求
want_control要求傳回輔助資料。 - 要求
flags標記,用於接收要求。
- 回應
packet_info封包相關資訊 (如有要求)。 data訊息。- 回應
control控制訊息 (如有要求)。 - 回應
truncated會指出傳回的訊息是否遭到截斷。
要求
| 名稱 | 類型 |
|---|---|
want_packet_info |
bool
|
data_len |
uint32
|
want_control |
bool
|
flags |
fuchsia.posix.socket/RecvMsgFlags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Socket_RecvMsg_Result
|
SendMsg
透過通訊端傳送訊息。
- 要求提供封包的
packet_info資訊。 - 要求
data訊息。 - 要求
control輔助資料。 - 要求
flags標記,用於傳送要求。
要求
| 名稱 | 類型 |
|---|---|
packet_info |
PacketInfo?
|
data |
vector<uint8>
|
control |
SendControlData
|
flags |
fuchsia.posix.socket/SendMsgFlags
|
回應
| 名稱 | 類型 |
|---|---|
payload |
Socket_SendMsg_Result
|
SetBindToDevice
設定 SOL_SOCKET -> SO_BINDTODEVICE。
要求
| 名稱 | 類型 |
|---|---|
value |
fuchsia.net.interfaces/Name
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetBindToDevice_Result
|
SetBindToInterfaceIndex
設定 SOL_SOCKET -> SO_BINDTOIFINDEX。如果 value 為 0,則會清除繫結介面。
要求
| 名稱 | 類型 |
|---|---|
value |
fuchsia.net/InterfaceId
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetBindToInterfaceIndex_Result
|
SetBroadcast
設定 SOL_SOCKET -> SO_BROADCAST。
要求
| 名稱 | 類型 |
|---|---|
value |
bool
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetBroadcast_Result
|
SetKeepAlive
設定 SOL_SOCKET -> SO_KEEPALIVE。
要求
| 名稱 | 類型 |
|---|---|
value |
bool
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetKeepAlive_Result
|
SetLinger
設定 SOL_SOCKET -> SO_LINGER。
要求
| 名稱 | 類型 |
|---|---|
linger |
bool
|
length_secs |
uint32
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetLinger_Result
|
SetMark
例如設定 SOL_SOCKET -> SO_MARK。主要差異在於,與標準 SO_MARK 不同,這個 API 有多個標記網域,且每個標記都可以在各個網域中獨立設定。
要求
| 名稱 | 類型 |
|---|---|
domain |
fuchsia.net/MarkDomain
|
mark |
fuchsia.posix.socket/OptionalUint32
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetMark_Result
|
SetNoCheck
設定 SOL_SOCKET -> SO_NO_CHECK。
要求
| 名稱 | 類型 |
|---|---|
value |
bool
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetNoCheck_Result
|
SetOutOfBandInline
設定 SOL_SOCKET -> SO_OOBINLINE。
要求
| 名稱 | 類型 |
|---|---|
value |
bool
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetOutOfBandInline_Result
|
SetReceiveBuffer
設定 SOL_SOCKET -> SO_RCVBUF。
要求
| 名稱 | 類型 |
|---|---|
value_bytes |
uint64
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReceiveBuffer_Result
|
SetReuseAddress
設定 SOL_SOCKET -> SO_REUSEADDR。
要求
| 名稱 | 類型 |
|---|---|
value |
bool
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReuseAddress_Result
|
SetReusePort
設定 SOL_SOCKET -> SO_REUSEPORT。
要求
| 名稱 | 類型 |
|---|---|
value |
fuchsia.posix.socket/ReusePortOption
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReusePort_Result
|
SetReusePortDeprecated
要求
| 名稱 | 類型 |
|---|---|
value |
bool
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetReusePortDeprecated_Result
|
SetSendBuffer
設定 SOL_SOCKET -> SO_SNDBUF。
要求
| 名稱 | 類型 |
|---|---|
value_bytes |
uint64
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetSendBuffer_Result
|
SetTimestamp
將 SOL_SOCKET 設為 SO_TIMESTAMP 或 SO_TIMESTAMPNS。
要求
| 名稱 | 類型 |
|---|---|
value |
fuchsia.posix.socket/TimestampOption
|
回應
| 名稱 | 類型 |
|---|---|
payload |
fuchsia.posix.socket/BaseSocket_SetTimestamp_Result
|
STRUCTS
空白
定義於 fuchsia.posix.socket.packet/socket.fidl
<EMPTY>
InterfaceProperties
定義於 fuchsia.posix.socket.packet/socket.fidl
介面的屬性。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
id |
fuchsia.net/InterfaceId
|
介面的 ID。 |
無預設值 |
addr |
HardwareAddress
|
介面的硬體位址。 |
無預設值 |
type |
HardwareType
|
介面的硬體類型。 |
無預設值 |
PacketInfo
定義於 fuchsia.posix.socket.packet/socket.fidl
封包相關資訊。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
protocol |
Protocol
|
無預設值 | |
interface_id |
fuchsia.net/InterfaceId
|
無預設值 | |
addr |
HardwareAddress
|
無預設值 |
Provider_SocketWithOptions_Response 資源
定義於 fuchsia.posix.socket.packet/socket.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
socket |
client_end:Socket
|
無預設值 |
Provider_Socket_Response 資源
定義於 fuchsia.posix.socket.packet/socket.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
socket |
client_end:Socket
|
無預設值 |
RecvPacketInfo
定義於 fuchsia.posix.socket.packet/socket.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
packet_info |
PacketInfo
|
無預設值 | |
packet_type |
PacketType
|
無預設值 | |
interface_type |
HardwareType
|
無預設值 |
Socket_AttachBpfFilterUnsafe_Response
定義於 fuchsia.posix.socket.packet/socket.fidl
<EMPTY>
Socket_Bind_Response
定義於 fuchsia.posix.socket.packet/socket.fidl
<EMPTY>
Socket_GetInfo_Response
定義於 fuchsia.posix.socket.packet/socket.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
kind |
Kind
|
無預設值 | |
protocol |
ProtocolAssociation?
|
無預設值 | |
bound_interface |
BoundInterface
|
無預設值 |
Socket_RecvMsg_Response
定義於 fuchsia.posix.socket.packet/socket.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
packet_info |
RecvPacketInfo?
|
無預設值 | |
data |
vector<uint8>
|
無預設值 | |
control |
RecvControlData
|
無預設值 | |
truncated |
uint32
|
無預設值 |
Socket_SendMsg_Response
定義於 fuchsia.posix.socket.packet/socket.fidl
<EMPTY>
列舉
HardwareType strict
類型:uint32
定義於 fuchsia.posix.socket.packet/socket.fidl
硬體類型。
| 名稱 | 值 | 說明 |
|---|---|---|
NETWORK_ONLY |
1 |
僅在網路層運作的硬體,也就是純 L3 介面。 這類硬體沒有 L2 標頭/定址。 |
ETHERNET |
2 |
在乙太網路連結上運作的硬體。 |
LOOPBACK |
3 |
可回送封包的硬體。 |
Kind strict
類型:uint32
定義於 fuchsia.posix.socket.packet/socket.fidl
一種封包通訊端。
| 名稱 | 值 | 說明 |
|---|---|---|
網路 |
1 |
使用網路層封包運作的封包通訊端。 |
連結 |
2 |
使用連結層封包運作的封包通訊端。 如果封包通訊端屬於這種類型,封包會在線路和用戶端之間傳遞,不會經過修改。 |
PacketType strict
類型:uint32
定義於 fuchsia.posix.socket.packet/socket.fidl
封包類型。
| 名稱 | 值 | 說明 |
|---|---|---|
HOST |
1 |
已抵達目的地的封包。 |
廣播 |
2 |
廣播的封包。 |
多點傳播 |
3 |
多點傳播的封包。 |
OTHER_HOST |
4 |
封包抵達的主機並非目的地。 |
OUTGOING |
5 |
在本機介面上傳送的封包,無論傳送方式為何 (單點傳播、多點傳播、廣播)。 |
TABLES
RecvControlData
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
socket |
fuchsia.posix.socket/SocketRecvControlData
|
通訊端層級輔助資料。 |
SendControlData
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
socket |
fuchsia.posix.socket/SocketSendControlData
|
通訊端層級輔助資料。 |
SocketDescribeResponse 資源
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
event |
handle<eventpair>
|
提供通訊端狀態的其他資訊,例如準備就緒或關閉。 |
UNIONS
BoundInterface strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
all |
Empty
|
|
2 |
specified |
InterfaceProperties
|
BoundInterfaceId strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
all |
Empty
|
|
2 |
specified |
fuchsia.net/InterfaceId
|
HardwareAddress 彈性
定義於 fuchsia.posix.socket.packet/socket.fidl
硬體位址。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
none |
Empty
|
表示硬體不支援連結層定址。 |
2 |
eui48 |
fuchsia.net/MacAddress
|
以 EUI-48 為基礎的位址。 |
ProtocolAssociation strict
定義於 fuchsia.posix.socket.packet/socket.fidl
封包通訊端的通訊協定關聯。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
all |
Empty
|
與所有通訊協定的關聯。 |
2 |
specified |
Protocol
|
與通訊協定的關聯。 |
Provider_SocketWithOptions_Result strict resource
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Provider_SocketWithOptions_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Provider_Socket_Result strict resource
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Provider_Socket_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_AttachBpfFilterUnsafe_Result strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Socket_AttachBpfFilterUnsafe_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_Bind_Result strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Socket_Bind_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_GetInfo_Result strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Socket_GetInfo_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_RecvMsg_Result strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Socket_RecvMsg_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
Socket_SendMsg_Result strict
定義於 fuchsia.posix.socket.packet/socket.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Socket_SendMsg_Response
|
|
2 |
err |
fuchsia.posix/Errno
|
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| SOCKET_PROTOCOL_NAME | fuchsia.posix.socket.packet/Socket |
String |
舊版通訊協定名稱。請改用產生的可偵測通訊協定名稱。 已移除:29
|
別名
| 名稱 | 值 | 說明 |
|---|---|---|
| 通訊協定 |
uint16 |
網路層通訊協定 (位於連結層上方)。 值由 https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml 定義。 |