通信协议模型
TCP和UDP的区别
1.TCP 和 UDP 都属于传输层的协议
2.TCP 是可靠的, UDP 是不可靠的
3.TCP 有拥塞机制, UDP 没有
拥塞机制指的是根据当前网络状况动态调整传输速率
4.TCP 有重传机制, UDP 没有
如果 TCP 协议在传输过程中发生了丢包,TCP会重传保证数据包的完整性
三次握手和四次挥手
1.TCP协议通过三次握手建立连接,通过四次挥手断开连接,UDP协议没有
2.TCP协议如果握手失败,是不会发生数据包的,UDP直接就发
单工、半双工、全双工
1. 单工模式
在单工模式下,发送方可以发送数据,但发送方无法接收数据。这是一种单向通信。
2. 半双工模式
在半双工模式下,Sender 可以发送数据,也可以接收数据,但一次只能接收一个。这是双向定向通信,但一次一个。
3. 全双工模式
在全双工模式下,Sender 可以发送数据,也可以同时接收数据。同时是双向的定向通信。
问题
选择题
1.下列数据传输模式哪个是单工模式()
A.电视广播
B.电话通信
C.对讲机
2.数据传输模式分为单工、半双工和全双工,以下关于全双工的说法正确的是( )
A.全双工是指两个数据之间只能沿单一方向传输数据。
B.全双工是两个数据之间可以实现双向数据传输,但不能同时进行
C.全双工是在两个数据之间可双向并且同时进行数据传输的模式
D.全双工比半双工的通信效率低,且有可能冲突
---------------------------------------------------------------------------------------------------------------------------------
A
C
长连接和短连接
长连接:指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持。
短连接:指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,一般银行都使用短连接。
比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。
其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。
长连接和短连接的区别:
1、长连接是client方与server方先建立连接,连接建立后不断开,而短连接的Client方与server每进行一次报文收发交易时才进行通讯连接;
2、短连接多用于操作频繁,点对点的通讯,而且长连接数不能太多的情况。
长连接与短连接的操作过程
通常的短连接操作步骤是:
连接→数据传输→关闭连接;
而长连接通常就是:
连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;
这就要求长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态,短连接在没有数据传输时直接关闭就行了
问题
填空
1.数据库的连接用 ( )连接 (长/短)
2.web网站的http服务用 ( )连接 (长/短)
---------------------------------------------------------------------------------------------------------------------------------
数据库的连接用长连接。如果用短连接频繁的通信会造成socket错误,而且频繁的socket创建也是对资源的浪费。
web网站的http服务一般都是用短连接,因为长连接对于服务器来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一点资源,如果用长连接,而且同时又成千上万的用户,如果每个用户都占用一个连接的话,并发量大,对服务器的压力比较大。
CS架构和BS架构
CS Client - Server 客户端服务器架构模型
CS 架构的软件需要安装,客户端和服务端都需要更新
BS Browser - Server 浏览器服务器架构模型
BS 架构的软件不需要安装,只需要有一个浏览器即可,更新的时候只需要有更新服务器端,不需要更新客户端
区别:
硬件环境不同,cs使用专用网络,bs使用广域网;
对安全要求不同,和bs相比,cs对信息安全的控制能力更强;和cs相比,bs对程序架构要求更高;
cs客户端对电脑要求配置较高,bs客户端对电脑配置要求较低,
C/S特点:
1. 对数据的操作速度快。因为CS架构可以将大量的数据从服务器一次性获得后,就可以长时间不同服务器通讯,这样即降低了通讯的时间成本,也大大降低了服务器的压力。无论是服务器端还是客户端的速度都得到了提高。
2. 可以直接操作本地文件。BS架构如果需要访问本地文件是需要花费不少的时间和精力的。
3. 可以提供各种丰富的用户体验
B/S架构的特点
1. 不需要安装客户端,任何地方只有一台可以上网的电脑即可访问服务器。
2. 升级方便,用户只需要更新服务器就可以实现升级。
是可以进行信息分布式处理,B/S架构功能强大,可以降低成本、提高系统性能,B/S架构具有较高的通用性,对应用环境的依赖性较小,开发和维护成本较低。
问题
判断
1.CS架构的软件不需要安装,但更新时,客户端 和 服务器端 都需要更新 ()
2. BS架构的软件更新的时候,只需要更新 客户端,不需要更新 服务器端 ( )
---------------------------------------------------------------------------------------------------------------------------------
×
×
服务端
public static void main(String[] args) {ServerSocket server = null;//服务端套接字对象指针try {System.out.println("服务端启动成功,监听8080端口,等待客服端接入");server = new ServerSocket(8080);//初始化服务端套接字对象,监听8080端口//accept()等待客户端的接入(此时线程处于阻塞状态)//当有客户端接入后,返回一个Socket对象Socket socket = server.accept();//获取输入流对象InputStream is= socket.getInputStream();//建立缓冲区数组byte[ ] data = new byte[1024];//从输入流中读取客户端传输过来的数据int n = is.read(data);//把字节数组编码为字符串String str = new String(data,0,n);//打印System.out.println("客户端" + str);OutputStream os = socket.getOutputStream();String back = "你干嘛,小黑子";os.write(back.getBytes());} catch (IOException e) {e.printStackTrace();}finally{try {server.close();} catch (IOException e) {e.printStackTrace();}}}
客户端
public static void main(String[] args) {Socket socket = null;try {//建立客户端套接字对象,此时发生三次握手socket = new Socket("192.168.198.185",8080);//获取客户端的输出流OutputStream os = socket.getOutputStream();String send = "Hello,大傻逼";os.write(send.getBytes());//获取客户端的输入流InputStream is = socket.getInputStream();byte [] data = new byte[1024];int n = is.read(data);String str = new String(data,0,n);System.out.println("服务端:"+ str);} catch (IOException e) {e.printStackTrace();}finally {try {socket.close();} catch (IOException e) {e.printStackTrace();}}}
Socket简介
Socket是应用层与TCP/IP协议族通信中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个facade模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
Socket 套接字的底层一定是字节流
可以包装成对象流传输对象
Message 类 序列化和反序列化
String mssage ;//消息内容
String name ;// 发送人
String date ;// 发送时间
可以包装成二进制流二进制文件