TCP/IPソケットプログラミング-ソケット


プロトコル
  • 相互接続に必要なプロトコル
  • コンセントの作成
    # include <sys/socket.h>
    int socket(int domain, int type, int protocol);
    // 성공 시 fd, 실패 시 -1 반환
  • ドメイン:
  • プロトコルシリーズ(protocol family)、ソケットワードを転送するために使用されるプロトコル
  • タイプ:スロットのデータ転送方式.SOCK_STREAM or SOCK_DGRAM
  • プロトコル:通信用のプロトコル.最終的に選択されたプロトコル.
  • プロトコルシステム
    ソケットワードは通信に使用されるプロトコルが多種多様である.各種プロトコルを分類する情報をプロトコル体系と呼ぶ.socket関数の最初のパラメータとして渡されます.
    名称プロトコルシリーズPF INETIPv 4インターネットプロトコル体系PF INET 6 IPv 6インターネットプロトコル体系PF LOCALローカル通信のUNIXプロトコル体系PF PACKETLOWレベルソケットのプロトコル体系PF IPXIPXノーベルプロトコル体系構造
    socket関数の3番目のパラメータが実際に使用される最終プロトコル.この値は、プロトコル・アーキテクチャ内の最初のパラメータとしての範囲内で決定されます.
    コンセントタイプ
    スロットのデータ転送方式.socket関数の2番目のパラメータ.1つのプロトコルシステムには、複数のデータ伝送方式があり得る.
  • SOCK STREAM/接続スロット向け
  • データは途中では消えません.
  • 伝送順に受信する.
  • で送信されたデータには境界はありません.
  • スロットの内部にバッファが使用されます.したがって、以下のシナリオを使用することができます.
  • 送信側は3回のwrite関数で合計100バイトを送信し、受信側は1回のread関数で100バイトを受信する.
  • またはwrite関数を1回送信してもよいし、read関数を3回受信してもよい.
  • SOCK DGRAM/非接続スロット
  • の送信順序にかかわらず、最も速い送信を指す.
  • データ消失と破損の危険性
  • で伝送されるデータ境界がある.
  • で2回送信されたデータは2回受信する必要がある.
  • 一度に伝送されるデータ量は限られている.
  • プロトコルの最終選択
    socket関数の3番目のパラメータ.1つのプロトコルシステム(第1のパラメータ)において、同じプロトコルが複数のデータ伝送方式(第2のパラメータ)であってもよい.したがって,3番目の因子が必要になる場合がある.
    「IPv 4インターネットプロトコルシステムにおける接続向けデータ転送スロット」を以下に示す.
    int tcp_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);