来源于:http详解
关于Socket,谈谈TCP/IP 和 UDP的理解
Socket是一个用于传输网络数据的工具,TCP/IP 和 UDP都是传输协议,用于定义网络数据传输的格式,属于长连接
TCP/IP 侧重可靠传输,传输速度慢,不会丢失数据,安全,聊天和下载文件时用到
UDP:侧重快速传输,传输速度快,容易丢失数据包,不安全。局域网游戏和网络游戏,视频聊天的时候用到
TCP更安全是因为有一个三次握手:第一次握手(客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认),第二次握手(服务器收到syn包,必须确认客户的SYN包,同时自己发送一个SYN+ACK包,此时服务器进入SYN_RECV状态),第三次握手(客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,发送完毕后服务器和客户端都进入ESTABLISHED状态,完成三次握手),三次握手之后才开始正式传输数据。因此使用TCP协议的MSN比采用UDP的QQ传输速度慢,但并不代表不安全,因为程序员可以手动对UDP的数据收发进行验证(比如发送方对每个数据包进行编号然后由接收方进行验证)
Http:超文本传输协议,用于定义网络数据传输的格式(短链接)http1.0之前不支持短连接,1.1之后默认就是长连接,只要在服务器和客户端同时设置Connection为keep-alive即可
长连接是为了复用,长连接指的是TCP连接,也就是为了复用TCP连接,也就是说多个HTTP请求可以复用一个TCP连接,节省了很多TCP连接建立和断开的消耗
比如请求了一个网页,这个网页肯定还包含了CSS、JS等一系列资源,如果是短连接的话,每次打开一个网页,基本要建立几个甚至几十个TCP连接,浪费了大量资源
长连接不是永久连接,如果一段时间内,具体的时间长短,是可以在header当中进行设置的,也就是所谓的超时时间,这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉
socket连接是长连接,客户端与服务器保持通道,双方可以主动发送数据,一般多用于即时通讯,游戏,默认超时时间是30秒,默认大小是8k(一个数据包大小)
网友评论