• http和Tcp的长连接和短连接


    一,http协议和tcp 、ip协议的关系
    (1) http是应用层协议,tcp协议是传输层协议,ip协议是网络协议。
    (2) IP协议主要解决网络路由和寻址问题
    (3) tcp协议主要解决在IP层协议之上,如何可靠的传输数据,即接收端收到的数据包的大小和顺序,和发送端保持一致。tcp协议是可靠的面相连接的。

    二,如何理解http协议是没有状态的
    (1) http协议是无状态的,指的是http协议对于事务处理没有记忆功能,客户端向服务端请求完数据之后,服务端不知道客户端是什么状态。

    三,什么是长连接?短连接?
    http的长连接和短连接,本质上是tcp层的长连接和短连接
    (1) http 1.0 默认使用短连接,就是,客户端和服务端每进行一次http操作,就建立一次连接,任务结束就中断连接。如果请求的html中有网络js和图片,则需要新建连接去取。
    client发起请求--建立连接--server响应请求---发送消息--关闭连接
    建立连接--数据传输--关闭连接

    (2) http 1.1 默认使用长连接,在使用的http协议,在响应头会加上 Connection:keep-alive,当一个网页打开完成之后,连接不会马上关闭,再次访问这个服务时,
    会继续使用这个长连接,而是在一段时间后关闭,这个时间可以再浏览器设置。
    建立连接--数据传输......保持连接......数据传输--关闭连接

    四,TPC短连接
    当网络通信使用tcp协议时,在真正的读写操作前,需要完成3次握手,来建立连接。当读写完成时,需要四次握手来释放连接,每个连接的建立和释放都是需要资源和时间的,所以长连接比短连接
    更节省资源,效率更高(RPC比http高效的原因)

    五,RPC比HTTP请求快的原因
    (1)http使用http协议,rpc使用tcp协议,比http少了应用层,表示层,会话层,这3层
    (2)rpc使用长连接,当网络通信使用tcp协议时,在真正的读写操作前,需要完成3次握手,来建立连接。当读写完成时,需要四次握手来释放连接,每个连接的建立和释放都是需要资源和时间的,所以长连接比短连接
    更节省资源,效率更高

    六,长连接和短连接的优点和缺点
    (1)长连接,可以省去较多的tpc建立和关闭操作,减少资源的浪费,节约时间。长连接多用于操作频繁,点对点的通讯,而且连接数不能太多。数据库的连接就是使用长连接,如果用短连接频繁通讯会造成socke错误
    ,而且频繁的Socket创建和销毁也是对资源的消耗比较大。

    (2)短连接,短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段,web网站一般使用短连接,因为长连接对服务端来说会消耗一定资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的,对资源消耗过大

    七, tcp的keep-alive和http人Keep-alive
    (1) Tcp的keep-alive是j检查当前tcp是否存活,表现就是当一个连接在一段时间没有数据传输是,一方会发一个心跳包,果对方有回包则表明当前连接有效,继续监控。
    这个“一段时间”可以设置。
    WinHttp库的设置:
    WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL
    Sets the interval, in milliseconds, to send a keep-alive packet over the connection. The default interval is 30000 (30 seconds). The minimum interval is 15000 (15 seconds). Using WinHttpSetOption to set a value lower than 15000 will return with ERROR_INVALID_PARAMETER

    (2) http的Keep-alive是让一个tcp连接活久点。在浏览器设置

  • 相关阅读:
    MySQL数据库优化的八种方式(经典必看)
    HTTP状态码详解
    一周学会HTML----Day03常用标签(下)
    一周学会HTML----Day02常用标签(上)
    SEO优化---10分钟学会建立高转化率的网站关键词库
    C# 命名的基本约定【转】
    arraylist是接口list的实现类
    API
    new与malloc区别(转)
    获取系统时间
  • 原文地址:https://www.cnblogs.com/weimingxin/p/8540415.html
Copyright © 2020-2023  润新知