💻 Computer Basics
1、计算机网络
1.1 传输层:TCP和UDP
1.1.1 三次握手
1.1.2 四次挥手
1.1.3 流量控制
1.1.4 拥塞控制
1.1.5 TCP和UDP的区别
1.1.6 TCP如何保证传输的可靠性
1.1.7 TCP长连接和短连接
1.1.8 应用层提高UDP协议可靠性的方法
1.1.9 UDP和IP的首部结构
1.2 应用层:HTTP和HTTPS
1.2.1 HTTP和HTTPS的区别
1.2.2 GET和POST的区别
1.2.3 Session与Cookie的区别
1.2.4 从输入网址到获得页面的过程(越详细越好)
1.2.5 HTTP请求有哪些常见的状态码
1.2.6 什么是RIP,算法是什么
1.2.7 HTTP1.1和HTTP2.0的主要区别
1.2.8 DNS
1.2.9 HTTPS加密和认证过程
1.2.10 常见网络攻击
1.2.11 REST
1.3 计算机网络体系结构
1.4 网络层协议
1.4.1 IP地址的分类
1.4.2 划分子网
1.4.3 什么是ARP协议
1.4.4 NAT协议
2、操作系统
2.1 进程和线程
2.1.1 进程和线程的区别
2.1.2 进程间通信方式
2.1.3 同步原语
2.1.4 进程状态
2.1.5 进程调度策略
2.1.6 僵尸进程和孤儿进程
2.1.7 协程
2.1.8 异常控制流
2.1.9 IO多路复用
2.1.10 用户态和内核态
2.2 死锁
2.3 内存管理
2.3.1 分段与分页
2.3.2 虚拟内存
2.3.3 页面置换算法
2.3.4 局部性原理
2.3.5 缓冲区溢出
2.4 磁盘调度
-
+
游客
注册
登录
TCP长连接和短连接
TCP的具体介绍可参考[1.1.1 三次握手](https://notebook.ricear.com/project-26/doc-301)和[1.1.2 四次挥手](https://notebook.ricear.com/project-26/doc-302),下面主要介绍TCP的短连接、长连接及其二者的优缺点。 ## 1 短连接 ### 1.1 含义 1. 短连接是指**通信双方有数据交互时**,**就建立TCP连接**,**数据发送完成后**,**则断开此TCP连接**。 2. 短连接的模式是$连接 \rightarrow 数据传输 \rightarrow 关闭连接...建立连接 \rightarrow 数据传输 \rightarrow 关闭连接$。 ### 1.2 优缺点 #### 1.2.1 优点 1. **管理起来比较简单**,**存在的连接都是有用的连接**,**不需要额外的控制手段**。 #### 1.2.2 缺点 1. **如果客户请求频繁**,**将在TCP的建立和关闭操作上浪费时间和带宽**。 ### 1.3 适用场景 1. 适用于像**WEB网站的HTTP服务**,因为**长连接对于服务端来说会耗费一定的资源**,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接**用短连接会更省一些资源**,**如果用长连接**,**而且同时有成千上万的用户**,**如果每个用户都占用一个连接的话**,**那可想而知**,所以**并发量大**,但**每个用户无需频繁操作情况下使用短连接比较好**。 ## 2 长连接 ### 2.1 含义 1. 长连接是指**在一个TCP连接上可以连续发送多个数据包**。 2. **在TCP连接保持期间**,**如果没有数据包发送**,**需要双方发检测包以维持此连接**,**一般需要自己做在线维持**。 3. 如果**一个给定的连接在两小时内没有任何动作**,则**服务器就向客户端发送一个探测报文段**,**客户端必须处于以下4个状态之一**: 1. **客户端依然正常运行**,**并从服务器可达**,**客户端的TCP响应正常**,**而服务器也知道对方是正常的**,**服务器在两小时后将保活定时器复位**。 2. **客户端已经崩溃**,**并且关闭或者正在重新启动**,**在任何一种情况下**,**客户端的TCP都没有响应**,**服务器将不能收到对探测的响应**,**并在75秒后超时**,**服务器总共发送10个这样的探测**,**每个间隔75秒**,**如果服务器没有收到一个响应**,**他就认为客户端已经关闭并终止连接**。 3. **客户端崩溃并已经重新启动**,**服务器将收到一个对其保活探测的响应**,**这个响应是一个复位**,**使得服务器终止这个连接**。 4. **客户端正常运行**,**但是服务器不可达**,**这种情况与2类似**,**TCP能发现的就是没有收到探查的响应**。 ### 2.2 优缺点 #### 2.2.1 优点 1. **长连接可以省去较多的TCP建立和关闭的操作**,**减少浪费**,**节约时间**。 #### 2.2.2 缺点 1. **存活功能的探测周期长**,**而且只是探测TCP连接的存活**,**遇到恶意的连接时**,**保活功能就不够使了**。 2. 在长连接的应用场景下,**客户端一般不会主动关闭他们的连接**,**客户端和服务端之间的连接如果一直不关闭的话**,**会存在一个问题**,**随着客户端连接越来越多**,**服务器早晚有扛不住的时候**,**这时候服务器就需要采取一些策略**,如**关闭一些长时间没有读写事件发生的连接**,这样**可以避免一些恶意连接导致服务器受损**,**如果条件再允许的话**,**可以以客户端为颗粒度**,**限制每个客户端的最大连接数**,**这样就可以避免某个存在问题的客户端连累后端服务**。 ### 2.3 适用场景 1. **长连接多用于操作频繁**,**点对点的通讯**,**而且连接数不能太多的情况**,**这样每个操作完后都不断开**,**后面处理时直接发送数据包就可以了**,**不用再建立TCP连接**。 2. 例如,**数据库的连接使用长连接**,**如果用短连接的话**,**频繁的通信会造成 `socket`错误**,**而且频繁的 `socket`创建也是对资源的浪费**。 ### 2.4 如何检测长连接是否中断 1. **在应用层使用心跳来主动检测**。 2. **改变 `socket`的 `keepalive`选项**,**以使 `socket`检测连接是否中断的时间间隔更小**,**以满足我们的实时性需求**。 ## 参考文献 1. [TCP长连接和短连接的区别](https://mp.weixin.qq.com/s?src=11×tamp=1626918769&ver=3205&signature=J6F30sC9elDfv9QwPZLqAVR-8c2mPWYsl6IiSD3tXHt*T69PWghEWazCftOmB98f0kZJgu5mRpdeVPYhjZdLLpLau-AoC2gIo7UfvOGktto-GgSvFHkoxXDP*jYg0jgn&new=1)。 2. [一文搞懂 HTTP、TCP 的长连接和短连接](https://mp.weixin.qq.com/s?src=11×tamp=1626918769&ver=3205&signature=xRqpLamHdrmDm-veGDbbo8bV0WrhU16dupzbCO49bgfSwQfHoWe3hxAVdl7vaiV-5rART6EU8N7Dpj15JKj0Hkk59jvwZjm6*pQaWrr3zShsNgakUlb7n8mQcTKP6lfY&new=1)。
ricear
2021年7月22日 10:56
©
BY-NC-ND(4.0)
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码