IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> IO多路转接模型 -> 正文阅读

[网络协议]IO多路转接模型

网络层:IP协议,地址管理,路由选择
路由选择:路由器根据每一条流经路由器的数据中的目标主机地址进行路径选择
链路层:
ETH协议:6字节目标-源端mac地址,2字节的上层协议,4字节帧尾
Mac地址:网卡的物理硬件地址
ARP协议:介于网络层与链路层之间的协议-通过IP地址获取MAC地址
ARP欺骗攻击:伪造ip进行ARP响应—防火墙白名单
MTU:链路层限制的数据帧大小–最大传输单元—以太网默认1500字节
Mtu对tcp影响:tcp传输会协商mss,而mss=mtu-40,往后通信每次都是从发送缓冲区取出不大于mss大小的数据进行传输,基于这个操作,tcp也会被认为在传输层会自动进行数据分段
Mtu对udp影响:udp不会协商mss,只要数据大小小于64k-28都可以进行传输,然而这个数据大小有可能会大于mtu,因此会在网络层进行数据分片,分片了则会在对端进行分片重组,然而一旦传输中任意一个分片出问题,整个报文会被丢弃 分片越多,出问题概率越高
因此在udp通信时,最好程序员在应用层就计算好每个分包大小,避免分片
其他典型协议:
DNS:域名系统
作用:对域名进行解析,通过域名获取到服务器IP地址
域名:服务器的别名,通过比较容易记忆的字符串组成
域名服务器等级:根->顶级->二级
域名等级:顶级(使用性质,地址划分),二级
域名解析流程:
1. 浏览器缓存->2.本机hosts文件->3.本地域名服务器
4.根域名服务器->5.顶级域名服务器->…
ICMP/ping,NAT/NAPT,代理服务
高级IO:四种典型IO,多路转接模型
四种典型IO:
阻塞IO,非阻塞IO,信号驱动IO,异步IO
阻塞:为了完成一个功能,发起调用,若不具备完成条件,则调用一直等待
非阻塞:发起调用,若不具备完成条件,则调用立即报错返回
阻塞与非阻塞:通常用于讨论接口特性,区别在于发起调用后是否会立即返回
同步:功能自己完成,一个完成之后才能完成下一个
异步:功能别人完成,功能完成流程并非按发起时序完成
异步阻塞与异步非阻塞:区别在于进程是否等待系统完成任务。
同步与异步:通常用于讨论任务完成流程,区别在于功能是否由自身完成
同步流程清晰简单,但是效率相较于异步较低
异步对资源利用率更高,效率更高,但是流程较为复杂;
IO多路转接模型:
作用:IO多路转接模型,就是针对大量描述符进行IO就绪事件监控,让进程能避免对没有就绪的描述符进行操作,提高IO效率,避免对没有就绪的描述符进行操作而导致的阻塞。
实现:selet poll epoll
Select模型:
流程:1.定义指定事件的描述符集合,添加要监控的描述符到其中
2.将集合拷贝到内核进行IO就绪事件监控
监控调用返回前,将集合中没有就绪的描述符移除
3.进程中判断哪个描述符还在集合中,确定哪个描述符就绪了什么事件
接口:

  1. fd_set set; void FD_ZERO(fd_set *set);清空集合
    void FD_SET(int fd,fd_set *set);–添加描述符
    2. int select(int nfds,fd_set *rfds,fd_set *wfds,fd_set *efds,timeval *t)
    3. Int FD_ISSET(int fd,fd_set *set);
    4. Void FD_CLR(int fd,fd_set *set);
    多路转接模型是针对一个或多个描述符进行IO就绪事件监控的功能
    通常应用于tcp服务器端,针对大量套接字描述符进行监控 让程序能够仅仅针对就绪的描述符进行操作,进而提高处理效率 而udp服务端大多针对单套接字进行操作,大多数情况也会用到多路转接模型,因为多路转接模型不但可以进行IO就绪事件监控,还可以进行超时控制
    Select 特性总结:
    优点:跨平台移植性较好
    缺点:
  2. select所能监控的描述符有数量上限,上限取决于宏_FD_SETSIZE
  3. select每次进行监控都要重新向集合中添加描述符(每次都会修改)
  4. select监控原理是在内核中进行轮训遍历
  5. 将集合中描述符遍历一遍看看有没有就绪的
  6. 有就直接移除未就绪返回,没有则挂起等待
  7. 有描述符就绪/超时后被唤醒,重新遍历一遍移除未就绪后返回
    4.select返回的是就绪集合,需要用户判断哪个描述符还在哪个集合中才能确定哪个描述符就绪了哪个事件
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 11:41:25  更:2021-07-10 11:42:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:35:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码