LoginSignup
0
2

More than 5 years have passed since last update.

Kernel Network について

Posted at

はじめに

kernelのネットワークがどのような仕組みになっているのか、気になったので少し調べてみました。
まだ軽くしか調べられていないが、一旦アウトプット。

概要

  • プロセスはソケットを介して通信を行う。
  • ソケットは、ファイルインターフェースを拡張して作られているので、kernelレベルではファイルの利用手順とほぼ同じである

Kernelのネットワークスタックはどのようになっているのか?

ソケットインターフェース

  • プロセス間通信が可能。遠隔のプロセスとの通信も可能
  • ソケットバッファによってデータのコーピー処理を頻繁に発生させない仕組みになっている

  • 通信確立までの流れ

    1. サーバ側がクライアントを受け付けるソケットファイルを作成する(socket()を呼び出す)
    2. 受付用ソケットファイルに名前をつける(bind()を呼び出す)
    3. ソケット・キューを作成する(listen()を呼び出す)
    4. ソケット・キューに入っているクライアントからの接続の最初の1つを受け付ける(accept()を呼び出す)
    5. クライアント側ではソケットファイルを作成する(socket()を呼び出す)
    6. クライアント側からサーバへ接続要求を出す(connect()を呼び出す)
    7. サーバ側で、受付用ソケットファイルとは別に、接続用ソケットファイルを作成する。
    8. 結果、read()やwrite()などのシステムコールを呼び出せるようになる
  • 通信切断時は、close()を呼び出し、切断

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2