HTTP的长链接和短链接实际上是TCP的长连接和短链接。首先我们先介绍一下TCP/IP协议组四层模型。其中包括以下:

  1. 应用层:HTTP、FTP、DNS、TELNET等协议
  2. 传输层:TCP、UDP
  3. 网络层:IP、ARP、RARP、ICMP协议等
  4. 网络接口层:是TCP/IP协议的基层,负责数据帧的发送和接收。

接下来我们说下常见的几个协议的作用:

  • HTTP:HTTP协议无状态指的是对事物处理没有记忆能力。也就是说打开一个服务器的网页和上次打开这个网页之间没有任何联系。

  • IP协议:负责解决网路路由和寻址问题

  • TCP:解决如何在IP层之上可靠的传递数据包。并且顺序和发送顺序一致,不丢包。TCP协议是可靠的、面相连接的。

  • UDP:与TCP是对应,是面相非连接的协议,只负责把数据包传过去。数据量小、可靠性不高,可能会掉包。我们经常使用的ping命令就是发送UDP数据包。

好了好了,进入正题,开始说长链接和短链接。

短连接

在HTTP/1.0中默认是使用短连接,客户端每进行一次http请求就建立一次连接,任务结束连接就中断(双方都可以发起close,一般是客户端发起),比如访问一个网页或者其他web资源(img、css、js等),每遇到一个web资源就要建立一次连接。

优缺点:

因为每次通信都需要建立TCP连接,连接的建立都需要三次握手,而释放需要四次握手。所以会浪费时间和带宽。但是优点就是对于服务端来讲,不要进行额外的控制,每条连接都是有用的。

长连接

从HTTP/1.1开始默认使用长连接。使用长连接的HTTP协议会在响应头加入Connection: keep-alive。当打开一个网页客户端和服务端建立的TCP连接不会关闭。当再次访问服务器时还会使用这个连接。但是这个状态不会永久保持连接,可以在不同的服务器软件(Apache)上设置。

优缺点:

减少了TCP的建立和关闭,减少浪费、节约时间。对于频繁请求适合使用长连接,但是缺点就是随着用户的增多,服务器会扛不住的。所以需要采取一些策略:如关闭长时间没有读写操作的连接。

应用

web网站的http服务一般都是短连接。

保活功能扩展:

如果客户端已经消失但是连接没有断开,服务器会保留一个半开放的连接,而服务器又在等待客户端的数据,此时服务端将会永远等待。保活功能会试图检测半开放状态。如果一个连接2个小时没有任何动作,服务端会发送一个试探报文,根据客户端响应的4个客户端状态进行判断。

  1. 客户端机正常运行,且服务器可达,此时TCP响应正常,服务器将保活定时器复位。

  2. 客户机已经奔溃,并且关闭或者重新启动。服务端无法收到响应。服务端每隔75秒发一次,一共发10次,若没有收到一个响应,则认为客户端已经关闭并且终止连接。

  3. 客户端奔溃并已经重新启动,服务端将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。

  4. 客户机正常运行,但是服务器不可达。这种情况与第二种类似。

HTTP的长链接和短链接说明相关推荐

  1. 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?

    文章目录 什么是长连接和短连接? 什么时候使用长连接.短链接? 定义 适用场景 什么是长连接和短连接? 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连 ...

  2. http / 关于长连接和短链接的理解

    HTTP 协议是基于请求 / 响应模式的,因此只要服务端给了响应,本次 HTTP 请求就结束了,也可以理解成 HTTP 是面向请求 / 响应的. TCP 协议是面上连接的. 综上,如果 HTTP 请求 ...

  3. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...

  4. 【短链接】——新浪、百度、搜狐等官方长链接转短链接

    在项目中难免会生成自己的跳转链接,为了简化链接以及防止微信等屏蔽,可以用一些官方的api将自己的链接转为短链接. ConvertShortUrlUtil.java public class Conve ...

  5. C#长链接转短链接(调用新浪api)

     /// <summary>  /// 长链接转短链接  /// </summary>  /// <param name="longUrl"> ...

  6. 我把视频变成链接_如何把长链接变成短链接?3个工具帮你实现

    不管是文章还是视频的链接,很多时候都是长长的一串,如果是发给别人的话,就会显得啰里啰嗦,占用空间大不说,还非常难看,使用起来不方便.其实长链接也是能够变成短链接的,下面就带来三个工具,让链接变得美观又 ...

  7. 长URL链接转短链接算法

    引言 很多大型网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责就是把原始链接很长的地址压缩成只有6 个 ...

  8. 微信URL Scheme码+长链接转短链接+短链接通过h5页面跳转到微信小程序

    微信URL Scheme码+长链接转短链接+短链接通过h5页面跳转到微信小程序 --生成微信URL Scheme码-->长链接转换成短链接-->通过短信进行推广-->用户访问营销短信 ...

  9. php 长链接变为短链接,长链接转短链接原理

    长链接转短链接代码: function short_url($input = '', $salt = '') { $base62 = array ('a', 'b', 'c', 'd', 'e', ' ...

最新文章

  1. 数据库字段设置为非空默认值
  2. 网络基础知识-TCP/IP协议各层详解
  3. ubuntu16.04中安装tensflow教程
  4. 视音频编解码学习工程:TS封装格式分析器
  5. string 类的常用方法 substring indexof length
  6. F5 在 Gartner 魔力象限中被评为 Web 应用防火墙领导者
  7. R语言ggplot2画图3
  8. system.data oracleClient 需要Oracle客户端8.1.7或high
  9. Centos6.4升级glibc_2.14
  10. linux 回收站恢复文件怎么恢复文件,linux下恢复已删除的文件
  11. android win7 共享网络打印机,详解win7共享打印机如何设置
  12. js做个随机点名的小游戏
  13. Python高并发爬虫测评(2): 多进程, 多线程和异步协程哪个快?
  14. c语言 输出定向到文件 命令提示符窗口也能看见,关于cmd:显示Windows命令提示符输出并将其重定向到文件...
  15. 【mp3】洗脑循环了!龙珠超 自在极意功 【究极の圣戦】串田アキラ 背景纯音乐...
  16. Python数据挖掘—电力窃漏电用户自动识别
  17. snowboy嵌入式_jetson nano 安装 snowboy 遇到的问题及处理
  18. C3P0 连接池时报 TimeoutException 的解决方法
  19. 常用Java注释标签(Java comment tags)
  20. 如何快速简单的从百度文库中复制长遍文字内容

热门文章

  1. linux中postfix(基于源码)的邮件系统
  2. 网络工程师之广域网必胜篇一
  3. Start application automatically during controller boot-up
  4. 机器学习——支持向量机SVM实例(兵王问题,SVM求解步骤以及思路,不求解不编程)
  5. 黑马数据库html阶段考试,黑马web阶段web试题学生版.docx
  6. oracle11g 隐藏参数_ORACLE 11GR2常用参数(含隐含参数)设置
  7. python单例_Python - 单例模式(Singleton)
  8. mysql8创建用户并授权_新特性解读 | 从 wireshark 看 MySQL 8.0 加密连接
  9. 计算机技术qq交流群,专业计算机群QQ
  10. C语言中__attribute__ ((at())绝对定位的应用