1.QQ及时通信软件既使用UDP也使用TCP
- 登录过程,客户端采用TCP协议向服务器发送消息,HTTP协议下载信息。登录之后,会有一个TCP连接来保持在线状态。
- 和好友发消息,客户端采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠性,采用上层协议来保证可靠传输:如果客户端收到UDP发送的消息,需要使用UDP发送一个应答包,以此保证消息可以无遗漏传输。
- 在内网中两个客户端传文件,QQ采用P2P技术,不需要服务器中转。
2.TCP长连接为什么要发送心跳包
因为当电脑连接上网络时,运营商分配给电脑的IP只是一个内网的IP,手机要连上Internet必须要通过运营商的网关进行IP转化,这个网关称为NAT,电脑连接Internet是将运营商的内网ip和端口与外网相互映射来完成的。
但是运营商为了减少网关NAT映射表的负荷,当一个链路有一段时间没有通信时,就会删除对应表,造成链路中断,这个时间一般为五分钟,所以长连接后台需要定时发送心跳包来维持长连接。
同时,长连接的心跳周期不能设置的太长,否则长连接会被释放掉,造成客户端的重连和登录,同时也不能设置太短,太短会加重服务器的负担。
3.GET和POST在TCP阶段的不同
- 对于GET请求,浏览器会把http头部和数据部分一起发送出去,服务端响应200(返回数据)
- 对于POST请求,浏览器会先发送http头部,服务器响应100 continue,浏览器再发送数据部分,服务端响应200(ok)
- 并不是所有的浏览器都会在POST中发送两次包,Firefox只发送一次
网友评论