1.协议简介

Http 协议:应用层协议

TCP 协议:传输层协议,主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出的顺序一致,TCP具有可靠,面向连接的特点

IP    协议: 网络层协议,主要解决网络的路由与寻址问题。

2.HTTP协议是无状态的

Http 协议是无状态的,其实是说,协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,如果一个客户端打开一个服务器的网页后,它再去打开这个服务上面的网页的时候,这前后两次请求是没有联系的是独立的。但是这种无状态并不代表HTTP不能保持TCP 连接,更不能代表HTTP使用的是UDP协议。

3.HTTP 的连接方式

HTTP 的连接方式是指 连接的持续性,它分为:短连接和长连接。

3.1 短连接

顾名思义,浏览器和服务器没进行一次HTTP操作,就建立一次连接,但是任务结束就中断连接。在HTTP/1.0中,默认使用的是短连接。如:浏览器访问某个HTML或者其他类型的Web页中包含有其他的web资源,如JavaScript,图像文件,CSS文件等;当浏览器遇到这样的web资源,就会建立一个HTTP会话。

3.2 长连接

同样的意思,在客户端与浏览器建立了连接后,会保持这个连接的状态。在HTTP/1.1中,默认的是长连接。使用长连接的HTTP协议,会在响应头有如下的代码:

Connection:keep-alive

当使用了长连接的时候,客户端一旦建立了连接,第二次建立连接的时候就直接使用已经建立的通道。但是keep-alive并不是永久的保持,可以在不同的服务器软件设置这个时间。

HTTP 的长连接短连接,其实是TCP的长连接和短连接。

4.TCP连接

TCP 的连接是采用3次握手,而断开连接是采用4次握手

之所有有第三次握手的原因,有可能在 客户端发送连接请求时,第一次发送,请求在网络的某个地方block了,这时候发送第二次网络请求,第二次网络请求服务器答复了,而第一个网络请求又来了,而这个请求应该是被弃用了的,所以就出现了这个请求异常。为了避免这个异常就建立了3次握手

建立连接:

断开连接:

4.1. TCP 长连接短连接的过程

长连接:

建立连接----传输数据---(保持连接)--传输数据-- 关闭连接

短连接

建立连接--- 传输数据----关闭连接........建立连接---传输数据----关闭连接

5. 长连接和短连接的优点和缺点

由上可以看出,长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。不过这里存在一个问题,存活功能的探测周期太长,还有就是它只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接时,保活功能就不够使了。在长连接的应用场景下,client端一般不会主动关闭它们之间的连接,Client与server之间的连接如果一直不关闭的话,会存在一个问题,随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,如关闭一些长时间没有读写事件发生的连接,这样可 以避免一些恶意连接导致server端服务受损;如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,这样可以完全避免某个蛋疼的客户端连累后端服务。

短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。

长连接和短连接的产生在于client和server采取的关闭策略,具体的应用场景采用具体的策略,没有十全十美的选择,只有合适的选择。

6.什么时候使用长连接,什么时候使用短连接

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

Http 协议建立连接的方式相关推荐

  1. Java网络编程从入门到精通(14):多种多样的建立网络连接的方式

    在上一篇文章中我们讨论了Socket类的基本用法,并给出的例子中使用Socket类连接服务器时使用了一种最简单的连接方式,也就是通过IP和端口号来连接服务器.而为了使连接服务器的方式更灵活,Socke ...

  2. 为什么tcp不采用停等协议_为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?...

    看到了一道面试题:"为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?",想想最近也到金三银四了,所以就查阅了相关资料,整理出来了这篇文章 ...

  3. 【揭秘TCP/IP协议簇】——TCP/IP的三次握手建立连接

    转载自:http://hi.baidu.com/senya/blog/item/098ece583e696184800a188c.html Internet是使用TCP/IP协议簇.互联网发展之所以迅 ...

  4. startupinfo为什么需要初始化_为什么 TCP 建立连接要三次握手

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  5. mobaxterm为什么无法连接_为什么 TCP 建立连接需要三次握手

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  6. TCP建立连接与释放连接

    TCP建立连接与释放连接   最近复习准备<计算机网络>考试,感觉TCP协议建立连接与释放连接这两个过程比较重要,所以把自己理解的部分写下来. 1.建立连接:(三次握手) (1)客户端发送 ...

  7. java socket 握手_TCP建立连接三次握手过程详解(wireshark截图、java socket源码)

    TCP(Transmission Control Protocol传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 三次握手协议建立连接图 握手过程步骤如下(配wireshark分 ...

  8. 博图使用仿真,人机界面与PLC建立连接,出现连接中断问题,连接不上的问题(问题记录)

    这个问题困扰了很久,其实很简单,就是建立连接的方式不对和仿真的顺序的问题. 首先在建立连接前先确定好自己的ip,通过cmd界面使用命令ipconfig即可获得. 这里我的IPV4地址网段是192.16 ...

  9. git与远程仓库建立连接并拉取和推送代码

    ①初始化本地环境 ②与远程仓库建立连接并获取代码 ③向远程仓库推送代码 本文记录如何在PC端与 github 或者 gitlab 这种远程仓库建立连接,拉取远程仓库代码并且提交修改. ①初始化本地环境 ...

最新文章

  1. Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender
  2. COMMAND 模式
  3. 8-1日复习 模板函数 模板类
  4. 几行代码搞定树形文本转XML和JSON
  5. IBinder获取手机服务信息异常
  6. Sentinel 基于Nacos规则持久化-推模式
  7. 商业智能解决方案_格至智能开关:简单便捷的商业智能照明解决方案
  8. gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
  9. Android设置Spinner控件的文字居中显示
  10. SVN报Previous operation has not finished; run 'cleanup'
  11. Roll A Ball 案例学习
  12. Oracle 数据文件迁移过程中 执行 shartup mount 报ORA03113:通讯通道的文件结尾 问题解决过程
  13. jpg格式电脑怎么弄_电脑上图片改为jpg格式方法_照片怎么改为jpg格式-win7之家
  14. 计算机输入什么指令关机,电脑关机命令是什么 电脑关机命令详解
  15. ThreadPoolExecutor线程池参数设置技巧
  16. oracle database lite,Oracle Database Lite Client 10
  17. 关于npm i 的那点事
  18. WIN10下系统缩放比例(DPI)的魔幻设置
  19. 学生党高性价比蓝牙耳机有哪些?高性价比学生党蓝牙耳机推荐
  20. “六合上甲”一体化数据开发平台获“2022 DAMA中国数据治理优秀产品”大奖

热门文章

  1. PhotoShopCS6_13.0.1.3
  2. 【2013Esri中国用户大会】引人关注的Web开发(部分提供源码下载)
  3. 主题演讲:未来新趋势电动车
  4. php对字符串进行加密、解密
  5. [词性] 十七、介词 7 [ to ] [ since ] [ through ] [ under ] [ up ] [ with ]
  6. 我的20条生活原则之01:任何事情都有两面性
  7. clap与slap_关于SLAP
  8. [源代码] [东南大学]学分绩点计算器gpa 1.0.2 升级版
  9. 【转载】AUTODESK系列专用卸载工具软件推荐排行榜(CAD/3Dmax/Revit/Maya/Inventor)
  10. hdu【1290】献给杭电五十周年校庆的礼物