网络编程下

day1 io模型

i/o即数据的读取或写入发送

通常用户进程中的一个完整io分两个阶段
用户进程空间->内核空间
内核空间->设备空间(网卡,c磁盘)

io分为内存io,网络io,磁盘io三种

同步异步
对一个线程请求调用来讲,同步和一部的区别是否要等这个请求出最终结果
对于多个线程来讲,同步异步就是线程间的步调是否一致,是否需要协商
同步也经常在一个线程内先后两个函数的调用上
一部就是请求返回的时候一定不知道结果,还得通过其他的机制来获知结果例如主动轮询或被动通知。

阻塞与非阻塞
阻塞与非阻塞与等到消息时的状态有关
阻塞和同步是完全不同的概念,同步是对于消息的通知机制而言,阻塞是针对状态
进程五个状态 新建,运行,就绪,运行,阻塞及死亡

线程在什么状态下会进入阻塞状态

sleep函数
io上的被阻塞操作
线程试图得到一个所,但是该锁正被其他线程持有,进入阻塞状态
线程在等待某个触发条件

阻塞套接字的linux sockets api调用分为以下四种
输入
输出
接收连接 accept
外出链接 connect

五种io模型
阻塞io
非阻塞io
多路复用io
信号驱动式io
异步io

阻塞io
在这里插入图片描述
非阻塞io模型
在这里插入图片描述
多路复用io模型
在这里插入图片描述

select和之前的read,等不一样 select同时监听多个文件描述符 这里数据包没准备好,是所有的文件描述符都没有数据

信号驱动式io模型
在这里插入图片描述

异步io模型

在这里插入图片描述

总结
在这里插入图片描述

day2 io多路复用select函数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
64个比特位 文件描述符的集合
select函数用于监视文件描述符的那个集合,当有数据产生,系统会传回一个返回值 系统在进行recvfrom去读取文件
在这里插入图片描述

day 3 poll函数

在这里插入图片描述
在这里插入图片描述

day4 epoll函数族

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Linux中高级IO多路转接中select、poll和epoll的优缺点,这里主要谈select和poll的缺点以及epoll的优点。

一、select的缺点:

1、编写难度大

2、同时处理的文件描述符是有上限的

3、每次需要重新设定fd集合

4、性能会随用户的增多而效率降低

5、输入输出参数在一起

二、poll的缺点

poll是对select的一种改良,最突出的改良有两点:

1、文件描述符数量没有上限

2、将输入输出参数进行分离,不用每次设定

那么poll的缺点是:

poll中监听的文件描述符数目增多时:

1、和select一样,poll返回后,需要轮询pollfd来获取就绪的描述符

2、每次调用poll都需要大把大量客户端在一时刻可能只有很少的处于就绪状态,因此随着监视的描述符数量的增长,其效率也会线性下降。

三、epoll的优点:

1、文件描述符数目没有上限:通过epoll_ctl()来注册一个文件描述符,内核中使用红黑树的数据结构来管理所有需要监控的文件描述符。

2、基于事件就绪通知方式:一旦被监听的某个文件描述符就绪,内核会采用类似于callback的回调机制,迅速激活这个文件描述符,这样随着文件描述符数量的增加,也不会影响判定就绪的性能。

3、维护就绪队列:当文件描述符就绪,就会被放到内核中的一个就绪队列中,这样调用epoll_weit获取就绪文件描述符的时候,只要取队列中的元素即可,操作的时间复杂度恒为O(1)。

4、关于有些地方说:epoll还有内存映射机制,即内核将就绪队列通过mmap的方式映射到用户态,避免了拷贝内存这样的额外性能开销。关于这一点,我并不认为这是epoll的优点,因为他和epoll底层工作方式相悖。mmap是一种共享内存,但是我们都知道共享内存中一旦有数据,用户就能直接看到,并且使用,但是epoll_wait在取数据时传入了一块缓存区这是和贡献内存相悖的其一;其二是操作系统并不相信任何人,尤其是用户,它不会让用户直接去取内核中的数据。
————————————————
版权声明:本文为CSDN博主「jgm20475」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jgm20475/article/details/81083529

day5 套接字的属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

day6 广播与组播

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

day7 域名解析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值