第3章 Socket Simulator - Options
SOCTEST - USER'S GUIDE

本章では、ソケットオプションについて説明します。

このアプリでは、SOL_SOCKET、IPPROTO_TCP、IPPROTO_UDP、および IPPROTO_IP のオプションに対応しています。
各オプションの機能詳細については、man page やインターネット公開サイトの情報も併せて参考にしてください。


SOL_SOCKET オプション

オプション名説明
SO_DEBUGソケットのデバッグ機能を有効にする。
SO_ACCEPTCONNソケットがリスニング中かどうかを返す(取得のみ)。
SO_REUSEADDRローカルアドレスの再利用を可能にする。
SO_KEEPALIVEソケットに対する keep-alive プローブの送信を有効にする。
SO_DONTROUTE直接接続されているホストにのみ送信する。
SO_BROADCASTブロードキャストアドレスへデータグラムの送信を許可する。
SO_USELOOPBACKハードウェアをバイパスして通信する機能を有効にする。
SO_LINGERデータがすべて送信完了またはタイムアウトするまで返らなくする。
SO_OOBINLINE帯域外(out-of-band)データを受信データストリームに置く。
SO_REUSEPORT1 つのポートを複数プロセスで bind することを可能にする。
SO_TIMESTAMPタイムスタンプを制御メッセージで受け取る。
SO_TIMESTAMP_MONOTONICモノトニッククロックのタイムスタンプを制御メッセージで受け取る。
SO_SNDBUFソケットの送信バッファーの最大サイズ(バイト単位)。
SO_RCVBUFソケットの受信バッファーの最大サイズ(バイト単位)。
SO_SNDLOWAT送信バッファー中に溜められるデータの最小値(バイト単位)。
SO_RCVLOWAT受信バッファー中に溜められるデータの最小値(バイト単位)。
SO_SNDTIMEO送信タイムアウト(秒単位)。
SO_RCVTIMEO受信タイムアウト(秒単位)。
SO_ERROR保留のソケットエラーを取得してクリアする(取得のみ)。
SO_TYPEソケットタイプ(取得のみ)。
  • SOCK_STREAM(1): 双方向接続のバイトストリーム型ソケット
  • SOCK_DGRAM(2): コネクションレスのデータグラム型ソケット
SO_NUMRCVPKTSOCK_DGRAM ソケットのバッファー内の受信データグラム数(取得のみ)。
SO_NET_SERVICE_TYPENetwork service type.
  • NET_SERVICE_TYPE_BE(0): Best effort
  • NET_SERVICE_TYPE_BK(1): Background system initiated
  • NET_SERVICE_TYPE_SIG(2): Signaling
  • NET_SERVICE_TYPE_VI(3): Interactive Video
  • NET_SERVICE_TYPE_VO(4): Interactive Voice
  • NET_SERVICE_TYPE_RV(5): Responsive Multimedia Audio/Video
  • NET_SERVICE_TYPE_AV(6): Multimedia Audio/Video Streaming
  • NET_SERVICE_TYPE_OAM(7): Operations, Administration, and Management
  • NET_SERVICE_TYPE_RD(8): Responsive Data
SO_NETSVC_MARKING_LEVELGet QoS marking in effect for socket.(取得のみ)
  • 0: The outgoing network interface is not known
  • 1: Default marking at layer 2 (for example Wi-Fi WMM)
  • 2: Layer 3 DSCP marking and layer 2 marking for all Network Service Types
  • 3: The system policy limits layer 3 DSCP marking and layer 2 marking to background Network Service Types


IPPROTO_TCP オプション

オプション名説明
TCP_NODELAY各セグメントが可能な限り早く送信されるようにする(Nagle アルゴリズムを無効にする)。
TCP_MAXSEG送出 TCP パケットの最大セグメントサイズ(バイト単位)。
TCP_NOOPTTCP オプションを無効にする。
TCP_NOPUSHPUSH ビットをセットした即時データ送信を無効にする。
TCP_KEEPALIVEkeep-alive プローブ送信前に維持するアイドル時間(秒単位)。
Linux の TCP_KEEPIDLE と同じ。
TCP_CONNECTIONTIMEOUT接続タイムアウト(秒単位)。
TCP_RXT_CONNDROPTIMETCP 再送が停止するまでの時間(秒単位)。
TCP_RXT_FINDROPFIN 再送を 3 回実施後にコネクッションを破棄する。
TCP_KEEPINTVL各 keep-alive プローブの間隔(秒単位)。
TCP_KEEPCNTkeep-alive プローブの最大回数。
TCP_SENDMOREACKSデータ受信毎に ACK 応答する。
TCP_ENABLE_ECN明示的な輻輳通知(ECN)を有効にする。
TCP_FASTOPENサーバーソケットで TFO(TCP Fast Open)を使用するように要求する。
TCP_CONNECTION_INFOTCP 接続レベルの統計情報を取得する(取得のみ)。
TCP_NOTSENT_LOWAT送信バッファー内の未送信データサイズを制限する(バイト単位)。


IPPROTO_UDP オプション

オプション名説明
UDP_NOCKSUM送信データグラムのチェックサムを無効にする。


IPPROTO_IP オプション

オプション名説明
IP_OPTIONS受信パケットの IP オプションを取得する。
オプションが設定されていれば、その内容を 16 進ダンプで表示する。

また、送信パケットの IP オプションを設定・クリアする。
設定する内容は、事前に Data Manager で作成・登録する必要がある。
IP_HDRINCLカーネルが IP ヘッダーを付加することを抑制する。
IP_TOSIP ヘッダー内のサービスタイプ(TOS: type-of-service)フィールドを設定する。
IP_TTLIP ヘッダー内の生存時間(TTL: time-to-live)フィールドを設定する(ホップ数)。
IP_RECVOPTS到着した全ての IP オプションを制御メッセージで受け取る。
IP_RECVRETOPTS応答のための IP オプションを制御メッセージで受け取る。
IP_RECVDSTADDR送信先 IP アドレスを制御メッセージで受け取る。
IP_RETOPTS補助データでの IP オプションの設定 / 受信を有効にする。
IP_MULTICAST_IFマルチキャストデータグラムを送信するインターフェースの IP アドレスを設定する。
IP_MULTICAST_TTLマルチキャストデータグラムの TTL を設定する(0 から 255 までの任意の値)。
IP_MULTICAST_LOOPマルチキャストデータグラムのローカルループバックを有効にする。
IP_ADD_MEMBERSHIPマルチキャストグループに参加する(設定のみ)。
IP_DROP_MEMBERSHIPマルチキャストグループから抜ける(設定のみ)。
IP_PORTRANGEローカルポート番号の範囲を設定する。
  • IP_PORTRANGE_DEFAULT(0): デフォルトのポート範囲、通常は 1024 から 5000
  • IP_PORTRANGE_HIGH(1): 大きなポート範囲、通常は 49152 から 65535
  • IP_PORTRANGE_LOW(2): 小さなポート範囲、通常は 1024 から 1 までの降順(iOS カーネルで特権プロセスに使用が限定されている可能性がある)
IP_RECVIF受信データグラムのインターフェースを受け取る。
IP_STRIPHDR受信パケットから IP ヘッダーを除外する。
IP_RECVTTL補助メッセージでの TTL 受信を有効にする。
IP_BOUND_IFソケットにインターフェースをバインドする。
IP_PKTINFO
(IP_RECVPKTINFO)
補助データでの pktinfo の設定 / 受信を有効にする。
IP_RECVTOS補助メッセージでの TOS 受信を有効にする。
IP_DONTFRAGIP フラグメントを禁止する。