2017-05-09 17 views
0

ソケットがSOCK_STREAM転送で接続された状態にある場合、send()とrecv()の間で送信されるパケットは信頼性の高いTCPプロトコルでしたか?パケットの損失や正当性を防ぐためのACKやseq番号のようなものか、自分でTCPプロトコルを実装する必要がありますか? UDPはSOCK_DGRAMとの接続()せずに、(のsendto()とのrecvfrom間で送信されたパケットをしている場合もsend()とrecv()は信頼できるデータ転送(TCPプロトコル)を実装していますか?

)は、UDPプロトコルをしましたか? (ACK、seq numberまたはtimer ...)

+0

'SOCK_STREAM'をストリームとして扱うことができます。 –

答えて

1

は、TCPまたはUDPを自分で実装する必要があります。 man 2 socketから

SOCK_STREAM は配列決定し、信頼性の高い、双方向の、接続ベースのバイトストリームを提供します。

SOCK_DGRAM データグラムをサポートします(固定長の固定長で信頼できないメッセージ)。 man 7 tcpから

tcp_socket =ソケット(AF_INET、SOCK_STREAM、0);

説明 これは、NewReno とSACK拡張を使用して、RFC 793、RFC 1122およびRFC 2001で定義されているTCPプロトコルの実装です。 man 7 udpから

udp_socket =ソケット(AF_INET、SOCK_DGRAM、0);

DESCRIPTION
はRFCに768

記載これはユーザーデータグラムプロトコルの実装にはまたman 7 socketman 2 send、及びman 2 recvを参照。

すべての参照manページは、「Linuxのプログラマーズ・マニュアル」からです。