一分钟了解java网络编程
一、OSI七层网络模型
应用层:Http协议、电子邮件传输、文件服务器等;
表示层:数据转换,解决不同系统的兼容问题(跨语言);
会话层:建立与应用程序的会话连接;
传输层:提供了端口号和传输协议(TPC/UDP);
网络层:为数据实现路由(路由器、交换机);
数据链路层:传输地址的帧以及错误检测;
物理层:以二进制形式,在物理机器上实现传输(光纤、专线各种物理介质传输);
网络通讯协议图连接:
http://www.colasoft.com.cn/download/protocols_map.php
二、TCP与UDP协议
Socket技术:任何编程语言都支持Socket技术开发(网络编程技术),目的就是解决两个应用程序通讯的问题;
Socket技术支持两种协议:TCP与UDP协议;
TCP与UDP协议区别:
TCP协议:是一个面向连接可靠的协议,因为在建立连接的时候必须通过三次握手才可以实现数据传输;因此数据不会丢失;应用场景: http协议,rpc框架等;
UDP协议:是面向无连接的协议,因为UDP在通讯的时候不需要接受方存在;属于不可靠协议;应用场景:直播,微信聊天等;
TCP协议三次握手:
1. 第一次握手:客户端会向服务端发送消息SYN=1,SEQ=x(随机数);
2. 第二次握手:服务端接确认收到客户端的消息SYN和SEQ,服务端会给客户端回复消息ACK=1+x,SEQ=y(随机数);
3. 第三次握手:客户端会收到服务端的回复SYN,ACK,SEQ(y),客户端就会给服务端发送消息ACK=1+y;
三次握手成功开始建立连接,传输数据;
四次挥手:
1. 第一次挥手:客户端向服务端发送一个释放连接通知;
2. 第二次挥手:服务端接受到释放通知之后,告诉给客户端说等待一下,因为可能存在有其他的数据没有发送完毕,等待数据全部传输完毕之后就开始关闭连接;
3. 第三次挥手:服务器端所有的数据发送完毕之后,就告诉客户端说现在可以释放连接了;
4. 第四次挥手:客户端确认是最终释放连接通知,ok 就开始向服务端发送我们可以开始关闭连接啦;
注:SYN(建立连接)、ACK(确认标记)、FIN(终止标记)
总结:三次握手目的:就是确保连接可靠;四次挥手就是关闭连接;
三、HTTP协议实现原理
Http协议一种超文本传输的协议,基于TCP/IP协议的包装,应用场景:img、css、js、html等;
http协议版本:1.0和1.1
http协议1.0: 规定客户端和服务端传输完成之后,立马关闭连接(短链接);(如果请求非常多,这样频繁去关闭连接,非常耗资源);
http协议1.1: 开始支持长链接;
四、长链接与短链接
长链接:客户端与服务端建立连接之后,不会立马关闭连接,会保持一定的复用机制,默认情况下在300s空闲情况下自动断开连接;
短链接:客户端与服务端发送消息后,立马关闭连接,如果频繁发送请求,可能消耗服务器端资源;