情報ネットワーク10

-ネットワーク層

--MACヘッダやIPヘッダには,受信側にデータを確実に届けることができたかどうかを確認するデータが含まれていない

---データが壊れたり,行方不明になったも対処できない

-トランスポート層の役割

--データ転送の方法を決定する

--データ転送のエラーをチェックする

--各端末間でデータが正しく届いたかどうかを判断する

--届かなかったデータについては再送を要求する

--どの通信アプリケーションで作成されたかを識別するデータを付加する

--どの通信アプリケーションソフト宛てであるかを識別し,アプリケーション層に渡す

-TCP

--コネクション型通信

---データ通信の信頼性,正確性を重視した通信プロトコル

--分割されたデータを、確実に届けるために,エラーチェック

--再送信などの処理をする

--データの欠損もなく,確実に届ける

---電子メールやWebページ

-UDP

--効率性を重視した通信プロトコル

---コネクションレス型通信

--パケット単位でデータを転送しっぱなし

---高速な転送によるネットワークの効率性が必要な場合

--エラーチェックを行わない

--送信するデータが小さいときや,データを再送しないほうが都合がよい

---IP電話や,インターネットの動画中継

--相手側がいつ受信するか分からない

--通信の開始や停止などの制御

---アプリケーションで行う

 

-TCPヘッダ,UDPヘッダ

--トランスポート層で付け外し

--セグメント

---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で送受信の前に通信を確立するために,送信側と受信側で通信用のパイプとなるコネクション作る手順

--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ビット)