首先我们要知道的是http所在的是TCP/IP协议组中的应用层。 应用层-传输层-网络层
应用层:HTTP FTP TELENT STMP
传输层:TCP UDP
网络层:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议 作用:网络寻址
大体对长连接和短连接的概括
长连接 : create link - send data - keep alive - continue to send - close link
短连接: create link - send data - close link
说到这里插入一个词 “无状态” , 什么叫http的无状态,这个小白在看的时候要和短连接有明确的区分,不要混淆对待,短连接属于单个链接概念,而无状态是一个链接和下个链接的状态,意思是链接与链接是互相独立,互不影响的,上个链接的所有内容不会带入到下个链接中,所以有些情况第二个链接需要知道上个链接的部分信息,那么为了将http变为“有状态”就引入了 比如 cookie session (想了解cookie和session可以看一下https://blog.csdn.net/liyifan687/article/details/80077928) 等机制。所以这里一定要区分 无状态 和 短连接 的区别!!!
那么长连接的好处就是维持链接持续进行数据获取,很明显对于一些请求数据频繁,点对点的情况,用长连接比较合适,不需要频繁的创建关闭链接,这样就节省了很多的资源和时间。不过反过来说,如果客户端的数量越来越多,那么服务器就需要同时维系很大数量级的链接,这对服务器来说无疑不是压力巨大的,所以服务器对此一般的策略,对一定时间没有任何操作的链接关闭掉,或者可以限制每个客户端链接的个数,减轻服务端压力。
那么短连接的好处是管理简单,服务器上存在的链接就是有用的链接,结束关闭链接即可。不过同时缺点也是有客户端恶意频繁请求。这里多说一句,短连接一般是client先发起链接关闭的请求。
以上就是对长连接和短连接的简单理解,更深入的理解可自行挖取。那么客户端的http请求是什么链接呢,这里因为http版本不同,所以处理不同。
HTTP/1.0和HTTP/1.1的区别
HTTP 协议老的标准是HTTP/1.0,目前最通用的标准是HTTP/1.1。
在同一个tcp的连接中可以传送多个HTTP请求和响应.
多个请求和响应可以重叠,多个请求和响应可以同时进行.
更加多的请求头和响应头(比如HTTP1.0没有host的字段).
它们最大的区别:
在 HTTP/1.0 中,大多实现为每个请求/响应交换使用新的连接。HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
在 HTTP/1.1 中,一个连接可用于一次或多次请求/响应交换,尽管连接可能由于各种原因被关闭。HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
在客户端的请求头中配置 connection = keep alive time out 属性, 还有max字段意思是当前链接最大可以进行多少次请求。