Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

5. ソケット

自作プロトコルスタックの移植が終わったので、次は「ソケット」を実装してアプリケーションがプロトコルスタックの機能を利用して通信できるようにします。

micropsにはソケット層(sock.c/sock.h)が用意されており、独自のディスクリプタ表でUDP/TCPのPCBを管理します。この章では、micropsのソケット層をxv6のファイルディスクリプタと統合し、socket()bind()recvfrom()sendto()といった標準的なソケットAPIをシステムコールとしてユーザ空間に提供します。

ユーザ空間 (user/udpecho.c)
    ↓ socket(), bind(), recvfrom(), sendto()
システムコール (kernel/syssocket.c)   ← 新規作成
    ↓ struct file (FD_SOCKET) 経由で sock ディスクリプタを保持
ソケット層 (kernel/net/sock.c)        ← micropsからコピー
    ↓ udp_cmd_*()
プロトコルスタック

Note

この章ではUDP(データグラム)ソケットを扱えるところまでを実装します。TCP(ストリーム)ソケットへの対応は応用課題として扱います。