TCP/IP アニメーション , TCP,UDP通信
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番号を送信者に通知し続けます。UDPUDP通信。この例は過去の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 : 動画の視聴を終了しました。
|