tcp/ip入門書を読み終えて第3章
今回は通信の処理と流れについて復習します。
メールの送受信の流れですかね。

この本オススメです。
では、復習始めます。
各階層で送信されるデータはヘッダと呼ばれる情報がつく。
ヘッダには送信元、宛先、プロトコルの情報が入っている。
パケットはプロトコルが使うヘッダと上位層が使うデータで構成している。
これは、どういったやり取りでデータを届けたり処理内容が入っていたりするもの。
以下パケットの送信処理から見ていこうと思います。
1、アプリケーションの処理
送信するとTCP/IPによる通信が開始する。
アプリケーションのプログラムによってUTF-8などのルールに基づいて符号化され文字化けしないように変換する。
この役割はプレゼンテーション層相当の機能。
TCPにコネクションの確立を指示をして確立したら、下位層にデータが渡される。これはセッション層にあたる
2、TCPの処理
信頼性のあるデータ転送をする。
アプリケーションから渡されたデータの前にTCPヘッダが付与される。
このヘッダには送信元と宛先のアプリケーションを識別するためのポート番号、そのパケットのデータが何バイトなのか示すシーケンス番号、データが壊れてない保証をするためのチェックサム、入っている。
このヘッダがついたデータがIPに送られる。
3、IPの処理
TCPから送られてきたTCPヘッダの前にIPヘッダが付けられる。
IPヘッダには宛先のIPアドレス、送信元のIPアドレス、TCPかUDPどちらかなど情報が含まれる。
IPパケットが完成すると、ルーティングテーブルを参照してパケットを受け渡すルーターやホストを決定し送信する。
通信機器のMacアドレスがわからない場合はARPを使いMACアドレスを調べて分かったらイーサネットに送信する。
4、ネットワークインターフェースの処理
以上で作られたパケットが物理層を渡って相手に届く。
FCS(Frame Check Sequence)が送信処理中に付与される。
これはノイズなどでパケットが破壊されたことを検知する。
メールの送信は以上。
次は受信側の処理の流れについて復習します。
5、ネットワークインターフェースの処理
パケットを受け取ったホストは、宛先のMACアドレスが自分宛かどうかまず調べる。違うときはパケットを破棄する。
合っていたらイーサネットタイプフィールドを確認してイーサネットプロトコルが運んでいるデータの種類を調べる。IPならIPを処理するルーチンに他のプロトコルだったらそのプロトコルのルーチンにデータを渡す。
処理できないプロトコルの値の場合はデータを破棄する。
6、IPの処理
IPのルーチンにデータが渡って宛先のIPアドレスが自分のホストのIPアドレスだったら受信して上位層のプロトコルを調べる。
TCPかUDPどちらか処理ルーチンにIPヘッダを除いたデータを送る。
ルーターの場合、受信するIPパケットの宛先は、ほとんど自分宛ではない為、ルーティングテーブルから次に送るホスト、ルーターを調べて転送することになる。
7、TCPの処理
TCPの場合、チェックサムを計算してデータの破損がないか、データが順番通りに受信しているか確認している。データがちゃんと届いていた場合、確認応答をホストに返す。届かない場合、応答するまで繰り返し送信する。
ポート番号を調べてアプリケーションを特定して、データが正しい場合、識別したアプリに送信される。
8、アプリケーションの処理
受信側はそのままデータを受け取ることになる。
相手側のメールボックスが存在しない場合、送信元のアプリケーションにエラーを返す。
受信したらHDDなどの記憶媒体に保存され、メッセージが保存されたら、処理が終了したことをアプリに伝える。保存されない場合はエラーがをアプリに伝える。
受信は送信の逆かと思いますけど、データを次に渡すときの事をルーチンって言うんですかね。
このやりとりを経てようやくメッセージが表示されるんですね。
大変。
頭で理解するには難しいです。
SNSの場合は
通信会社でIPアドレスが設定され、指定のサーバーでログインすると蓄積された情報が表示される仕組みだそう。
これもTCP/IPの仕組みが利用されているみたい。
色々興味深いですね。
時間があれば次回も書いていきたい。
次回はデータリンクについて復習していきたい。
以上。