Linux ネットワークプログラミング
パケットな構造体の定義
| プロトコル | ヘッダファイル |
|---|---|
| イーサネット | /usr/include/linux/if_ethernet.h |
| IP | /usr/include/netinet/ip.h |
| TCP | /usr/include/netinet/tcp.h |
listen() の backlog について
- listen() の第二引数 backlog は、確立されたがプログラムに渡されていない(プログラムが accept() する前の)TCP コネクションの最大数を指している
- Apache が重くて ACK しか返してない、といった動作の理由はコレか
- 確立されていない TCP コネクションの最大数は、カーネルパラメータの tcp_max_syn_backlog にて設定
UDP/IP について
- setsockopt() で SO_REUSEADDR を指定する場合、利用中のポートでも他のプログラムからバインドできてしまう
- この場合、後にバインドしたプログラムにのみ、パケットが送られることとなる
- UDP では送達保証がないため、sendto() はソケットディスクリプタの設定に依らずブロックされない