マスタリングTCP/IP 入門編 の「第6章 TCPとUDP」を読んだ。ソケットプログラミングを理解したい。
トランスポート層
OSI 参照モデルの真ん中に位置していて、第3層以下が提供するサービスを第5層以上に提供するときの仲立ちをする。IP に信頼性がないが TCP は信頼性を提供する。これにより、第5層以上は安心して下位層に通信処理を任せられる。
ソケット
アプリケーションから TCP や UDP を利用して通信するときには、ソケットという API
が広く使われている。アプリケーションはソケットを利用して、通信相手の IPアドレスやポート番号の設定、データの送信や受信の要求を行う。そうすることで OS が TCP/IP による通信を行ってくれる。
ソケットは OS が持っている TCP/IP の機能を提供することが目的で、第5層以上の固有の機能は提供しないので TCP や UDP を直接使うことを意識しながらプログラムを作成する必要がある。( まだよくわかっていない )
※ この負担を軽減して、アプリケーションプログラムを作成できるようにライブラリやミドルウェアが提供されているが、結局これらのライブラリやミドルウェアはソケットを使って作られている。
TCP と UDP
必要となる通信の特性により、使用するトランスポートプロトコルを選択する
- TCP (Transmission Control Protocol )
- コネクション型で、信頼性のあるストリーム型(切れ目のないデータ構造)のプロトコル
- 「伝送、送信、通信」を制御して信頼性のある通信を提供する
- コネクション制御があるので、通信相手が存在する時にだけデータを送信することができるので無駄な通信を抑制できる
- ネットワークが混雑してふくそう状態にならないように、パケットの送信量を調整してくれる
- 使用用途 :
- データの喪失があっては困る通信
- ファイル転送などのインターネットを介して大量のデータの転送 ...etc
- UDP ( User Datagram Protocol )
やっていく
社内Slackでみんないろいろ教えてくれる。
参考
宿題
- C や Go で実際にソケットプログラミングを試す
- Connection refused になったらどうやって問題を切り分けますか
- サーバでどんなソケットが作成されているか、どのポートで listen されているかを調べるコマンドを理解する