网络通信 TCP UDP"/>
网络通信 TCP UDP
1.TCP UDP简介
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。两台计算机可以把数据当做一个双向字节流进行交换。(IP协议是一种网络层协议,规定每个互联网上的计算机只能有一个唯一的ip地址)
UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。
两者区别:
1.基于连接与无连接,TCP相当于打电话,UDP相当于发短信
2.TCP要求系统资源较多,UDP较少;
3.UDP程序结构较简单
4.流模式(TCP)与数据报模式(UDP);
5.TCP保证数据正确性,UDP可能丢包
6.TCP保证数据顺序,UDP不保证
UDP应用场景:
1.面向数据报方式
2.网络数据大多为短消息
3.拥有大量Client
4.对数据安全性无特殊要求
5.网络负担非常重,但对响应速度要求高
2.TCP的连接建立与连接终止(三次握手与四次挥手)
1.TCP三次握手的过程如下:
-
客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
-
服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
-
客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
至于为什么要三次握手??主要是传输的过程中数据可能丢失,需要一个反馈
2.四次挥手过程如下:
为什么连接需要三次,断开需要四次了呢?
第一种情况:服务端干完了
而并不是服务器每次都能干完 都能断开
第二种情况:
客户端频繁地发消息,这样六次会话都没登断开
所以最终有了四次挥手
3.通信的代码实现(UDP)
//客户端
//准备要发送的信息
String msg="要发送的消息";
//创建套接字对象
DatagramSocket socket = new DatagramSocket();
//目标地址:电脑的IP地址
InetAddress host = InetAddress.getByName("192.168.*.*");
//指定包要发送的目的地
byte[] data=msg.getBytes();
DatagramPacket request =new DatagramPacket(data,data.length, host, 9999);//9999为端口 自定义//发送
socket.send(request);//服务器端//创建套接字对象
DatagramSocket socket = new DatagramSocket(9999); //9999为端口 自定义
//创建接受的容器
byte[] data=new byte[10];DatagramPacket request = new DatagramPacket(data, 10);//接受消息while(true){socket.receive(request);//处理消息String s=new String(tong);System.out.println("收到消息: "+s);}
更多推荐
网络通信 TCP UDP
发布评论