TCP(4) FreeBSD カーネルインタフェースマニュアル TCP(4)
名称
tcp − インターネットトランスミッションコントロールプロトコル |
書式
#include <sys/types.h> int |
socket(AF_INET, SOCK_STREAM, 0); |
解説 |
TCP プロトコルは信頼性のある、フロー制御された、全二重のデータ転送を提供 します。本プロトコルは SOCK_STREAM として抽象化された機能をサポートするも のとして使用される、バイトストリーム型のプロトコルです。 TCP は標準のイン ターネットアドレスフォーマットを使用し、加えてホスト毎の ‘‘ポートアドレ ス’’ の集合も使用します。従って各アドレスは、ホスト及びネットワークを特定 するインターネットアドレスと、ホスト上のピアエンティティを識別する特定 TCP ポートから構成されます。 tcp プロトコルを利用しているソケットは ‘‘能動型’’ および ‘‘受動型’’ の 2 種類があります。能動型のソケットは、受動型のソケットに対しコネクションを 開始します。デフォルトでは TCP ソケットは能動型のものが作成されます。受動 型ソケットを作成するには、 bind(2) システムコールでソケットをバインドした 後、 listen(2) システムコールを使う必要があります。受動型ソケットのみが、 accept(2) コールを使用して、入力されるコネクション要求を受け付けることが できます。また、能動型ソケットのみが、 connect(2) コールを使用してコネク ションを開始することができます。 TCP はさらに、トランザクション TCP と呼 ばれるデータグラムの様なモードもサポートしています。本件に関しては ttcp(4) で述べられています。 受動型ソケットは複数のネットワークから来るコネクション要求に対処するため に、その位置を ‘‘明確に指定しない’’ ことができます。この技術は ‘‘ワイルド カードアドレッシング’’ と呼ばれ、単一のサーバが複数のネットワーク上のクラ イアントにサービスを提供することができます。全ネットワークからのコネク ション要求に応答するソケットを作成するには、インターネットアドレス INADDR_ANY をバインドする必要があります。この時点でも、 TCP ポートを指定 できます。もしポートが指定されていない場合はシステムがポートを割り当てま す。コネクションが一度確立されると、ソケットのアドレスはピアエンティティ の場所により固定されます。ソケットが割り当てられたアドレスは、ネットワー クインタフェースと結び付けられており、このネットワークインタフェースを通 してパケットが送受信されます。普通、このアドレスはピアエンティティのネッ トワークと一致します。 TCP はソケットのオプションをいくつかサポートしており、それらは setsockopt(2) により設定できます。また、 getsockopt(2) によりオプションの 設定を調べることができます: |
TCP_NODELAY
大抵の状況下において、 TCP はデータが現れるとそれを送信しま す。確認応答されていないデータが残っている場合は、確認応答 が受信された時すぐに一つのパケットで送信するために少量の出 力データを集めておきます。応答を受け取らないマウスイベント のストリームを送信するウィンドウシステムのような少数のクラ イアントにとっては、このパケット化は重大な遅延の原因となり ます。ブールオプション TCP_NODELAY によりこのアルゴリズムを 無効にすることができます。 TCP_MAXSEG TCP_NOOPT TCP_NOPUSH setsockopt(2) コールにおけるオプションレベルは TCP のプロトコルナンバであ り、 getprotobyname(3) あるいは IPPROTO_TCP から得ることができます。オプ ションは、すべて 〈netinet/tcp.h〉 で定義されています。 IP トランスポートレベルでのオプションは TCP で使用可能です。本件は ip(4) を参照してください。ソースルートの入力コネクション要求が記載されており、 また逆向きのソースルートが応答で使用されます。 MIB の変数 |
tcp プロトコルは、 sysctl(3) MIB の net.inet ブランチで 3 つの変数を実装 しています。 |
TCPCTL_DO_RFC1323
(tcp.rfc1323) RFC 1323 のウィンドウスケーリング及びタ イムスタンプのオプションの実装 (デフォルトは真)。 TCPCTL_DO_RFC1644 TCPCTL_MSSDFLT 診断 |
ソケット操作の失敗の際には次のエラーのうちの一つが返されます: |
[EISCONN]
既にコネクションが確立されているソケットに対しさらにコネ クションを確立させようとした時 [ENOBUFS] [ETIMEDOUT] [ECONNRESET] [ECONNREFUSED] [EADDRINUSE] [EADDRNOTAVAIL] [EAFNOSUPPORT] 関連項目 |
getsockopt(2), socket(2), sysctl(3), inet(4), intro(4), ip(4), ttcp(4) |
V. Jacobson, R. Braden, and D. Borman, TCP Extensions for HighPerformance, RFC 1323. R. Braden, T/TCP − TCP Extensions for Transactions, RFC 1644.
歴史
tcp プロトコルは 4.2BSD から登場しました。ウィンドウスケーリング及びタイ ムスタンプに関する RFC 1323 の拡張機能は 4.4BSD で追加されました。 4.2 Berkeley Distribution February 14, 1995 4.2 Berkeley Distribution |