ネットワークプログラミングのインタビューの質問の統合()

1:TCPとUDPの違い

まず、ネットワークプロトコルアーキテクチャの5つの古典的な理解:物理層、データリンク層、ネットワーク層、トランスポート層とアプリケーション層送信信号は、常に一定のプロトコル(プロトコル)を満たし、そして異なるレベルでコンピュータ間の通信は、コンピュータと通信するためのプロトコルに従うべきです。ネットワーク層プロトコルIP、ICMPプロトコル、ARPプロトコル、RARPプロトコル、およびBOOTPプロトコルで。TCPプロトコルおよびトランスポート層でのUDPプロトコル。アプリケーション層FTP、HTTP、TELNET、SMTP、 DNS およびその他のプロトコル。

TCPとUDPは、これは、トランスポート層における二つの重要な契約の仕事でお願いします。TCP(伝送制御プロトコル、伝送制御プロトコル)は公式の送信前に、と言うと、データを受信することで、接続ベースのプロトコルであり、これでは、信頼性の高い接続とお互いを作成する必要があります。TCPコネクションを設定するために、三つの「対話」を経なければならない、シンプルプロファイルは次のとおりです。

1.ホストAはホスト接続要求パケットにBを送信します:「私は私ができる、あなたにデータを送りたい?」これが最初の対話です。

「あなたが送信すると、はい?」これが第二の対話である:ホストAへ2.ホストBは、(同期がレシートに送信に2つのホスト、コーディネートです)パケット合意された接続を送信し、同期を必要と;

3.ホストAは、ホストBの確認パケット同期要求を送信します。「私は今、あなたがそれに続く送っ!」これが第三の対話です。

目的3「対話」は同期データパケットを送受信することで、3「対話」した後、正式にホストAだったホストBにデータを送信

UDP(ユーザーデータプロトコル、ユーザーデータグラムプロトコル)は、TCPプロトコルに対応しています。それはお互いに接続を確立しますが、パケットを入れていない、非接続指向のプロトコルである過去に直接送信されます!

要約間のTCPとUDPの違い:

図1に示すように、TCPコネクション指向型(例えば、ダイヤルアップ接続が確立されている最初の呼び出し)、UDPデータを送信する前に接続を確立することなく、すなわちコネクションレスです。

2、TCPは再送メカニズムを検証し、信頼性の高いサービスを提供していますこれは、TCP、エラーのない、ない失われ、ない繰り返しを介したデータ伝送接続され、順不同で到着し、信頼性の高い配信を保証するものではありませんUDPベストエフォート;

。3、TCPのバイトストリームと、実際には、TCPのバイトストリームデータ、非構造化のシリーズとして、UDPパケットのためです。UDPは、輻輳制御をしない、ネットワークの輻輳が(例えば、IPテレフォニー、リアルタイムビデオ会議などのリアルタイムアプリケーションのために有用な)ソースホストの伝送速度が低下することなく起こります。

図4に示すように、各TCP接続は、ポイントを指すことができ、一多くの1つ、および多対多の双方向通信にUDP支援1。

図5に示すように、オーバーヘッドの20バイトのTCPヘッダ、小さなUDPヘッダのオーバーヘッド、わずか8バイト。

6、論理的な通信チャネルはTCP信頼性の高い全二重チャネルである、UDPは信頼できないチャネルです。

 

2:TCP接続確立ハンドシェーク3回、4回、特定のプロセスが切断された手を振っ

接続を確立するための3ウェイハンドシェイクプロトコルは、特に、使用:
       最初のハンドシェイクは、サーバへの接続に接続するクライアントであり、私は準備ができていたと言うと同等の、サーバがクライアント側にメッセージを送信した後、クライアントの要求を受け入れ、あなたが接続されています私に、これは、第二のハンドシェイクであり、3ウェイハンドシェイクがクライアントのサーバーに送信され、第二のハンドシェイクの確認メッセージです。クライアントとサーバーの通信を開始した後。
次のように、4ウェイハンドシェイクの接続を切断:
       一端は最初のハンドシェイク(通常はクライアント)を切断するクローズ接続要求を送信する切断要求を受信した後に確認することが近い他端ニーズを、メッセージを送信します。これは第二のハンドシェイクであるだけでなく、端末への接続を閉じるために、ピア近いメッセージに肯定応答メッセージを送信した後に送信される、これは最初の3ウェイハンドシェイク、メッセージを受信した後、切断の送信の第一の端部であり、状態がしばしばある重要な状態を、TIME_WAITにインタビュアーが質問、初期ハンドシェイクがメッセージに接続された送信側から受信された後、最後の時間を尋ねました。メッセージの確認応答。

具体的なスリーウェイハンドシェイクと対応する4つのブログのコレクションの内部を見ると手を振って!

 

3:フロー制御と輻輳制御

輻輳制御の理由は:利便性のために、我々は、送信データにホストBにホストAと仮定します。送信者はACKの受信者からのフィードバックをもらっていない場合、我々は、データパケットの送信時に、その二つのホストを知って、送信者は、失われたパケットを再送信し、それが失われたパケットを送信すると思われます。しかし、実際の状況は、あまりにも多くのホストは、チャネルリソース、ネットワークの輻輳を使用しているこの時点で可能であり、送信されるデータパケットAが途中で立ち往生、到達B.における遅延がありません このとき誤っは、パケット損失は、パケットの再送信を生じます。結果だけでなく、チャネル資源の無駄ですが、また、ネットワークをより混雑します。したがって、我々は、輻輳制御する必要があります。いわゆる輻輳制御は、ネットワークへのデータの過剰注入を防ぐためですこれは、リンクを作ることができるか、ネットワーク内のルータが過負荷にされていません。

フロー制御:一般的には、常に少し速くデータ送信をしたいです。しかし、送信者があまりにも迅速にデータを送信する場合、それは受信者を受け取るためには遅すぎるかもしれ、それはデータが失われます。いわゆるフロー制御は、受信者が受信できるように送信者のない速すぎて、時間の伝送速度を可能にすることです。

TCPフロー制御と輻輳制御が1であると言うことができます。次のように主な違いは次のとおりです。

フロー制御:

(1)スライディングウィンドウによって達成されます。ウィンドウスライディングウィンドウは、送信側と受信側のウィンドウに分割されています。ウィンドウがサイズ制限を有し、受信側のウィンドウサイズは、現在受信可能な受信された送信側端末に通知するために使用されるバイトの最大数です。事前にTCPプロトコルでウィンドウの大きさ、サイズ16。実際のウィンドウサイズが64キロバイトを超えることができるように、しかし、TCPのオプションのプロトコルでは、スケーリング係数はまた、ウィンドウを定義することができます。ウィンドウを意味することは、実際に受信バッファのサイズです。
(2)送信ウィンドウは、送信者のシリアル番号によって受信された維持ACKの終了を送信し、新しいデータを送信することができますどのくらい知ることができるように、最大の番号を送信しています。
(3)ウィンドウがACKシーケンス番号を有する受信維持し、受信した全てのパケットシーケンス番号。
(4)通信プロセスにおける特定の接続のサイズは、サイズが変化しない場合。スライディングウィンドウメカニズムは、送信端におけるスライディングウィンドウのサイズは動的で受信されるデータのサイズによって表され、受信端で送信可能なデータのサイズによって表されます。


輻輳制御:

(1)は、輻輳ウィンドウによって達成されます。

(2)輻輳制御概してスロースタート、二段階における輻輳回避を含みます。

(3)スロースタートフェーズは、インデックスのサイズを定義するプロセスを開始するために、1から増加されます。

工程(4)輻輳回避フェーズのサイズを超える線形増加を規定し、損失が1に輻輳ウィンドウの後に発見された、と定義されたプロセスのサイズを半分にした後。

 

4:どのようにマルチスレッド同期へ

インタビュー中央常任委員会は、通常、マルチスレッドの関係、そして何が同期および非同期のマルチスレッドのか?マルチスレッド同期:同時にリソースの同じ部分にアクセスするための複数のスレッドの等価物が、その都度アクセスする唯一のスレッドであり、ブロックされます。解決策は、スレッド(も頻繁に聞かれる)同期持っているクリティカルセクション、相互排他ゾーン、イベント、セマフォ4つの方法を

差分イベント(イベント)クリティカルエリア(クリティカルセクション)、ミューテックス(ミューテックス)、セマフォ(セマフォ)
1)、クリティカルエリア:コードの一部のパブリックリソースへのまたは貫通シリアルマルチスレッドアクセス、高速化データへのアクセスを制御します。アクセス公共資源にしようとする複数のスレッドがある場合は、共有リソースへの唯一つのスレッドのアクセスを許可するために、いつでも、その後、スレッドがある入り、アクセス公共資源にしようとする他のスレッドが中断され、クリティカルセクションに入るまで待つことになりますスレッドが解放された後、クリティカルセクションを残して、他のスレッドをつかむことができます。
2)、ミューテックス:オブジェクトの排他制御機構。唯一のミューテックススレッドで、公共のリソースへのアクセスを持っているだけで、ミューテックスオブジェクトので、彼らは公共の資源が複数のスレッドで同時にアクセスされないことを保証することができます。唯一の公共の安全のリソースを共有し、同じアプリケーションを実現するために、だけでなく、さまざまなアプリケーションを実現するために排他的に共有する。重要なゾーンより独占複合体を公共の安全資源。同じアプリケーションの複数のスレッドで共有リソースの安全な排他的な使用を可能にし、異なるアプリケーションのスレッド間でリソースを安全に共有を実現することができないという理由だけで。
3)セマフォ:これは、複数のスレッドが同時に同じリソースにアクセスすることができ、このリソースにアクセスすると同時に、スレッドの最大数を制限する必要があります。セマフォは、いくつかの異なる方法の前にスレッドと同期方法をオブジェクト信号は、複数のスレッドがPVシステムの動作の動作と同じである共有リソースを使用することを可能にします。これは、同時スレッドの最大数は、共有リソースにアクセスすることを指摘しました。複数のスレッドが同時に同じリソースにアクセスできますが、このリソースへのアクセスを制限するために同じ時間が必要で、スレッドの最大数。

操作とセマフォのPVのコンセプトはオランダの科学者EWDijkstraによって作られています。Sがゼロより大きいときセマフォSを用いエンティティ並行プロセスに使用可能なリソースの数を表す整数であるが、ゼロ未満ではSは、共有リソースを使用するために待っているプロセスの数であることを示しています。
   リソースのP操作応用:
  (1)Sマイナス1;
  (2)S保存した場合、ゼロよりも依然として大きい、プロセスは継続する;
  (3)もしSが1だけデクリメントされた後、プロセスがブロックされた後にゼロ未満である信号に入射キューに対応して、スケジューリングのプロセスに転送。
  
  リソースのV動作リリース:
  (1)S 1を加え;
  (2)Sがゼロより大きい場合、プロセスは継続する;
  (3)Sは、ウェイクアッププロセスのための信号キュー待ちから、ゼロ以上である場合に、元に戻しますプロセススケジューリングを続行するか、転送するプロセス。

4)イベント:オペレータに通知する方法により、スレッドを同期させるには、複数のスレッドの比較に優先演算の達成を容易にすることができます。

概要:
  1)ミューテックスとクリティカルセクションの役割は非常に似ていますが、それはプロセス全体で使用できることを意味しており、ミューテックスを命名することができます。だから、スピードの利点をもたらすクリティカルセクションを使用して内部のプロセスで使用される単語をこれだけあれば、ミューテックスの必要性のより多くのリソースを作成し、リソースの消費量を減らすことができます。ミューテックスミューテックスがクロスプロセスが作成されたら、あなたは名前でそれを開くことができますので。
  2)ミューテックス(ミューテックス)、セマフォ(セマフォ)、イベント(イベント)データ操作を使用してプロセス間で同期させることができ、およびその他のオブジェクトとデータの同期操作があれば、何の関係もありませんが、プロセスとスレッドの観点から出口は状態を合図した後の状態を実行しているプロセスやスレッドは、無信号状態ではなかったです。だから、出口のプロセスとスレッドを待つためのWaitForSingleObjectを使用することができます。
  3)あなたは、このような今、ユーザーはによると、データベースシステム3同時アクセスライセンスを購入すると、リソースがミューテックスを使用して、排他的であるが、次のミューテックスずつケースがある場合に扱うことができない指定することができます購入へのアクセスにライセンスユーザーの数がこの要求を完了するための方法がない場合はミューテックスを使用して、同時に今回のデータベース操作を実行できるスレッド/プロセスの数を決定するために、セマフォオブジェクトはリソースカウンタであると言うことができます。

 

5:プロセスとスレッドとの間の差

スレッドは、プロセス内の実行ユニット内のスケジューリング・エンティティだけでなく、プロセスを指します。プロセスとの違い:

(1)スケジューリング:自身のリソースの基本単位としてスケジューリングおよび割り当て処理の基本単位としてスレッド。

(2)並行:だけでなく、プロセス間で同じプロセス内で複数のスレッド間で同時に実行することができるが、また同時に実行することができます。

(3)リソースを持って:プロセスは、リソースを持つ独立したユニットであり、スレッドがシステムリソースを持っていないが、プロセスに属するリソースにアクセスすることができます。

(4)は、オーバーヘッド:システムが再計算され、資源回復しなければならないので、あなたは、プロセスを作成したり、元に戻すときは、システムのオーバーヘッドにつながる作成するとき、またはスレッド取り消さのコストよりもかなり大きいです。

 

6:、どのような長所と短所プロセス間通信の方法は何があります。

1)パイプ:パイプは、半二重通信モードは、データが一方向にしか流れているが、唯一の間の遺伝的関係を有するプロセスで使用することができます。親族プロセスは通常、親子関係のプロセスを意味します。

2)名前付きパイプ(FIFO):名前付きパイプは、パイプラインが通信FIFOであり、半二重通信であるが、プロセスの間に遺伝的関係を可能にしません。

3)セマフォ:セマフォカウンタである、複数のプロセスが共有リソースへのアクセスを制御するために使用することができます。それは、多くの場合、共有リソースへのアクセスを防止するためのロック機構として使用される他のプロセスは、リソースにアクセスすることができ、プロセスです。同じプロセス内の異なるスレッド間のプロセス間の同期手段、並びにそのため、メイン。

4)メッセージキュー:メッセージキューは、カーネルに格納されたメッセージ待ち行列識別子によって、メッセージのリンクされたリストです。シグナリングメッセージは、搬送パイプ無地バイトストリームバッファサイズが制限され、より少ない情報を克服し、そして他の欠点キュー。

5)信号(sinal):信号は、受信処理を通知するために使用されるイベントが発生した、通信のより洗練された手段です。

6)共有メモリ(共有メモリ):他のプロセスがアクセスすることができる期間、プロセスによって作成されたこの共有メモリをマッピングしたが、複数のプロセスによってアクセス可能な共有メモリがメモリです。IPC共有メモリは、それが具体的に設計された低効率を実行している他のプロセス間通信のためのものである、最速の方法です。これは、多くの場合、プロセス間の同期通信を達成するために組み合わせて使用セマフォなどの他の通信メカニズムと関連しています。
7)ソケット(ソケット):ソケットは、様々な他の通信機構と、プロセス間通信機構では、異なるマシン上のプロセス間の通信のために使用することができることです。

 

公開された61元の記事 ウォンの賞賛9 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_33204444/article/details/93514684
おすすめ