天天看点

网络编程基础

客户端:指浏览器或者自定义的客户端。

服务端:像Tomcat服务器或者自定义客户端。

TCP:传输层协议。

IP:网络层协议。

TCP使用案例:用于RPC接口调用,发送电子邮件等需要可靠性传输的事情。

UDP使用案例:用于视频这类的传输。

相同点:

TCP与UDP都是网络层的通信协议,只是通信的协议不同。

不同点:

TCP协议在通信前要先通过三次握手的方式建立连接,保证通信的可靠性。而UDP不需要建立连接接可以发送数据包,因此接收方不一定能收到,因此是不可靠的。

TCP协议需要建立连接和释放连接,因此传输效率低。而UDP不需要释放资源,因此开销小,速度快。

UDP可以进行广播发送,而TCP是点对点通信。

TCP在建立连接后可以进行大数据量的传输,而UDP会限制每个数据包的传输大小在64K以内。

客户端建立连接请求时的三次握手:

第一次握手:客户端向服务端发送syn报文和序号x;

第二次握手:服务端接收到客户端的请求,发送ack=x+1报文,并发送序号y,syn报文。

第三次握手:客户端接收到服务端的请求,发送ack= y+1报文,并发送序号z。

为什么是三次握手而不是二次或者四次五次呢?

因此根据三次握手我们客户端和服务端都可以知道自己发送正常,对方接收正常;而二次握手的话,服务端并不知道自己发送正常,只能知道客户端发送接收正常,自己接收正常,而不知道自己发送正常。而三次握手刚好就满足了这个条件。既然三次握手就满足了,四次五次就会显得多余了,虽然更多次的握手可以更加保证通信的正常,但是正常来说三次握手就能保证通信99%是可靠的,再多次的握手可靠性的提高并不高,意义不大。

客户端服务端都可以通过四次挥手关闭连接,但一般都是客户端发起四次挥手请求来关闭连接,因为我们服务端一般是24小时在线服务的。

以客户端发起断开连接为例:

客户端告诉服务端我要断开连接了。

服务端相应客户端说我收到你的断开连接请求了。

服务端断开连接,并发送请求告诉客户端我和你断开连接了。

客户端收到断开连接请求断开了连接,并发送确认断开的请求告诉服务我和你断开连接了,这时候服务端就接收不到客户端的请求了,如果接收到了就表示没有真正断开连接。

Java入门视频教程 618-630