情報ネットワーク10
--MACヘッダやIPヘッダには,受信側にデータを確実に届けることができたかどうかを確認するデータが含まれていない
---データが壊れたり,行方不明になったも対処できない
-トランスポート層の役割
--データ転送の方法を決定する
--データ転送のエラーをチェックする
--各端末間でデータが正しく届いたかどうかを判断する
--届かなかったデータについては再送を要求する
--どの通信アプリケーションで作成されたかを識別するデータを付加する
--どの通信アプリケーションソフト宛てであるかを識別し,アプリケーション層に渡す
-TCP
--コネクション型通信
---データ通信の信頼性,正確性を重視した通信プロトコル
--分割されたデータを、確実に届けるために,エラーチェック
--再送信などの処理をする
--データの欠損もなく,確実に届ける
---電子メールやWebページ
-UDP
--効率性を重視した通信プロトコル
---コネクションレス型通信
--パケット単位でデータを転送しっぱなし
---高速な転送によるネットワークの効率性が必要な場合
--エラーチェックを行わない
--送信するデータが小さいときや,データを再送しないほうが都合がよい
---IP電話や,インターネットの動画中継
--相手側がいつ受信するか分からない
--通信の開始や停止などの制御
---アプリケーションで行う
--トランスポート層で付け外し
--セグメント
---TCPヘッダのついたデータ
-TCPヘッダ
--送信側ポート番号(16ビット)
--受信側ポート番号(16ビット)
--シーケンス番号(32ビット)
--確認応答番号(32ビット)
--データオフセット(4ビット)
---TCPヘッダのサイズを32で割ったビット数
--予約(6ビット)
---現在使用されない
--コントロールフラグ(6ビット)
--ウィンドウサイズ(16ビット)
--チェックサム(16ビット)
---通信時に起こったエラーを検出する
--緊急ポインタ(16ビット)
---ほとんど使用されない
--オプション
---TCPの機能拡張
---オプションを使用しない場合は,TCPヘッダのサイズは20バイト
--パディング
---ヘッダが32ビットの整数倍にならないときに調整につける「0」
-ポート番号
--インターネット層とアプリケーション層をつなぐ
--サーバ用の通信アプリケーションが使用するポート番号
--クライアント用の通信アプリケーションが使用するポート番号
--ウェルノウン(well-known)ポート
---0から1023番で予約
---各種のサーバ用通信アプリケーションに割り当てられる
---www:HTTP:80
---www:HTTPS:443
---電子メール(送信):SMTP:25
---電子メール(受信):POP3:110
---ファイル転送:FTP:20/21
---遠隔ログイン:TELNET:23
--1024から65535番までの使われていない番号をサーバに送り,そのポート番号をデータ受信のために使う
--登録済みポート
---インターネットに関連する番号を管理する組織である,IANA(Internet Assigned
Numbers Authority)により決められる
---特定の通信アプリケーションによるデータのやりとりで使われる
---1024~49151
--ダイナミックポート/プライベートポート
---IANAが管理をしていないため,クライアントが自由に通
信で使ってよいポート番号と
---49152~65535
-サーバ
--1023までのポート番号
-クライアント
--通信アプリケーションを起動
--1024から順にクライアント側のポート番号を割り当てる
--クライアント側のポート番号とサーバ側のポート番号は組にする
-ソケット
--通信状態を記録する仕組み
---どの通信アプリケーションが,何番のポートを使っているのかを,コンピュータ内部に記録する
--メモリーを一定領域だけ確保して、自分自身と通信相手のポート番号とIPアドレスの情報を記録する
--通信アプリケーションどうしを結ぶ
--通信の開始と同時にクライアント用の通信アプリケーションが作成
-サーバ側のソケット
--サーバ用の通信アプリケーションは,あらかじめソケットを作成する
--自分が使っているポート番号と,接続してくるクライアントのIPアドレス(はじめは0)を書き込む
--ポートを開く
---サーバ側のソケットができ上がり,通信可能な状態になること
--複数のクライアントからの接続を受け付る
---クライアントからの接続があるたびに,新しいソケットを作成する
-コネクション型通信
--1. 通信を確立する
--2. データを決められたサイズに分割してパケットを作成する
--3. TCPヘッダをつけてデータを順番に送信する
--4. データを送り終わったら,通信を終了する
-3ウェイハンドシェーク
--TCPで送受信の前に通信を確立するために,送信側と受信側で通信用のパイプとなるコネクション作る手順
---通信相手に通信状況を伝える
---URG(Urgent), ACK(Acknowledge), PSH(Push), RST(Reset), SYN(Synchronize), Fin(Finish)
--コネクションを確立させる
---ACKとSYNのビットをON
--接続の要求
---SYN
--通信の応答
---ACK
--コネクションの確立
---送信側が受信側に対して通信を始める合図SYN=1
---受信側が送信側に対してコネクション確認応答と確立要求ACK=1,SYN=1
---送信側から受信側に対してコネクション確認応答ACK=1
--ハンドシェーク
---確実にデータが送信されたかどうかを確認しながら行われる通信手段
---やりとりされるデータはTCPヘッダだけで,データ本体は送信されない
--コネクション終了
---送信側が受信側に対してコネクション終了要求Fin=1
---受信側が送信側に対してコネクション終了応答ACK=1
---受信側が送信側に対してコネクション終了要求FIN=1
---送信側が受信側に対してコネクション終了応答ACK=1
--TCPのACKフラグ
---必ずデータを受け取ったというフラグを返すルール
-シーケンス番号
--分割したデータが受信側で復元するために、各セグメントのヘッダに通し番号を付ける
--送ったデータの分だけ番号が増える
-確認応答番号
--受信側で受信したデータが,全データのうちの何バイト目のデータなのかを書きこんだもの
-再送制御
--行方不明になって相手にデータが届かなかったりした場合は,シーケンス番号と確認応答番号を使って,データの再送をする
--送信側へ通知する
-セグメントサイズ
--送信側の扱うことができるデータサイズ
-ウィンドウサイズ
--受信側が一度に受け取れるデータ量
-バッファ
--1つのセグメントを送信するたびに,1つの確認応答を返す
--確認応答を待たずに,セグメントを連続して送信し,それに対して確認応答を返せば,効率が良くなる
--受信したセグメントをバッファに一時的に保存される
---送信側がセグメントを連続して送っても受信側は対応可能になり,通信の効率が良くなる
--オーバーフロー
---大量にセグメントが送られて,処理しきれなくなること
--限界のバッファ量/ウィンドウサイズ
-ウィンドウサイズの初期値
--3ウェイハンドシェークによるコネクションの確立時に確認
---送信側からのコネクションの確立要求で,送信側のウィンドウサイズを伝達
---受信側からの コネクションの確認応答+コネクションの確立要求 で,受信側のウィンドウサイズが返される
---セグメントをオーバーフローしないように送信
-UDPヘッダ
--送信側ポート番号(16ビット)
---受信側ポート番号(16ビット)
---長さ(16ビット)
---チェックサム(16ビット)