ソケット通信・とは?初心者でも分かる基礎解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
ソケット通信・とは?初心者でも分かる基礎解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

岡田 康介

名前:岡田 康介(おかだ こうすけ) ニックネーム:コウ、または「こうちゃん」 年齢:28歳 性別:男性 職業:ブロガー(SEOやライフスタイル系を中心に活動) 居住地:東京都(都心のワンルームマンション) 出身地:千葉県船橋市 身長:175cm 血液型:O型 誕生日:1997年4月3日 趣味:カフェ巡り、写真撮影、ランニング、読書(自己啓発やエッセイ)、映画鑑賞、ガジェット収集 性格:ポジティブでフランク、人見知りはしないタイプ。好奇心旺盛で新しいものにすぐ飛びつく性格。計画性がある一方で、思いついたらすぐ行動するフットワークの軽さもある。 1日(平日)のタイムスケジュール 7:00 起床:軽くストレッチして朝のニュースをチェック。ブラックコーヒーで目を覚ます。 7:30 朝ラン:近所の公園を30分ほどランニング。頭をリセットして新しいアイデアを考える時間。 8:30 朝食&SNSチェック:トーストやヨーグルトを食べながら、TwitterやInstagramでトレンドを確認。 9:30 ブログ執筆スタート:カフェに移動してノートPCで記事を書いたり、リサーチを進める。 12:30 昼食:お気に入りのカフェや定食屋でランチ。食事をしながら読書やネタ探し。 14:00 取材・撮影・リサーチ:街歩きをしながら写真を撮ったり、新しいお店を開拓してネタにする。 16:00 執筆&編集作業:帰宅して集中モードで記事を仕上げ、SEOチェックやアイキャッチ作成も行う。 19:00 夕食:自炊か外食。たまに友人と飲みに行って情報交換。 21:00 ブログのアクセス解析・改善点チェック:Googleアナリティクスやサーチコンソールを見て数字を分析。 22:00 映画鑑賞や趣味の時間:Amazonプライムで映画やドラマを楽しむ。 24:00 就寝:明日のアイデアをメモしてから眠りにつく。


ソケット通信・とは?

ソケット通信とはネットワーク上の2つのプログラムが話す仕組みのことです。日常の会話を想像すると分かりやすいです。ソケットはデータを送るための入口と出口の端点であり、2つのプログラムがこの入口出口を通してやり取りします。データはバイト列として送られます。

まずは基本の用語を置き換えると理解が進みます。ソケットは通信の入口と出口の端点です。プログラムAとプログラムBはそれぞれ自分のソケットを持ち、ここを通してデータを送ります。データは文字列ではなくバイト列と呼ばれる小さなデータのかたまりです。

TCPとUDPの違い

ソケット通信には大きく分けてTCPUDPの二つのやり方があります。TCPはデータがちゃんと届くように順番を保証しますが、少し遅くなることがあります。一方でUDPは速さを優先しますが届くかどうかの保証がなく順番も崩れることがあります。この違いを理解して用途を決めることが大切です。

able>項目説明信頼性TCPは到着を保証し、順番を守る速度UDPは通常TCPより速いが保証なし用途TCPはウェブサイトやメールなどの信頼性重視の通信に使われる通信の仕組みTCPは接続型、UDPは接続レスble>

実際の流れはサーバーとクライアントの組み合わせで動きます。サーバーは待ち受けの状態となり接続を待ちます。クライアントはサーバーのアドレスとポートに接続します。接続が確立するとお互いにデータを送受信でき、通信が終われば切断します。この基本は多くのプログラミング言語で共通です。

実際の流れを簡単に整理

ステップ1 サーバーがソケットを作成し待ち受けを開始する
ステップ2 クライアントがサーバーへ接続する
ステップ3 データを送受信する
ステップ4 通信を終えると接続を切断する

ソケット通信を使う場面の例としてはウェブページの表示、オンラインゲームのリアルタイム通信、スマートフォンの通知などが挙げられます。日常生活にも役立つ技術であり、学べば自分で小さなネットワークアプリを作ることも可能です。

要点のまとめ

要点は次の三つです。ソケットは通信の入口と出口の端点TCPとUDPの違いを理解する実際の流れをイメージすることです。最初は難しく感じても、用語と流れをひとつずつ覚えると理解が深まります。


ソケット通信の同意語

ソケットを使った通信
ソケットという仕組みを利用して、ネットワーク上でデータの送受信を行う通信のこと。通常は TCP や UDP などのプロトコルの上で動作します。
ソケットベースの通信
ソケットを基盤とした通信のこと。プログラム内でソケットを作成してデータを送受信します。
ネットワークソケット通信
ネットワーク経由で、ソケットを介してデータをやり取りする通信の総称です。
TCPソケット通信
TCP プロトコルを用いたソケット通信。信頼性の高い接続型の送受信を行います。
UDPソケット通信
UDP プロトコルを用いたソケット通信。低遅延で軽量ですが、データの到達保証はありません。
TCP/IPソケット通信
TCP/IP の上で動作するソケット通信。インターネット上で最も一般的な形です。
IPソケット通信
IP を前提としたソケット通信。実装は通常 TCP/UDP のいずれかの上で動作します。
ソケットAPIを用いた通信
ソケット API(言語により異なる関数群)を用いて、端点間でデータを送受信する通信のことです。

ソケット通信の対義語・反対語

非ソケット通信
ソケットを使わない通信の総称。HTTP/HTTPSやWeb APIなど、上位プロトコルを利用して通信を成立させる方式で、直接ソケットAPIを扱わずに済む点が特徴です。
HTTP通信
アプリケーション層のHTTPを用いた通信。リクエストとレスポンスのやり取りを基本とし、ステートレスな設計になりやすい点がソケット通信と異なる部分です。
メッセージング系通信
メッセージブローカー(例: RabbitMQ、Kafka、MQTT)を介して非同期にデータをやり取りする方式。直接的な長期接続を維持するソケット通信とは異なり、 broker 経由でのやり取りが特徴です。
IPC(パイプ/ FIFO)通信
同一マシン内のプロセス間通信で、名前付きパイプやFIFO、共有メモリなどを用いる方法。ネットワークを介したソケット通信とは関係なく、ローカル専用の通信手段です。
Webサービス/REST API通信
RESTful API などを HTTP 経由で呼び出す通信。ソケットの低レベル操作を意識せず、Web API の形で通信を設計する点が対義的なイメージになります。

ソケット通信の共起語

ソケット
ネットワーク通信のエンドポイントを作るための小さなファイルディスクリプタ。プログラムからネットワークへアクセスする入口です。
ソケットAPI
ソケットを作成・設定・通信するための関数の集合(例: socket, bind, listen, accept, connect, send, recv など)です。
BSDソケット
Unix系の標準ソケットAPIの通称。BSD系の呼び方が広く使われます。
Winsock
WindowsでのソケットAPI実装の名称で、Winsock APIを通じてネットワーク通信を行います。
UNIXドメインソケット
同一マシン内のプロセス間通信に使われるソケット。AF_UNIX を用い、ファイルパスでアドレスを指定します。
ソケットファイル
Unix系でソケットをファイルのように扱う概念。ソケットをファイルディスクリプタと同様に操作します。
SOCK_STREAM
ストリーム型のソケット。主にTCPで信頼性の高い連続データの送受信に使われます。
SOCK_DGRAM
データグラム型のソケット。主にUDPでデータの独立したパケット送信に使われます。
AF_INET
IPv4アドレスファミリを示します。
AF_INET6
IPv6アドレスファミリを示します。
AF_UNIX
Unixドメインソケット用のアドレスファミリを示します。
TCP
信頼性の高いストリーム型の通信プロトコル。順序性と再送を保証します。
UDP
軽量なデータグラム型の通信プロトコル。信頼性は低いがオーバーヘッドが少ないです。
IPv4
Internet Protocol version 4。32ビットのアドレス体系です。
IPv6
Internet Protocol version 6。128ビットのアドレス体系です。
IPアドレス
通信相手を特定する番号。IPv4/IPv6の表現を含みます。
ホスト名
文字列の名前をIPアドレスへ解決する名前解決の表現です。
ポート番号
通信の窓口を識別する数字。0–65535が一般的です。
エンドポイント
通信の終点。アドレスとポートの組み合わせを指します。
クライアント
リクエストを送る側の役割を担うプログラムやプロセスです。
サーバ
リクエストを受け取り応答する側の役割を担うプログラムやプロセスです。
クライアントサーバモデル
クライアントとサーバが分離して機能する通信設計モデルです。
バインド
ソケットにアドレス情報を割り当て、特定のネットワーク地点へ結びつけます。
listen
サーバ側が接続待ち状態になる設定です。
accept
待機している接続を受け入え、新しいソケットを作成します。
connect
クライアントがサーバへ接続を確立します。
send
データをソケット経由で送信します。
recv
ソケットからデータを受信します。
sendto
宛先を指定してデータを送る送信関数です(主にUDPで使用)。
recvfrom
データを受信しつつ送信元情報を取得します(UDPでよく使われます)。
ブロッキング
呼び出しが完了するまで処理を止める動作です。
ノンブロッキング
呼び出しがすぐ戻るが、データがまだ無い場合は結果が得られません。
非同期I/O
I/Oを待つ間に他の作業を進める実装方針です。
イベント駆動
イベントが発生したときに処理を起動する設計です。
select
複数のソケットのI/Oを同時に監視する基本的な手法です。
poll
複数ソケットを待機するためのI/O多重監視手法です。
epoll
Linuxでの高性能なI/O多重待機機構です。
kqueue
BSD/macOSで使われる高機能なイベント通知機構です。
IOCP
WindowsのI/O完了ポリシ。非同期I/Oの実装手段です。
TLS
通信データを暗号化するためのTLS/SSLの一部。通信の機密性を守ります。
SSL
TLSの旧称で、暗号化通信を提供します。
SO_REUSEADDR
ソケットのアドレス再利用を許可します。再起動時の待機を短縮します。
SO_KEEPALIVE
長時間アイドル時の接続維持機能を有効にします。
TCP_NODELAY
Nagleアルゴリズムを無効化して小さなパケットの送信を遅延なく行います。
Nagleアルゴリズム
小さなデータをまとめて送ることでオーバーヘッドを低減します。
errno
C言語系のエラー番号を参照するためのグローバル変数です。

ソケット通信の関連用語

ソケット
ネットワーク通信の端点。IPアドレスとポート番号の組み合わせを識別子として、データの送受信を行う窓口となる。
ソケットファイルディスクリプタ
Unix系でソケットはファイルディスクリプタという整数で表され、readやwriteなどの操作でデータをやり取りする。
IPアドレス
ネットワーク上の機器を識別する数値表現。IPv4とIPv6がある。
IPv4
32ビットのアドレス体系。通常は4つの10進数で表現する。
IPv6
128ビットのアドレス体系。コロンで区切る長い表現を用いる。
ポート番号
通信の窓口を示す番号。0〜65535の範囲で表す。
AF_INET
IPv4アドレスファミリを表す定数。
AF_INET6
IPv6アドレスファミリを表す定数。
AF_UNIX
Unixドメインソケット用のアドレスファミリ。
SOCK_STREAM
ストリーム型のソケット。主にTCPで使われ、信頼性の高い接続型通信。
SOCK_DGRAM
データグラム型のソケット。主にUDPで使われ、無接続型通信。
SOCK_RAW
生のパケットを扱うソケット。特殊用途。
TCP
信頼性の高い接続指向の通信プロトコル。
UDP
低遅延で軽量だが信頼性が低い無接続型のプロトコル。
クライアント
接続を要求して通信を開始する側。
サーバ
接続を待ち受け、クライアントと通信を成立させる側。
bind
ソケットにアドレスとポートを割り当てる操作。
listen
接続待ちの状態にして、接続要求を受け付ける準備をする。
accept
接続要求を受け付け、新しいソケットを返す。
connect
クライアントがサーバへ接続を開始する操作。
send
データを送信する関数。
recv
データを受信する関数。
sendto
宛先を指定してデータを送る関数(主にUDPで使用)。
recvfrom
受信時に送信元情報を取得する関数(主にUDPで使用)。
close
ソケットを閉じてリソースを解放する。
shutdown
送受信の一部または全体を停止する操作。
non-blocking
ノンブロッキング。I/Oを待たずに返す設定。
blocking
ブロッキング。I/Oが完了するまで処理を止める設定。
I/O多重化
一つのスレッドで複数のソケットのI/Oを待機する技術。
select
I/O多重化の古典的API。
poll
I/O多重化の別API。
epoll
Linuxの高性能I/O多重化機構。
kqueue
BSD系の高性能I/O多重化機構。
IOCP
WindowsのI/O完了ポート。当たり判定を効率化する仕組み。
backlog
listen時に保留する接続の最大数。
3ウェイハンドシェイク
TCPの接続確立時の3段階の交渉プロセス。
TLS/SSL
通信を暗号化して安全にするセキュア層。
TLSハンドシェイク
暗号化通信を確立するための初期交渉。
OpenSSL
TLS/SSLの代表的な実装ライブラリ。
SSLSocket
TLSで暗号化されたソケット。
HTTPS
HTTP通信をTLSで暗号化したもの。
SNI
TLSでサーバ名を識別する拡張機能。
TLS over TCP
TLSをTCP上で動かすこと。
HTTP
Webのアプリケーション層プロトコル。
localhost
自分自身を指す特別な名前。
127.0.0.1
IPv4のループバックアドレス。
::1
IPv6のループバックアドレス。
ユニキャスト
1対1の通信形態。
ブロードキャスト
同一ネットワーク内の全端末へ同時送信。
マルチキャスト
特定グループの複数端末へ同時送信。
NAT
ネットワークアドレス変換。内部と外部のアドレスを変換する。
ファイアウォール
不正な通信を遮断するセキュリティ機能。
setsockopt
ソケットの動作設定を行う関数。
getsockopt
ソケットの現在の設定値を取得する関数。
sockaddr_in
IPv4アドレス情報を格納する構造体
sockaddr_in6
IPv6アドレス情報を格納する構造体
sockaddr_un
Unixドメインソケットのアドレス情報を格納する構造体
dual_stack
IPv4とIPv6の双方を同時に扱える状態・設定。

ソケット通信のおすすめ参考サイト


インターネット・コンピュータの人気記事

pin番号・とは?初心者にも分かるPINの基本と使い方共起語・同意語・対義語も併せて解説!
1291viws
7-zipとは?初心者でもわかる使い方と特徴を徹底解説共起語・同意語・対義語も併せて解説!
435viws
インターネットアクセスとは?初心者にも分かる基本ガイド共起語・同意語・対義語も併せて解説!
193viws
コンポーネント化・とは?初心者にも分かる基本と実例共起語・同意語・対義語も併せて解説!
136viws
公開日・とは?初心者が押さえる基本ポイントと活用法共起語・同意語・対義語も併せて解説!
95viws
トンバックとは?初心者でもわかるトンバック対策と改善のコツ共起語・同意語・対義語も併せて解説!
94viws
ミュート・とは?初心者でもわかる使い方と意味を解説共起語・同意語・対義語も併せて解説!
84viws
8ビット・とは?初心者にもわかる基本の解説共起語・同意語・対義語も併せて解説!
83viws
ランダムアクセスメモリ・とは?初心者でもすぐ分かる基本と仕組みの解説共起語・同意語・対義語も併せて解説!
78viws
スタンドバイとは?初心者にも分かる意味と使い方を徹底解説共起語・同意語・対義語も併せて解説!
77viws
lan配線・とは?初心者にも分かる自宅LANの基本と実践ガイド共起語・同意語・対義語も併せて解説!
71viws
中括弧・とは?初心者でも分かる基本と使い方を徹底解説共起語・同意語・対義語も併せて解説!
68viws
コア・とは?初心者が知っておく基本と使い方共起語・同意語・対義語も併せて解説!
67viws
バレットポイント・とは?初心者にも分かる使い方と作成のコツ共起語・同意語・対義語も併せて解説!
63viws
バリアント・とは?初心者でも分かる意味と使い方ガイド共起語・同意語・対義語も併せて解説!
59viws
接続先ipアドレスとは?初心者が押さえる基本と使い方共起語・同意語・対義語も併せて解説!
56viws
adb・とは?初心者のための使い方と基本解説共起語・同意語・対義語も併せて解説!
56viws
delete とは?初心者にもわかる意味と使い方ガイド共起語・同意語・対義語も併せて解説!
52viws
led・とは?初心者向けに解説するLEDの基本と使い方共起語・同意語・対義語も併せて解説!
51viws
プログレッシブダウンロードとは?初心者向けに分かりやすく徹底解説共起語・同意語・対義語も併せて解説!
50viws

新着記事

インターネット・コンピュータの関連記事