短连接

连接->传输数据->关闭连接

HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接。短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

长连接

连接->传输数据->保持连接->传输数据->....->关闭连接

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

http的长连接

HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持,但还是无状态的,或者说是不可以信任的。

那什么场景下使用长连接或者短连接?

长连接多用于操作频繁,点对点的通讯(及时通讯),而且连接数不能太多。每个TCP连接都需要三次握手,建立连接,会比较耗时。如果每个操作都要先连接,再操作的话,处理速度会降低很多。长连接的特点是每个操作完后都不断开连接,直接发送数据包就可以了,不需要每次都建立连接。

使用场景如下:

1.数据库的连接用长连接。如果用短连接频繁的通信会造成socket错误,而且频繁的socket创建也是对资源的浪费。

2.像web网站的http服务一般都是用短连接,因为长连接对于服务器来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一点资源,如果用长连接,而且同时又成千上万的用户,如果每个用户都占用一个连接的话,并发量大,对服务器的压力比较大。如果每个用户无需频繁操作情况下需用短连接。

在长连接中一般无法判断读写什么时候结束,必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度读相应长度的报文。


Socket是什么

Socket是应用层与TCP/IP协议族通信中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个facade模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。



通信过程:


主机A的应用程序要能和主机B的应用程序通信,必须通过Socket建立连接,而建立Socket连接必须需要底层TCP/IP协议来建立TCP连接。建立TCP连接需要底层IP协议来寻址网络中的主机。网络层使用的iP协议可以帮助我们根据IP地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过端口号来指定。这样就可以通过Socket实例唯一代表一个主机上的一个应用程序的通信链路了。

建立通信链路

当客户端要与服务器端通信,客户端首先要创建一个Socket实例,操作系统将为这个Socket实例分配一个没有被使用的本地端口号,并创建一个包含本地和远程地址、端口号的套接字数据结构,这个数据结构将一直保存在系统中直到这个连接关闭。在创建Socket实例的构造函数正确返回之前,将要进行TCP的三次握手协议,TCP握手协议完成后,Socket实例对象将创建完成,否则将抛出IOException错误。


TCP和UDP的区别

  • TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠服务。收发两端都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端就难于分辨出来了,必须提供科学的拆包机制。即面向流的通信是无消息保护边界的。
  • UDP(user datagram protocol,用户数据报协议)是无连接的,面向消息的,提供高效率服务。不会使用块的合并优化算法,由于UDP支持的是一对多的模式,所以接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的UDP包,在每个UDP包中就有了消息头(消息来源地址,端口等信息),这样对于接收端来说,就容易进行区分处理了。即面向消息的通信是有消息保护边界的。

Socket长连接和短连接的区别相关推荐

  1. http和socket之长连接和短连接区别

    TCP/IP  TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.  在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.  在传输层中有TCP协议与UDP协议. ...

  2. socket解读,http和socket之长连接和短连接区别!

    TCP/IP  TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.  在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.  在传输层中有TCP协议与UDP协议. ...

  3. java socket 短连接_socket长连接和短连接的区别

    长连接与短连接的区别(tcp socket http概念原理是一样的) 一.长连接与短连接:长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收.这种方式下由于 ...

  4. HTTP、TCP、Socket、长连接、短连接的概念和原理及其区别

    文章目录 HTTP Scoket HTTP协议和TCP/IP的关系 Socket与TCP/IP的关系 Socket与HTTP的关系 TCP/IP协议分层 长连接和短连接 长连接和短连接的优点和缺点 短 ...

  5. android socket 长连接_TCP/IP,http,socket,长连接,短连接

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家 下一篇:这200G的Java实战资料是我师傅当年教 ...

  6. socket的长连接、短连接、半包、粘包与分包

    socket的半包,粘包与分包的问题和处理代码:http://blog.csdn.net/qq_16112417/article/details/50392463 知乎关于长连接和短连接:https: ...

  7. TCP长连接与短连接的区别

    TCP/IP   TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.  在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.  在传输层中有TCP协议与UDP协议 ...

  8. TCP长连接和短链接的区别及应用场景

    TCP长连接和短链接的区别及应用场景 TCP在真正的读写操作之前,服务端与客户端之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立通过三次握手,释放则需要四 ...

  9. http的长连接和短连接的区别

    http的长连接和短连接的区别 一.长连接与短连接: 长连接:客户端与服务端先建立连接,连接建立后不断开,然后再进行报文发送和接收.这种方式下由于通讯连接一直存在. 短连接:客户端与服务端每进行一次报 ...

  10. 长连接和短连接的区别、长连接的实现

    长连接和短连接的区别及原理 一.长连接与短连接: 长连接:client方与server方先建立连接,连接建立后不断开,然后再进行报文发送和接收.这种方式下由于通讯连接一直存在.此种方式常用于P2P通信 ...

最新文章

  1. 成功解决ProxyError: Conda cannot proceed due to an error in your proxy configuration.Check for typos an
  2. php 静态扩展,thinkphp5行为扩展实现html静态缓存设置
  3. thinkphp 事件
  4. linux mem cache,Linux内存:MemTotal、MemFree、MemAvailable三者区别
  5. asp.net控件开发学习(1)
  6. [javase] 1.请从键盘随机输入10个整数保存到List中,并按倒序、从大到小的顺序显示出来...
  7. CF 317D Game with Powers
  8. class文件的加载过程
  9. keil软件仿真打印输出配置
  10. 最新互联网架构师视频教程+源码20G
  11. nginx代理安装ssl证书
  12. 网站SEO优化知识梳理
  13. 基于java植物养护管理系统ssm
  14. idea的java项目怎么连数据库_idea 使用Java连接SQL Server数据库教程
  15. ODOO 进出口外贸行业解决方案
  16. Autodesk Maya 2018.6 中文特别版 Mac 顶级三维动画制作工具
  17. 【深入理解计算机系统 01】计算机系统漫游
  18. Zephyr启动过程与中断响应
  19. python银行账户资金交易管理办法_银行账户资金托管业务管理实施细则模版
  20. 书记_《Java程序员,上班那点事》

热门文章

  1. Could not find module ‘xxx‘ for target ‘xxx‘; found: i386, x86_64-apple-ios-simula错误解决
  2. pyqt5和spyder版本对应_pyqt5 spyder 项目 记录
  3. php ucfirst();函数
  4. linux系统如何使用ocr图片文字识别
  5. Windows 10 下,强制关闭端口
  6. iphone html复制粘贴,如何在iPhone上复制内容快速粘贴到iPad上?
  7. 简单记录如何通过 VS Code 和 Auto Build Marlin编译和更新marlin固件
  8. python如何打开npy文件_操作python如何实现npy格式文件转换为txt文件
  9. Win10下NTFS分区变RAW修复的一种错误方法
  10. 论软件测试工程师面试套路和暗语灵魂解密