
003-计算机网络
文章平均质量分 84
计算机网络
牛不才
c/c++ linux 后端 架构 搜索引擎
展开
-
长链接、短链接与连接池
在计算机网络中,“长连接”、"短连接"和"连接池"是常用的概念,尤其在客户端与服务器之间进行通信时。原创 2024-04-21 10:29:02 · 599 阅读 · 0 评论 -
select和epoll的实现机制
1. TCP三次握手和监听套接字的两个队列1. 未完成队列(SYN_RCVD状态)当第一次握手之后,在未完成队列上建立条目2. 已完成队列(ESTABLISHED状态)三次握手成功之后,该条目转移到已完成队列,accept能够返回。int listen(int sockfd, int backlog);其中backlog这个参数大概为这两个队列总和的最大值,最大值可能是1.5*backlog,这是一个模糊因子。每次握手之间的时间RTT通常为187ms左右。accept由.原创 2021-04-18 23:10:31 · 747 阅读 · 0 评论 -
网络IO模型
1. 什么是网络IO网络IO和磁盘IO一样,也是IO的一种。磁盘IO是磁盘-->内核-->应用程序,同样网络IO是网卡-->内核-->应用程序。简单理解,就是操作系统收到网卡的数据,然后缓存到一个缓冲区buffer中,然后应用程序调用系统函数,从buffer中取数据。访问IO的方式,也就是通常所说的IO模型,大致有五种,分别是阻塞IO、非阻塞IO、多路复用IO(selecet\poll\epoll等)、信号驱动IO以及异步IO。《Unix网络编程》一书中都有提及,本.原创 2021-04-18 07:05:05 · 184 阅读 · 0 评论 -
io多路复用 select/poll/epoll 简介
一个服务器,有多个客户端访问。可以每个请求都开启一个线程处理。缺点:多线程的弊端,CPU需要不停的切换上下文,过程繁琐,消耗资源多单线程IO多路复用在linux中每一个网络连接都可以看成是一个文件描述符,一切皆文件。1.selectfdset是一个bitmap,每一位标志了对应fd是否有数据变化。select监听fdset,当有数据变化时,返回fdset。四个常用宏:FD_ZERO(&set);//将套接字集合清空FD_SET(s, &set);//将给定的套接字添加到原创 2021-04-15 09:34:12 · 120 阅读 · 0 评论 -
服务器出现大量TIME_WAIT状态怎么解决
1. TIME_WAIT产生的原因1.1 四次挥手假设主动关闭连接的一方为A,被动关闭连接的一方为BA调用close();协议层发送FIN包B收到FIN包后,回复ACK,进入CLOSE_WAIT状态,A等待对方关闭,进入FIN_WAIT_2状态,此时,A会等待B的应用程序调用close操作B在完成所有数据发送后,调用close()操作;此时,协议层会发送FIN包给A,然后等待对方的ACK,进入LAST_ACK状态;A收到FIN包,回复ACK,进入TIME_WAIT状态;B收到ACK后,进入原创 2021-04-10 18:51:03 · 5017 阅读 · 0 评论 -
https
1. 概述HTTPS还是由HTTP进行通信,不过使用了SSL/TLS 来加密数据。所以它可以提供对网站服务器的身份认证,保护交换数据的隐私与完整性。HTTP默认端口是80端口,HTTPS默认工作的端口是443。工作流程:TCP三次握手建立连接客户端验证服务端数字证书协商对称加密算法,hash算法SSL安全加密隧道协商完成数据使用加密方式参数,用协商好的加密算法和密钥加密,保证数据安全;用hash算法保证数据一致,不被篡改2. HTTP的优缺点:明文传输,安全性差。HTTP响应速度原创 2021-03-25 18:47:23 · 245 阅读 · 0 评论 -
RPC
RPC(Remote Procedure Call),远程过程调用。通俗的讲,就是本地的应用调用远程服务的方法。从这个广义的角度讲restful也属于一种rpc,但通俗的来它们是不同的实现。我们在选择技术方案的时候,可以根据不同的场景做出选择。1. Restful .Pk. RPCRestful的优势:可读性,一般时json格式。基于http,可以获得防火墙的支持,比如屏蔽某些访问。这两点保证了它能供轻松的支持跨语言的通信。Restful的劣势:成也HTTP,败也HTTP。REST中有效信息占比少原创 2021-03-20 15:03:34 · 150 阅读 · 0 评论 -
HDFS分布式文件系统简介
分布式文件系统(Distributed File System,DFS),通过网络连接大量主机,将不同的磁盘、不同逻辑分区的数据组织在一起,提供海里的数据存储, 一般是PB级别(1PB=1024TB,1TB=1024GB),这是单机存储所无法比拟的。Google File System 是谷歌三大论文之一,而HDFS(Hadoop Distributed File System)是它的一种重要实现。另外一篇论文BigTable 则为这个文件系统提供了搜索支撑。谷歌确实是很牛的一家公司。G..原创 2021-01-20 20:48:39 · 244 阅读 · 0 评论 -
cpu亲和性
1. 概述CPU亲和性,是指进程在指定的CPU长时间运行,而尽量不向其他CPU迁移。在多核CPU的机器上,每个CPU都有自己的缓存,如果进程不显式的绑定CPU,那么有可能在操作系统的调度下,在不同的CPU之间切换,那么原先CPU上的缓存数据就没什么用了,新CPU上的缓存又没有之前的数据,这就造成了缓存命中率降低。如果设置了CPU亲和性,一个进程绑定了CPU之后,那么缓存的命中率就能保持在一个较高的水平,从而提高程序性能,这就是为什么要设置CPU亲和性的原因。另一个好处是提高特定进程调度的优先级,比如原创 2021-01-14 18:31:46 · 3495 阅读 · 2 评论 -
linux常见的性能分析工具和方法
查看系统负载 uptime[root@localhost ~]# uptime 10:18:27 up 6 days, 17:24, 3 users, load average: 0.00, 0.01, 0.05当前时间、系统已经运行了多长时间、有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。平均负载的最佳值是1,这意味着每个进程都可以立即执行不会错过CPU周期。单核CPU,1-2是正常的,多核CPU,核心数为n,那么n-2n之间也是正常的。free 查看空闲内存和已使.原创 2021-01-11 21:52:58 · 359 阅读 · 0 评论 -
TCP如何进行拥塞控制
拥塞控制和流量控制不一样,后者是端对端的问题,它则是一个全局的问题,涉及主机,路由器等等通信设备,还有些和降低传输性能有关的问题。主要涉及三个算法慢开始算法如图所示,拥塞窗口cwnd在最开始时,值为1,然后按照*2翻倍的形式增长直到这个值大于等于 慢开始门限之后,从这个门限16开始,以+1的形式增长直到发生超时,那么cwnd变为1,再按照*2翻倍的形式增长但是这次慢开始门限变了...原创 2020-03-27 12:12:39 · 1272 阅读 · 0 评论 -
TCP如何进行流量控制
TCP中的流量控制和拥塞控制不同,它只解决端到端之间的问题。往往是要通过降低发送端发送数据的速率,以便接收端能够处理,而不造成拥塞。在TCP的首部,有一个标识窗口大小的16位字段,这个字段越大,说明滑动窗口(缓冲区越大),网络的吞吐量也就越大。接收端在收到ACK请求之后,也会把自己的窗口大小填进去,回应发送端,两端取一个最小的窗口尺寸进行数据发送。如果,接收端这边网络拥堵,状况不佳,那么这个窗...原创 2020-03-27 11:48:37 · 4173 阅读 · 0 评论 -
TCP如何保证可靠性
TCP是基于IP协议的传输层协议,但是IP协议本身是不可靠的,那么就得从TCP上做文章。1.校验和 保证传输数据正确这个校验和和UDP中的校验和基本一致,伪首部+TCP首部+数据 一起计算出校验和,一个16位的整数伪首部组成如下:源IP地址(32位)| 目的IP地址(32位)|填充0(8位)|协议号(8位)|UDP包长度(16位)那么为什么要把这个伪首部加进来呢?TCP/IP通信中有...原创 2020-03-27 11:31:38 · 436 阅读 · 0 评论 -
TCP首部格式
源端口号(16位) 目 的 端 口 号(16位) 序列号(32位) 确认应答号(32位) 偏移 ...原创 2020-03-26 14:30:11 · 459 阅读 · 0 评论 -
UDP首部格式
TCP和UDP首部格式UDP首部格式 源端口号 目标端口号 包长度 校验和 数据部分 源端口号表示发送端端口号,长度16位,可选项,如果不需要返回数据数据,可以不设置。目标端口号表示接收端端口号,长度16位。包长度该字段保存了UDP首部+数据的...原创 2020-03-26 10:26:39 · 1718 阅读 · 0 评论