TCP和UDP

tcp:面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手断开连接

优点:在数据传输时,有确认、窗口、重传、拥塞控制机制,能保证数据正确性,较为可靠

缺点:速度相对慢一点,要求系统资源较多

udp:面向无连接的通信协议,数据包括目的端口信息和源端口信息

优点:面向无连接,操作简单,要求系统资源较少,速度快,由于不需要连接,可进行广播发送

缺点:发送数据之前不需要与对方建立连接,接收到数据时也不需要发送确认信号,发送端不知道接收端是否正确接接收,不会重发,不可靠。

长连接和短连接

当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次挥手,所以说每个连接的建立都是需要资源消耗和时间消耗的

长连接:

所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持(不发生RST包和四次挥手)。

连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信);

这就要求长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态;

TCP保活功能,保活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。如果客户已经消失,使得服务器上保留一个半开放的连接,而服务器又在等待来自客户端的数据,则服务器将应远等待客户端的数据,保活功能就是试图在服务器端检测到这种半开放的连接。

如果一个给定的连接在两小时内没有任何的动作,则服务器就向客户发一个探测报文段,客户主机必须处于以下4个状态之一:

1、客户主机依然正常运行,并从服务器可达。客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后将保活定时器复位。

2、客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。服务端将不能收到对探测的响应,并在75秒后超时。服务器总共发送10个这样的探测 ,每个间隔75秒。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。

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

4、客户机正常运行,但是服务器不可达,这种情况与2类似,TCP能发现的就是没有收到探查的响应。

短连接:

短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接(管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段);

连接→数据传输→关闭连接;

总结:

1:如果业务来往比较频繁,则选择长连接。

2:如果server要主动给client发数据,则选择长连接。

长连接和短链接在服务器占用资源,TCP长连接和短链接及优缺点相关推荐

  1. SQL Server 2005通过端口1433连接到主机127.0.0.1的TCP/IP连接失败解决方案

    今天用MyEclipse连接SqlServer2005时遇到了"通过端口1433连接到主机127.0.0.1的TCP/IP连接失败解决方案"问题,通过百度和自己摸索,得了一点小领悟 ...

  2. 基于软件定义无线电的实时频谱分析仪设备连接方法(一)简单2端口TCP/IP连接

    TCP/IP传输协议 TCP/IP传输协议,即传输控制/网络协议,也称为网络通讯协议,是在网络使用中的最基本的通信协议.TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定,并且它是保证 ...

  3. PHP tcp短链接,http请求怎样实现TCP长连接、短连接

    HTTP连接分为长连接和短连接,而我们现在常用的都是HTTP1.1,因此我们用的都是长连接. 这句话其实只对了一半,我们现如今的HTTP协议,大部分都是1.1的,因此我们平时用的基本上都是长连接.但是 ...

  4. tcp 服务器响应端口,TCP/HTTP连接/Socket/端口

    一.TCP连接与端口 web服务器只开启了一个端口,他是如何为多用户服务的? 问题描述 不同主机之间通讯,必须依赖套接字,而端口号是套接字的标识(开始是这样认为的),那么假设web服务器进程,开启了8 ...

  5. mysql服务器是否支持tcp/ip连接,(3)MySQL客户端与服务端的TCP/IP及socket连接方式-Go语言中文社区...

    MySQL客户端与服务端的TCP/IP及socket连接方式 客户端与服务器模型 客户端与服务端模型 TCP/IP方式连接 解释说明 TCP/IP套接字方式是MySQL在任何平台下都提供的连接方式,也 ...

  6. 链接mysql服务器的命令是_连接 MySQL服务器的命令是什么?( )_学小易找答案

    [单选题]两块平玻璃构成空气劈尖,左边为棱边,用单色平行光垂直入射,若上面的平玻璃慢慢地向上平移,则干涉条纹 [计算题]迎面而来的两辆汽车的车头灯相距1.0m,问汽车离人多远时它们刚能为人眼所分辨? ...

  7. java建立tcp服务器长连接_B/S 架构下后端能否建立 TCP 长连接?

    这种架构下,这样的优化策略能实现吗?能有作用吗? php 服务端请求 ES tcp server 部分代码 $streamClient = stream_socket_client("tcp ...

  8. 连接FTP显示无法解析服务器,Serv-U服务FTP无法连接的原因分析

    Serv-U是当前主流的FTP服务器软件之一,被被广泛运用的FTP服务器端软件.Serv-U服务具有设定多个FTP服务器.限定登录用户的权限.登录主目录及空间大小等. 目前,在使用RAKsmart W ...

  9. 服务器不响应tcp,一直连接不上TCP服务器,服务器防火墙已经关了

    大家好,现在一直连接不上TCP服务器 代码如下: // 新增8283端口,开启tcp协议 $gateway_tcp = new Gateway("tcp://0.0.0.0:8283&quo ...

  10. Linux tcp同时多个连接,Linux下网络编程(2)——TCP多连接,1个server,多个client...

    1. 前言 本次使用TCP连接,1个server,多个client. server和多个client之间,可以互相发送消息. 2. 代码 tcp_sever_fork.cpp  如下: #includ ...

最新文章

  1. 如何在域控制器上安装asp.net?
  2. 《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)
  3. RuntimeError Assertion cur_target = 0 cur_target n_classes failed
  4. Direct3D学习_绘制流水线
  5. Outlets 和Referencing Outlets的区别
  6. Windows Mobile下使用CppUnitLite输出测试结果
  7. 监控系统几种常见的光端机传输方案拓扑图
  8. CSS布局奇淫技巧之--各种居中
  9. Leetcode--1019. 链表中的下一个更大节点(java)
  10. gdb core 调试(ZZ)
  11. python flask的request模块以及在flask编程中遇到的坑
  12. 工作分析文献综述_学术知识| 如何撰写文献综述
  13. UNIX操作系统发展史简介
  14. H5 微信分享显示标题和图标
  15. vscode创建工作区及生成html模板
  16. xposed模拟器安装
  17. Java开源模板引擎
  18. 华为eNSP 配置DHCP自动分配IP地址
  19. 二、操作系统基本原理
  20. 美国大学排名之本科中最用功的学校top15

热门文章

  1. 全职高手24职业及技能(Full time master)
  2. C语言实现部标JTT808
  3. 内存超频时序怎么调_超频讲解:内存时序设置一
  4. JS 实现复制粘贴功能
  5. “白嫖”时代进入最后倒计时,网盘行业到底是怎么由盛及衰的?
  6. 后基因组行为遗传学:从革命到常规(上)
  7. (全网最全)律师如何有效获得案源?新律师开拓案源的方法有哪些?
  8. 氨基化氧化石墨烯PEG修饰/氨基化氧化石墨烯PEI修饰/Nanoinnova还原石墨烯(各种解说)
  9. 选中Excel单元格自动导入多个Excel worksheets
  10. 怎样设计访谈提纲_如何设计调查问卷与访谈提纲要点分析.ppt