JAVA TCPとUDPの違い
4310 ワード
The difference between TCP/IP and UDP
Javaは主にトランスポート層に関心を持ち、トランスポート層ではTCP、UDPは2つのトランスポートデータストリームの方式である。
一、TCP(Transmission Control Protocol,転送制御プロトコル)Connection-orented protocal.つまり、データを送受信する前に、双方はまず仮想の通信道を作り、相手と信頼できる接続を確立しなければならない。
3回の握手:1、AはBにデータセグメントを送信します。(Bに二つのことを教えます。あなたと通信したいです。どのシーケンス番号を先頭データ段として返してもいいですか?)2、BはAの要求を受け取った後、確認応答(ACK)と同期シーケンス番号(SYN)のあるビットの数でAに応答します。(ホストAの二つのことも教えてください。データを転送してもいいです。どのシリアル番号を先頭データとして返してくれますか?)3、Aを受け取ったら、もう一つ確認応答を送ります。
このように3回の握手で完成します。ホストAとホストBはデータを転送できます。
TCPの切断は4回行います。
1、Aがデータ転送を完了したら、制御ビットFINを1セットにし、TCP接続を停止する要求2、ホストBがFINを受信した後に応答し、この方向のTCP接続がオフされることを確認し、ACK置13、B側から逆方向のクローズ要求を再提出し、FIN置14、ホストAがホストBの要求を確認し、ACKを1セットにし、双方のクローズが終了する。
名詞の解釈
ACK TCPヘッダの制御ビットの一つは、データを確認します。宛先から送信されたことを確認し、それを用いて送信先にこのシーケンス番号の前のデータセグメントが全部受信されました。たとえば、確認番号がXであると、前X-1のデータセグメントが全部受信されたということです。ACK=1の場合のみ、確認番号が有効です。ACK=0の場合、確認番号が無効となり、データの再送信が要求され、データの完全性が保証されます。
SYN 同期シーケンス番号は、TCPが接続を確立する時にこの位置1、接続が確立されたらSYNは0となります。
FIN 送信側は送信タスクビットを完了し、TCPがデータ転送を完了すると切断する必要がある場合、接続を切断する方がこの位置を1として提案します。
UDP(User Data Protocol、ユーザデータ報プロトコル)
(1)UDP Is a Connection lessprotocol、Connection less message may arrive
out of order。転送したい場合は、アプリケーションからのデータを簡単につかむことができます。できるだけ速くネットワークに投げます。送信端では、UDP転送データの速度はアプリケーションがデータを生成する速度、コンピュータの能力、伝送帯域幅の制限を受けるだけです。受信端では、UDPはメッセージセグメントごとにキューに置いて、アプリケーションはキューから読むたびに、このメッセージ
(3)UDPパケットのタイトルは短く、8バイトしかなく、TCPの20バイトの情報パケットに対する追加のオーバーヘッドは小さい。
結節TCPとUDPの違い:
1.接続と無接続に基づく;2.システムリソースに対する要求(TCPが多く、UDPが少ない);3.UDPプログラムの構造はより簡単である;4.フローモードとデータグラムモード;5 TCP保証データの正確性、UDPはパケットを失う可能性があり、TCPはデータ順序を保証しない。
三.例
TCP:ServerSocket ss=newServer Socket(2000)、UDP:Datagram Socketオブジェクトを作成し、DatagramSocketはTcp方式のsocketオブジェクトと区別されます。 ds=new Datagram Socket()
[java]view plin
copy
print
//TCPサーバ端 package comp.zakioff.tcp; import java.io.Input Stream Reader; import java.net.ServerSocket; import java.net.Socket public クラス TCPServer { public static void main(String[] アークス ローソン Exception { ServerSocket パス = new ServerSocket(2000) while (true) { ソケット s = ss.accept(); System.out.println("A" client ハイ ヘン connected."); InputStream Reader r = new InputStream Reader(s.getInputStream(); 要点 c = 0; while (c) = r.read() > -1) { System.out.print(char) c) } System.out.printl() r.close(); s.close() } } )
copy
print
//TCPクライアント package comp.zakioff.tcp; import java.io.Output Stream Writer; import java.net.Socket public クラス TCPClient { public static void main(String[] アークス ローソン Exception { ソケット s = new ソケット(「127..0.1」、 2000) Output Stream Writer w = new OutputStream Writer(s.get OutputStream(); w.write("Helloサーバ") w.flash(); w.close(); s.close() } )
Javaは主にトランスポート層に関心を持ち、トランスポート層ではTCP、UDPは2つのトランスポートデータストリームの方式である。
一、TCP(Transmission Control Protocol,転送制御プロトコル)Connection-orented protocal.つまり、データを送受信する前に、双方はまず仮想の通信道を作り、相手と信頼できる接続を確立しなければならない。
3回の握手:1、AはBにデータセグメントを送信します。(Bに二つのことを教えます。あなたと通信したいです。どのシーケンス番号を先頭データ段として返してもいいですか?)2、BはAの要求を受け取った後、確認応答(ACK)と同期シーケンス番号(SYN)のあるビットの数でAに応答します。(ホストAの二つのことも教えてください。データを転送してもいいです。どのシリアル番号を先頭データとして返してくれますか?)3、Aを受け取ったら、もう一つ確認応答を送ります。
このように3回の握手で完成します。ホストAとホストBはデータを転送できます。
TCPの切断は4回行います。
1、Aがデータ転送を完了したら、制御ビットFINを1セットにし、TCP接続を停止する要求2、ホストBがFINを受信した後に応答し、この方向のTCP接続がオフされることを確認し、ACK置13、B側から逆方向のクローズ要求を再提出し、FIN置14、ホストAがホストBの要求を確認し、ACKを1セットにし、双方のクローズが終了する。
名詞の解釈
ACK TCPヘッダの制御ビットの一つは、データを確認します。宛先から送信されたことを確認し、それを用いて送信先にこのシーケンス番号の前のデータセグメントが全部受信されました。たとえば、確認番号がXであると、前X-1のデータセグメントが全部受信されたということです。ACK=1の場合のみ、確認番号が有効です。ACK=0の場合、確認番号が無効となり、データの再送信が要求され、データの完全性が保証されます。
SYN 同期シーケンス番号は、TCPが接続を確立する時にこの位置1、接続が確立されたらSYNは0となります。
FIN 送信側は送信タスクビットを完了し、TCPがデータ転送を完了すると切断する必要がある場合、接続を切断する方がこの位置を1として提案します。
UDP(User Data Protocol、ユーザデータ報プロトコル)
(1)UDP Is a Connection lessprotocol、Connection less message may arrive
out of order。転送したい場合は、アプリケーションからのデータを簡単につかむことができます。できるだけ速くネットワークに投げます。送信端では、UDP転送データの速度はアプリケーションがデータを生成する速度、コンピュータの能力、伝送帯域幅の制限を受けるだけです。受信端では、UDPはメッセージセグメントごとにキューに置いて、アプリケーションはキューから読むたびに、このメッセージ
(3)UDPパケットのタイトルは短く、8バイトしかなく、TCPの20バイトの情報パケットに対する追加のオーバーヘッドは小さい。
結節TCPとUDPの違い:
1.接続と無接続に基づく;2.システムリソースに対する要求(TCPが多く、UDPが少ない);3.UDPプログラムの構造はより簡単である;4.フローモードとデータグラムモード;5 TCP保証データの正確性、UDPはパケットを失う可能性があり、TCPはデータ順序を保証しない。
三.例
TCP:ServerSocket ss=newServer Socket(2000)、UDP:Datagram Socketオブジェクトを作成し、DatagramSocketはTcp方式のsocketオブジェクトと区別されます。 ds=new Datagram Socket()
[java]view plin
copy
//TCPサーバ端 package comp.zakioff.tcp; import java.io.Input Stream Reader; import java.net.ServerSocket; import java.net.Socket public クラス TCPServer { public static void main(String[] アークス ローソン Exception { ServerSocket パス = new ServerSocket(2000) while (true) { ソケット s = ss.accept(); System.out.println("A" client ハイ ヘン connected."); InputStream Reader r = new InputStream Reader(s.getInputStream(); 要点 c = 0; while (c) = r.read() > -1) { System.out.print(char) c) } System.out.printl() r.close(); s.close() } } )
//TCP
package com.zakisoft.tcp;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(2000);
while (true) {
Socket s = ss.accept();
System.out.println("A client has heen connected.");
InputStreamReader r = new InputStreamReader(s.getInputStream());
int c = 0;
while ((c = r.read()) > -1) {
System.out.print((char) c);
}
System.out.println();
r.close();
s.close();
}
}
}
[java]view plincopy
//TCPクライアント package comp.zakioff.tcp; import java.io.Output Stream Writer; import java.net.Socket public クラス TCPClient { public static void main(String[] アークス ローソン Exception { ソケット s = new ソケット(「127..0.1」、 2000) Output Stream Writer w = new OutputStream Writer(s.get OutputStream(); w.write("Helloサーバ") w.flash(); w.close(); s.close() } )
//TCP
package com.zakisoft.tcp;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1", 2000);
OutputStreamWriter w = new OutputStreamWriter(s.getOutputStream());
w.write("Hello ");
w.flush();
w.close();
s.close();
}
}