
计算机网络
文章平均质量分 83
chayangdz
这个作者很懒,什么都没留下…
展开
-
select、poll和epoll
介绍:在说select、poll和epoll之前,先说下IO多路复用机制,简单来说,就是服务端通过一个线程(或者进程)来维护多个Socket连接,多个连接共用一个阻塞对象,线程只需要在这个阻塞对象上等待,无需再轮询多个连接。当任何一个连接上有数据可以处理时,操作系统就会通知进程,进程就阻塞的状态返回,开始进行业务处理。select、poll和epoll都是IO多路复用机制的常见方式,通过这种方式,可以监控多个文件描述符,一旦某个描述符就绪,操作系统就能够通知进程进行相应的读写操作。select、pol原创 2021-09-29 18:55:13 · 280 阅读 · 0 评论 -
Reactor模式
背景:传统的服务端体系结构,每当有请求时,都会创建一个线程(进程)来处理请求,请求处理完之后就销毁线程,这样的成本是比较高的,频繁的创建和销毁线程,也会造成资源的浪费。所以可以考虑采用线程池的方式,免去创建和销毁线程的成本,提高服务端的效率。但是引入线程池后,还有另外一个问题,一般情况下,由于高并发场景,而且IO比较耗时,所以请求的数量是超过线程池中线程的数量的,一个线程会处理多个连接。如果处理一个连接的过程中,只能阻塞处理的话,那性能还是很差,所以要设计成非阻塞的。非阻塞也有不同的方式,比如采用轮询,但原创 2021-09-26 10:02:36 · 301 阅读 · 0 评论 -
五种IO通信模型
相关概念:在说五种IO通信模型之前,先说下几个容易混淆的概念,同步和异步,阻塞和非阻塞。同步和异步:主要是看调用方获取结果是主动发起的,还是被动通知的。主动发起的就是同步,被动通知的就是异步。阻塞和非阻塞:调用方调用某个方法后,在获取到返回结果之前。如果当前的线程处于挂起状态,什么都不能干,则是阻塞。如果当前线程是运行状态,可以处理其他任务,则是非阻塞。举个例子,线程A调用了接口B后,一直等待接口的返回结果,则属于同步阻塞,如果线程A可以处理其它任务,但是需要不断轮询查看接口的返回结果,则属于同原创 2021-09-25 15:28:02 · 1327 阅读 · 0 评论 -
TCP三次握手和四次挥手
TCP是全双工通信,能够双向同时发送字节流。TCP是面向连接的,所以在数据传输之前需要先建立连接,数据传输之后断开连接。建立连接也叫做三次握手,断开连接也叫做四次挥手。三次握手:第一步:A向B发起连接请求,SYN=1,seq=x,这时,A这个客户端进程进入SYN-SENT状态。表示同步已发送。第二步:B收到连接请求,需要向A发送确认。SYN和ACK都是1,确认号ack=x+1,代表对A发送的seq=x的确认。并且自己也会初始化一个序号seq=y。这时,服务端B进入SYN-RCVD状态,表示同步收原创 2021-09-15 10:03:33 · 180 阅读 · 0 评论 -
网络分层基础知识
不同的网络体系结构OSI七层的体系结构最完善,但是既复杂又不实用,TCP/IP体系结构应用的最广泛。但是学习网络的时候,为了学习方便,一般综合OSI和TCP/IP的优点,抽象为5层。物理层:传输单位是比特,也就是0和1的电信号。传输0和1时利用的物理媒体就是光缆,双绞线,同轴电缆等。但是光缆这些物理媒体不属于物理层,而是在物理层协议下面。数据链路层:传输单位是帧,也就是规定了多少个0和1是一组。目前占据主导地位的是以太网协议,以太网规定,每个帧分成2部分,首部和数据。首部固定18字节,数据最短4原创 2021-09-15 09:59:41 · 417 阅读 · 0 评论 -
什么是顶级域名,二级域名和三级域名
最近用到了顶级域名,二级域名和三级域名的知识,但是在自己的知识体系中出现了困扰,对于baidu.com属于几级域名,出现了不确定的答案。网上搜索的很多帖子,大部分帖子给的答案是这样的:baidu.com是顶级, pan.baidu.com是二级。但是经过我查询了计算机网络的教材,发现网上查到的大部分文章给的这个结论都是错误的,所以专门开一篇帖子记录下。我查询了《计算机网络(第7版)-谢希仁》的教...原创 2019-07-09 11:32:42 · 12795 阅读 · 4 评论