harukin721

主に学習記録 🔗 wantedly.com/id/harukin721

マスタリングTCP/IP 入門編 の「第6章 TCPとUDP」を読んだ

マスタリングTCP/IP 入門編 の「第6章 TCPUDP」を読んだ。ソケットプログラミングを理解したい。

トランスポート層

OSI 参照モデルの真ん中に位置していて、第3層以下が提供するサービスを第5層以上に提供するときの仲立ちをする。IP に信頼性がないが TCP は信頼性を提供する。これにより、第5層以上は安心して下位層に通信処理を任せられる。

ソケット

アプリケーションから TCPUDP を利用して通信するときには、ソケットという API 
が広く使われている。アプリケーションはソケットを利用して、通信相手の IPアドレスやポート番号の設定、データの送信や受信の要求を行う。そうすることで OS が TCP/IP による通信を行ってくれる。
ソケットは OS が持っている TCP/IP の機能を提供することが目的で、第5層以上の固有の機能は提供しないので TCPUDP を直接使うことを意識しながらプログラムを作成する必要がある。( まだよくわかっていない )

※ この負担を軽減して、アプリケーションプログラムを作成できるようにライブラリやミドルウェアが提供されているが、結局これらのライブラリやミドルウェアはソケットを使って作られている。

TCPUDP

必要となる通信の特性により、使用するトランスポートプロトコルを選択する

  • TCP (Transmission Control Protocol )
    • コネクション型で、信頼性のあるストリーム型(切れ目のないデータ構造)のプロトコル
    • 「伝送、送信、通信」を制御して信頼性のある通信を提供する
    • コネクション制御があるので、通信相手が存在する時にだけデータを送信することができるので無駄な通信を抑制できる
    • ネットワークが混雑してふくそう状態にならないように、パケットの送信量を調整してくれる
    • 使用用途 :
      • データの喪失があっては困る通信
      • ファイル転送などのインターネットを介して大量のデータの転送 ...etc
  • UDP ( User Datagram Protocol )
    • コネクションレス型で信頼性のないデータグラム型のプロトコル
    • 複雑な制御は提供せず IP を用いたコネクションレスの通信
    • 細かな処理はアプリケーションプログラム側に制御を任せる
    • いわば UDP は「アプリケーションを作ったユーザーの言うがままになる」
    • 使用用途 :
      • 総パケット数が少ない通信である DNSSNMP
      • 即時性が必要な通信である動画や音声などのマルチメディア ...etc

やっていく

社内Slackでみんないろいろ教えてくれる。

参考

www.ohmsha.co.jp

ryuichi1208.hateblo.jp

rnakamine.hatenablog.com

宿題

  • C や Go で実際にソケットプログラミングを試す
  • Connection refused になったらどうやって問題を切り分けますか
  • サーバでどんなソケットが作成されているか、どのポートで listen されているかを調べるコマンドを理解する