TCP/IP アニメーション TCP/IP アニメーション

TCP/IP アニメーション , TCP,UDP通信

Google Play Apple store


TCP,UDP通信

TCPとUDPはデータ通信を制御するためのルールです。TCPはUDPよりも厳密に通信を管理します。したがって,TCPは正確性を必要とする通信に適し,UDPは迅速性を必要とする通信に適しています。

通信中,データはパケットと呼ばれる小さな断片に分割されています。そして,TCPまたはUDPヘッダーが全てのパケットに追加されます。

*TCPの詳細
TCPでは,最初に発信元PCと宛先PCの間でコネクションが確立されます。その後,データはパケットの状態で送信され,受信者が受信し元の状態に組み立てます。そしてTCPヘッダーに記載されている情報と実際のデータを確認し,誤りがないか確かめます。確認後,受信者は毎回応答します。
通信に問題が発生していた場合,同じデータが再度送信されます。

*TCPおよびUDPヘッダーの内容
'送信元および宛先ポート':PCポート番号
'シーケンス番号':送信データ番号。1バイトごとに1増加します。
'ACK番号':受け取ったシーケンス番号へ1追加
'MSS(option)':パケットの最大データサイズ(バイト)。
'ウィンドウ':ACKを待たずに順次送信されるデータサイズ。(例)ウィンドウ(2000バイト)= MSS(1000バイト)* 2
'チェックサム':データの正確性を確認するための値




TCP

標準TCP通信


* '[(S)No.00]'に関して
'No.00'は,TCPヘッダーのシーケンス番号を意味します。'(S)'はサーバー側シーケンス番号を意味し,'(P)'はPC側シーケンス番号を意味します。

1.サーバーへのアクセス時,最初にPCとサーバー間で通信用のTCPコネクションが確立されます。

2.このコネクションは'3ウェイハンドシェイク'と呼ばれます。コネクションの確立中に,それぞれの開始シーケンス番号とMSSサイズが決定されます。

3.TCPコネクションの確立中

4.PC : Webサイト'http://www.ogumo.co.jp'にアクセスします。(SYN)TCPコネクションの確立を要求します。[(P)No.3800]

5.Server : (ACK)OK。[(P)No.3801](SYN)TCPコネクションの確立を要求します。[(S)No.8200]

6.PC : (ACK)OK。[(S)No.8201]

7.PC : コネクションが確立されました。

8.Server : コネクションが確立されました。

9.PCまたはサーバーが'SYN'を送信した時,各開始シーケンス番号がランダムに設定されました。PC(3800),Server(8200)

10.PC : (PSH)Webサイトのデータを要求します。

11.Webサイトデータの通信を開始します。

12.PC : このリクエストサイズは1パケット,量は10バイトです。[(P)No.3801-3810]

13.PCとサーバー間の要求と応答

14.Server : (ACK)OK。[(P)No.3811](PSH)Webサイトのデータを送信します。(1パケット,量は1000バイト)[(S)No.8201-9200]

15.PC : Webサイトデータの半分を取得しました。

16.PC : (ACK)OK。[(S)No.9201]

17.Server : (PSH)サイトデータの後半(1パケット,1000バイト)を送信します。[(S)No.9201-10200]

18.PC : Webサイトのデータを取得しました。

19.PC : (ACK)OK。[(S)No.10201]

20.コネクションの終了中

21.PC : (FIN)Webサイトの表示を終了します。このリクエストサイズは1パケット,量は1バイトです。[(P)No.3811]

22.Server : (ACK)OK。[(P)No.3812]

23.Server : (FIN)コネクションを終了します。[(S)No.10201]

24.PC : (ACK)OK。[(S)No.10202]

25.Server : コネクションが終了しました。

26.PC : 通信が終了しました。



TCP,通信の障害

TCP通信中にトラブルが発生します。


* '[(S)No.00]'に関して
'No.00'は,TCPヘッダーのシーケンス番号を意味します。'(S)'はサーバー側シーケンス番号を意味し,'(P)'はPC側シーケンス番号を意味します。

1.簡潔な説明のために,通信用のコネクションがすでに確立された状態から開始します。

2.PCまたはサーバーが'SYN'を送信した時,各開始シーケンス番号がランダムに設定されました。PC[3800],Server[8200].それらの番号は3ウェイハンドシェイク中に1増加します。

3.PC : (PSH)Webサイトのデータを要求します。

4.Webサイトデータの通信を開始します。

5.PC : このリクエストサイズは1パケット,量は10バイトです。[(P)No.3801-3810]

6.PCとサーバー間の要求と応答

7.Server : (ACK)OK。[(P)No.3811](PSH)Webサイトのデータを送信します。(1パケット,量は1000バイト)[(S)No.8201-9200]

8.データの一部が欠落しています。

9.PC : データを復元できません。

10.PC : 受信した実際のデータ量は800バイトです。200バイト減少しました。

11.PC : 失われたシーケンス番号[(S)No.9001-9200]

12.PC : チェックサムでのデータ検証でエラーが発生します。この場合,PCはACKを送信できません。

13.Server : (PSH)一定時間経過してもACKが返されないため,同じパケットを再度送信します。[(S)No.8201-9200]

14.PC : (ACK)OK。[(S)No.9201]

15.Server : (PSH)Webサイトのデータを送信します。(1パケット,量は1000バイト)[(S)No.9201-10200]

16.PC : Webサイトのデータを取得しました。

17.PC : (ACK)OK。[(S)No.10201]

18.PC : ACKパケットが消失しました。

19.Server : (PSH)一定時間経過してもACKが返されないため,同じパケットを再度送信します。[(S)No.9201-10200]

20.PC : (ACK)Webサイトのデータを取得しました。

21.Server : ACKを受信しました。[(S)No.10201]全てのWebサイトデータが送信されました。

22.コネクションの終了は省略されています。



TCP,ウィンドウ設定

ウィンドウサイズの設定で,継続的な通信が可能になります。


* '[(S)No.00]'に関して
'No.00'は,TCPヘッダーのシーケンス番号を意味します。'(S)'はサーバー側シーケンス番号を意味し,'(P)'はPC側シーケンス番号を意味します。

1.簡潔な説明のために,通信用のコネクションがすでに確立された状態から開始します。

2.コネクションが確立されると,シーケンス番号,MSS,およびWindowサイズが決定されます。Window=MSS*2。したがって,サイトデータはACKを受信せずに2回続けて送信されます。

3.Webサイトデータの通信を開始します。

4.PC : (PSH)Webサイトのデータを要求します。

5.PC : このリクエストサイズは1パケット,量は10バイトです。[(P)No.3801-3810]

6.PCとサーバー間の要求と応答

7.ACKを受信する前に,ウィンドウサイズに従ってサイトデータを連続して送信します。

8.Server : (ACK)OK。[(P)No.3811](PSH)Webサイトのデータを送信します。(1パケット,量は1000バイト)[(S)No.8201-9200]

9.Server : (PSH)次のパケットを送信します。[(S)No.9201-10200]

10.PC : (ACK)Webサイトデータの半分を取得しました。

11.Server : ACKを受信しました。[(S)No.9201]

12.PC : (ACK)Webサイトのデータを取得しました。

13.Server : ACKを受信しました。[(S)No.10201]全てのWebサイトデータが送信されました。

14.コネクションの終了は省略されています。

15.ウィンドウサイズを設定することで,通信時間が短縮されました。



TCP,ウィンドウ設定時の通信障害

ウィンドウサイズ設定時にトラブルが発生します。


* '[(S)No.00]'に関して
'No.00'は,TCPヘッダーのシーケンス番号を意味します。'(S)'はサーバー側シーケンス番号を意味し,'(P)'はPC側シーケンス番号を意味します。

1.簡潔な説明のために,通信用のコネクションがすでに確立された状態から開始します。

2.コネクションが確立されると,シーケンス番号,MSS,およびWindowサイズが決定されます。Window=MSS*2。したがって,サイトデータはACKを受信せずに2回続けて送信されます。

3.Webサイトデータの通信を開始します。

4.PC : (PSH)Webサイトのデータを要求します。

5.PC : このリクエストサイズは1パケット,量は10バイトです。[(P)No.3801-3810]

6.PCとサーバー間の要求と応答

7.ACKを受信する前に,ウィンドウサイズに従ってサイトデータを連続して送信します。

8.Server : (ACK)OK。[(P)No.3811](PSH)Webサイトのデータを送信します。(1パケット,量は1000バイト)[(S)No.8201-9200]

9.PC : Webサイトのデータを取得しました。[(S)No.8201-9000]データの一部が欠落しています。

10.Server : (PSH)次のパケットを送信します。[(S)No.9201-10200]

11.データの一部が欠落しています。

12.Server : サーバーは最初のACKを待機しています。[(S)No.9201]

13.PC : (ACK)Webサイトデータの後半の半分を取得しました。[(S)No.9201-10200]

14.PC : 2番目のACKのみが返されます。ACK番号は,PCが最初のパケットを必要としていることを示しています。[(S)No.8201]

15.PC : 最初とは異なるサイトデータパケットがPCに送信されると,同じACKが返されます。[(S)No.8201]

16.Server : 同じACKが連続して数回返されるか,タイムアウトが発生した場合,サーバーはパケットを再送信します。[(S)No.8201-9200]

17.Server : (PSH)過去のACK番号がまだ送信されているため,同じパケットを再度送信します。[(S)No.8201-9200]

18.PC : (ACK)Webサイトのデータを取得しました。[(S)No.8201-9200]

19.Server : ACKを受信しました。[(S)No.10201]全てのWebサイトデータが送信されました。

20.コネクションの終了は省略されています。

21.データが正しく送信されない場合,受信者は不足しているデータを待ち,同じACK番号を送信者に通知し続けます。



UDP

UDP通信。この例は過去のWeb動画の形態です。


1.動画データのダウンロードをUDPで開始する前に,PCはTCPを使用して動画を公開しているWebサイトにアクセスする必要があります。TCPに関する説明は簡単に行います。

2.PC : (PSH)Webサイトのデータを要求します。

3.Server : (ACK)+(PSH)Webサイトのデータを送信します。

4.PC : (ACK)Webサイトのデータを取得しました。

5.コネクションが確立され,サイトデータがTCPでダウンロードされます。動画データはまだダウンロードされていません。

6.PC : (PSH)ボタンで動画を再生します。

7.Server : (ACK)OK。

8.このコネクションはTCP通信用です。UDPはそれを必要としません。説明のためにここでは表示しません。

9.この動画アプリケーションはUDPでデータを送信します。

10.Server : この動画アプリケーションはUDPでデータを送信します。

11.PC : 動画データを取得して表示します。

12.Server : データチェックや応答待ちなしで次のデータを送信します。

13.Server : この動画アプリケーションはUDPでデータを送信します。

14.動画データが次々に送信されます。

15.PC : 動画データを取得して表示します。

16.Server : この動画アプリケーションはUDPでデータを送信します。

17.PCの操作によりUDP通信が突然終了しました。今後,データはTCPで送信されます。

18.PC : (PSH)終了ボタンを押します。

19.Server : (ACK)OK。

20.PC : 動画の視聴を終了しました。



UDP,通信中の障害

UDP通信中にトラブルが発生します。


1.動画データのダウンロードをUDPで開始する前に,PCはTCPを使用して動画を公開しているWebサイトにアクセスする必要があります。TCPに関する説明は簡単に行います。

2.PC : (PSH)Webサイトのデータを要求します。

3.Server : (ACK)+(PSH)Webサイトのデータを送信します。

4.PC : (ACK)Webサイトのデータを取得しました。

5.コネクションが確立され,サイトデータがTCPでダウンロードされます。動画データはまだダウンロードされていません。

6.PC : (PSH)ボタンで動画を再生します。

7.Server : (ACK)OK。

8.このコネクションはTCP通信用です。UDPはそれを必要としません。説明のためにここでは表示しません。

9.この動画アプリケーションはUDPでデータを送信します。

10.Server : この動画アプリケーションはUDPでデータを送信します。

11.PC : 動画データを取得して表示します。

12.Server : データチェックや応答待ちなしで次のデータを送信します。

13.Server : この動画アプリケーションはUDPでデータを送信します。

14.動画データが次々に送信されます。

15.PC : 動画データを取得して表示します。

16.Server : この動画アプリケーションはUDPでデータを送信します。

17.データが失われたとしても,データはUDPによってチェックされません。

18.ただし,データ量はUDPヘッダーに記録されるため,アプリケーション側でそれを認識し,問題を解決するよう設定することは可能です。

19.PCの操作によりUDP通信が突然終了しました。今後,データはTCPで送信されます。

20.PC : (PSH)終了ボタンを押します。

21.Server : (ACK)OK。

22.PC : 動画の視聴を終了しました。



実際のネットワーク / Webサイト,SSL / メール / FTP / VPN /

機器 / DNS / LAN,DHCP,NAT / IPアドレス / PCポート /

TCP/IPのレイヤー / TCP,UDP通信 / IP通信 / 開始画面


us / es / cn / ja / kr / de / fr / pt / it / ru / ar / Ogumo top