ネットワーク通信:socket、udp、tcp


1.udpとtcpの違い:
1.1一般的にudpモードは「手紙を書く」のと似ており、送信するだけで、相手が受信に成功したかどうかは確定していない.tcpは「電話をかける」に似ており、まず相手の番号をダイヤルして相手が出ていることを確認し、データを送受信する.
1.2比較:
角度
udp
tcp
セキュリティ
低い
高い
でんそうこうりつ
高い
低い
接続向け
いいえ
はい
サーバ、クライアントの概念があるかどうか
いいえ
はい

2.ネットワーク通信の三要素:
IP、ポート、プロトコル
2.1 IPアドレス:ネットワークの中で1台のコンピュータをマークするために使用して、繰り返しを許さない;
2.2ネットワークアドレスの分類:A、B、C、D、E.私たちがよく使うのはCクラスのアドレスで、各クラスのアドレスは特に対応するIP範囲です.ここで言うのはすべてIPv 4についてです.
2.3プライベートIP:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255

2.4注意:IPアドレス127.0.0.1~1272.255.255は回路テストに用いる、例えば:127.0.0.1はネイティブIPアドレスを表し、http://127.0.0.1でネイティブに配置されているWebサーバをテストできます.
3.tcp注意事項:
tcpサーバは一般的にバインドする必要があります.そうしないと、クライアントはこのサーバを見つけることができません.
tcpクライアントは一般的にバインドされないが、アクティブリンクサーバであるため、サーバのip、portなどの情報を特定すればよい、ローカルクライアントはランダムである.
tcpサーバでlistenによってsocketが作成したアクティブソケットをパッシブにすることができます.これはtcpサーバを作るときにしなければならないです.
クライアントがサーバをリンクする必要がある場合はconnectを使用してリンクする必要があり、udpはリンクを必要とせずに直接送信するが、tcpは先にリンクしなければならず、リンクが成功してこそ通信できるである.
tcpクライアントがサーバに接続すると、サーバ側には新しいソケットがあり、このソケットはこのクライアントをマークするために使用され、このクライアントのために単独でサービスされる.
Listen後のソケットは受動ソケットであり、新しいクライアントのリンク要求を受信するために使用され、acceptが返す新しいソケットはこの新しいクライアントをマークするである.
Listenを閉じたソケットは、パッシブソケットが閉じたことを意味し、新しいクライアントがサーバにリンクできないが、以前にリンクに成功したクライアントが正常に通信していることを意味します.
acceptが返すソケットを閉じることは、このクライアントがサービスを完了したことを意味する.
クライアントのソケットがcloseを呼び出すと、サーバ側はrecvがブロック解除され、返される長さは0になるため、サーバはデータを返す長さでクライアントがラインオフしたかどうかを区別することができる.
4.socket---ソケット
Socketは「ソケット」とも呼ばれ、アプリケーションは通常、「ソケット」を通じてネットワークに要求を発行したり、ネットワーク要求に応答したりして、ホスト間またはコンピュータ上のプロセス間で通信できるようにします.
構文の形式:
socket.socket([family[, type[, proto]]])

family:ソケットファミリーはAF_UNIXまたはAF_INETは、一般的に後者がより多く使われています.
type:ソケットタイプは、接続向けか非接続かによってSOCK_STREAMまたはSOCK_DGRAM , tcp udp。 に分けることができる.
protocol:デフォルトは0ではありません.
5.udpとtcpの詳細の違い:
1.ソケットソケットソケットを作成する場合、パラメータが異なります.udp--SOCK_DGRAM, tcp -- SOCK_STREAM
2.受信情報:udp--recvfromメソッド、 を返します.tcp--recvメソッド、 を返します.
3.送信情報:udp--sendtoメソッド、パラメータとして を入力する必要があります.一方、tcp-sendメソッドは、パラメータとして を入力するだけでよい.
4.通信プロセスが異なる:upd--1>ソケットの作成;2>ローカル情報のバインドは省略できます.3>情報の送受信;4>ソケットを閉じる;
4.通信プロセスが異なる:
tcp--クライアント:1>ソケットの作成;2>.リンクサーバ;3>情報の送受信;4>ソケットを閉じる;
tcp--サービス側:1>ソケットの作成;3>ローカル情報のバインド3>リスニングソケットをデフォルトのアクティブからパッシブに変更し、listen()4>クライアントへのリンク待ち、accept()5>情報の送受信;6>ソケットを閉じる.

5.塞栓と解塞栓:
5.1 udpはrecvfromを通じて渋滞/解渋滞を完成する.
5.2 tcpのクライアントはrecvによって塞ぎ/塞ぎを解く.
5.3 tcpのサーバーはaccept、recvを通じて塞ぐ/塞ぐことを解く:
サーバのacceptは、をブロック解除するためにクライアントのconnectを必要とする.
サーバrecvは、をブロック解除するためにクライアントのsendを必要とする.
recvはまた、クライアントがclose()を呼び出すことによってデブロッキングを引き起こす可能性があり、recvはNoneを返します.--注:両者は同時に「サービス不要」を判断する条件として成立する.