TCP/IPは各階層で送信されるデータにヘッダをつけて送信している

パケットの送信処理

  1. アプリケーションの処理

    アプリを起動してメッセージを送信する その時、符号化の処理が行われる。(OSIのプレゼンテーション層の役割) また、複数送信の場合はまとめて送信する(OSIのセッション層の役割)

    そして、メールを送信する際はTCPコネクションの確立を支持する

  2. TCPモジュールの処理

    アプリケーションからの指示通り、TCPヘッダをつける

    TCPヘッダには、

    が含まれる

  3. IPモジュールの処理

    TCPヘッダの前にIPヘッダをつける

    IPヘッダには、

    が含まれる

    IPパケットが完成したら、経路制御表(ルーティングテーブル)を参照して IPパケットを次に受け渡すルータやホストを決定する

    MACアドレスがわからない場合は、ARPを利用して調べる。

    そして、ネットワークインターフェースで送信処理をしてもらう

  4. ネットワークインターフェースの処理

    最後にイーサネットのヘッダがつけられる

    イーサネットのヘッダには、

    が書き込まれている

    以上の処理をして作られたものが物理層へ送られる。

    そして、送信処理中にFCS(Frame Check Sequence)がハードウェアで計算され パケットの最後につけられる。

    FCSはノイズなどによってパケットが壊れたことを検知するもの

S__41451522.jpg

データリンクを流れるパケットの様子

パケットが流れる時は、先頭にイーサネットのヘッダがつき、 その後ろにアプリケーションのヘッダがつく

それぞれのヘッダには少なくとも

は必ず入っている

パケット受信処理

  1. ネットワークインターフェースの処理

    イーサネットヘッダの宛先MACアドレスが自分宛かどうかを確認 自分宛でなかったら破棄

    そしてIPを処理するルーチンに渡す

  2. IPモジュールの処理 宛先IPアドレスが自分のホストIPアドレスと一致していたら、そのまま上位層のプロトコルを調べる

  3. TCPモジュールの処理 チェックサムを計算して、ヘッダやデータが壊れていないかを確かめる また、ポート番号を調べて、通信を行なっているアプリケーションを特定する