笔记整理之TCP与UDP说明

IP可以定位到某台电脑,ip+port可以定位到某台电脑某个应用程序。
端口号:逻辑端口,由操作系统负责,对每个程序进行分配,一个号码对应一个程序。只能一对一对应,比如windows给微信分配8000端口,给QQ分配6000端口,端口号范围0-65535,1024之前的端口号已经被操作系统占用了。
java.net.InetAddress这个类没有构造方法,就不能new只能调用这个类的静态方法,没有构造方法的类,只能调用其静态方法。

传输层的两个高级协议:
UDP:udp是无连接通讯协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另一台计算机发送数据的时候,
发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
由于使用UDP协议消耗资源小,通讯效率高,所以通常用于音频,视频和普通数据的传输。例如视频会议,QQ用udp,因为这种情况即使偶尔
丢失一两个数据包,也不会对接收结果产生太大影响,由于UDP的面向无连接性,不能保证数据的完整性,传输重要数据的时候不推荐使用udp协议。

TCP:TCP协议是面向连接的通讯协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输,三次握手,
为了保证数据的完整性,传输文件的时候必须使用TCP协议。

UDP通信:
DatagramPacket类的作用就是包装数据,相当于是集装箱,DatagramSocket类的作用相当于是码头,负责发送和接收数据。
实现UDP协议的发送端:
 *    实现封装数据的类 java.net.DatagramPacket  将你的数据包装
 *    实现数据传输的类 java.net.DatagramSocket  发送和接收数据包

套接字:就是绑定ip,port的网络对象。
DatagramSocket.receive(DatagramPacket)会一直处于等待状态,直到接收到对方请求的数据。


TCP通信:
TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象。
TCP和UDP的区别在于:UDP中只有发送端和接收端,不区分服务器端和客户端,计算机之间可以任意发送数据。而TCP通信是严格区分客户端和服务器端,在
通信时,必须先由客户端去连接服务器端才能实现通信,服务器不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。
在JDK中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个是Socket类,用于表示客户端。

客户端服务器端数据交换,必须使用套接字对象Socket中的获取的IO流,自己new流,不行,因为客户端和服务器端连通的时候,IO对象就已经被创建。
对于TCP和UDP来说,接收端都是具有线程等待效果,如果接收端没有接收到数据,就会一直处于等待接收数据状态,还有就是接收可以指定某个端口接收,但是
发送的端口是由操作系统分配。

通常情况下Socket连接就是TCP连接

socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:    “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值