基于TCP Socket的C/S通信与基于UDP数据报的C/S通信有哪些区别?Java分别提供了哪些支持?
TCP(Transmission ControlProtocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂。 UDP(User Data Protocol,用户数据报协议)是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
TCP与UDP的区别: 1.基于连接与无连接; 2.对系统资源的要求(TCP较多,UDP少); 3.UDP程序结构较简单; 4.流模式与数据报模式 ; 5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
TCP中Java提供了 Socket类 与 ServerSocket类 UDP中Java提供了DatagramSocket类 与 DatagramPacket类
课后习题:
15.1:网络通信协议分七层,各层解决的问题 1、物理层(Physical Layer)在局部局域网上传送数据框(frame),它负责管理电脑通信设备和网络媒体之间的互通。 2、数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。 3、网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。 4、传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。 5、会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。 6、表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。 7、应用层(Application Layer)提供为应用软件而设的界面,以设置与另一应用软件之间的通信。
15.2:TCP和UDP协议的区别: 1、连接方面 TCP面向连接(如打电话要先拨号建立连接)。 UDP是无连接的,即发送数据之前不需要建立连接。 2、安全方面 TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。 UDP尽最大努力交付,即不保证可靠交付。 3、传输效率 TCP传输效率相对较低。 UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。 4、连接对象数量 TCP连接只能是点到点、一对一的。 UDP支持一对一,一对多,多对一和多对多的交互通信。
为什么称TCP是面向连接的可靠协议?因为通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。
15.3:在Java语言当中,网络编程是从协议的什么层次开始的?程序设计时,什么情况下选择Java高层次网络编程,什么情况下选择低层次网络编程?
传输层。 高层次网络编程适用于面向Internet的通信,而低层次网络编程则面向内部网络通信。
15.4:Socket编程时,目的地址和端口号需要在什么地方指出?使用数据报时,又在什么地方指出?
Socket:在创建新的socket对象时 数据报:在DatagramPacket的构造方法中
|