导图社区 网络
网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。 在1999年之前,人们一般认为网络的结构都是随机的。但随着Barabasi和Watts在1999年分别发现了网络的无标度和小世界特性并分别在世界著名的《科学》和《自然》杂志上发表了他们的发现之后,人们才认识到网络的复杂性。 网络会借助文字阅读、图片查看、影音播放、下载传输、游戏、聊天等软件工具从文字、图片、声音、视频等方面给人们带来极其丰富的生活和美好的享受。
这是一篇关于程序和库信息的思维导图,主要内容包括:(查看基础信息),获取ELF节的长度信息,显示可执行文件或库需要静态加载的动态库完整列表--显示加载时的依赖项,列出二进制文件的节信息,查看动态节,列出并查看段,查看重定位节,反汇编,列出库中未定义的符号,列出动态符号,列出二进制文件或库的符号表,查看节中的数据,符号的类型。
这是一篇关于设备驱动的思维导图,主要内容包括:主要功能,设备驱动模型。阐述了设备驱动的主要功能、信号定义、设备驱动模型等内容。
这是一篇关于算法的思维导图,主要内容包括:云计算,内存管理算法,分布式同步算法,避免死锁算法,进程调度算法,磁盘调度算法。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
网络
网络设备驱动
驱动体系结构
网络协议接口层
向网络协议提供统一的数据包收发接口 不论上层协议是ARP还是IP 都通过dev_queue_xmit函数发送数据 并通过netif_rx函数接收数据 这一层使得上层协议独立于具体的设备
协议栈注册
fs_initcall和subsys_initcall类似,也是初始化模块的入口 fs_initcall调用inet_init后开始网络协议栈注册 通过inet_init,将这些函数注册到了inet_protos和ptype_base数据结构中了
dev_queue_xmit发送数据
netif_rx接收数据
网络设备接口层
向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device 该结构体是设备驱动功能层中函数的容器 实际上网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构
设备驱动功能层
实现设备驱动功能的各个函数是网络接口层net_device数据结构的具体成员
初始化
硬件检测和配置 资源申请 注册网络设备
中断触发接收
产生接收中断 填sk_buff 调用netif_rx发送到协议层 完整流程: 加载网卡驱动,初始化 数据包从外部网络进入网卡 网卡(通过DMA)将包拷贝到内核内存中的ring buffer 产生硬件中断,通知系统收到了一个包 驱动调用 NAPI ,如果轮询(poll)还没有开始,就开始轮询 ksoftirqd软中断调用 NAPI 的poll函数从ring buffer收包(poll 函数是网卡驱动在初始化阶段注册的;每个cpu上都运行着一个ksoftirqd进程,在系统启动期间就注册了) ring buffer里面对应的内存区域解除映射(unmapped) 如果 packet steering 功能打开,或者网卡有多队列,网卡收到的数据包会被分发到多个cpu 数据包从队列进入协议层 协议层处理数据包 数据包从协议层进入相应 socket 的接收队列
hard_start_xmit启动发送
置发送硬件标志开始发送 发送完成产生发送中断 释放sk_buff 一般驱动发送流程 1.从上层协议传递过来的sk_buff参数获得数据包的有效数据和长度, 将有效数据放入临时缓冲区 2.对于以太网, 如果有效数据的长度小于以太网冲突检测所要求数据帧的最小长度ETH_ZLEN 则给临时缓冲区的末尾填充0 3.设置硬件的寄存器, 驱使网络设备进行数据发送操作
netif_stop_queue
当发送队列为满或因其他原因来不及发送当前上层传下来的数据包时, 则调用此函数阻止上层继续向网络设备驱动传递数据包
netif_wake_queue
当忙于发送的数据包被发送完成后, 在以TX结束的中断处理中 应该调用此函数唤醒被阻塞的上层, 以启动它继续向网络设备驱动传送数据包
网络设备与媒介层
是完成数据包发送和接收的物理实体 包括网络适配器和具体的传输媒介
OSI模型
物理层
规范了传输介质的电气与机械特性 包括发送和接收介质的数据流 载体可使用电(网线) 光(光纤) 无线 红外 激光等信号 规范内容包括:{ 电压变化 电压变化的时间 数据率 最大传输距离 连接传输介质的物理连接器 网络的拓扑与部署 }
数据链路层
负责接收并管理与数据包物理传输相关错误信息 定义并管理接收发送的数据帧中比特位的顺序 管理物理地址与数据包的同步 负责物理层的流量控制(管理发送与接收数据的时间)与错误提示 涉及的网络设备为两层交换机与网桥
介质访问控制(MAC)子层
提供对访问传输介质的控制 负责把一个共享传输介质上的数据包从一个NIC移动到另一个NIC 用物理地址MAC标识网络上特定的NIC
逻辑链路控制(LLC)子层
为数据链路层提供逻辑控制 用于实现数据链路层的同步 流量控制与错误检测 主要管理面向连接的传输
网络层
负责在结点间创建一个虚拟链路(逻辑连接) 负责路由(路由指从一个网络或子网推进数据包到另一个网络或子网)与推进数据包 还提供流量控制与差错控制功能 在这一层数据包会被顺序化 同时被赋予逻辑地址(IP地址) 涉及的网络设备为路由器和三层交换机
传输层
负责从一个结点传输数据到另一个结点 提供透明的数据传输并管理端到端的流量控制 错误检测和错误恢复 还处理域名解析
会话层
负责建立 监视与终止会话 同时给数据包添加协议头信息 指明一个消息的起点和终点 决定在一个会话中的通信是采用全双工还是半双工的通信方式
表示层
负责协议转换和网关服务操作 同时进行数据加密解密
应用层
负责应用程序与网络之间的交互
协议
IP
IP是一个非连接协议 管理寻址数据从一个点递送到另一个点 并吧大数据包分割成小的能传输的数据包 IP数据包组成-{ IP标识:试图唯一标识IP数据包 协议:描述使用IP层服务的高层协议 生存时间(TTL):数据包在通过互联网时必须具有的受限寿命 当TTL=0时 数据包被丢弃 源IP地址:源点的IP地址 数据包被创建的地方 目的IP地址:终点的IP地址 数据应该送到的地方 }
ICMP
网际控制报文协议(ICMP)用于管理网络之间在IP上出现的错误 常用的报文-{ 回送请求/回答:为诊断目的而设计 用来确定在IP级能否正常通信 终点不可达:网络不可达与端点不可达 超时:当一个数据包TTL=0时就是超时情况 }
TCP
面向连接的机制 TCP握手-{ 1.主机A先发送一个带同步序号(SYN)标识的数据包到主机B上 2.如果主机B能通信 返回SYN数据包并添加确认标识(ACK) 3.主机开始发送数据 并向主机B指明它接收到了ACK 4.通信结束时 会发送一个带结束标识(FIN)的数据包 } TCP序列-每个发送的数据包都是TCP序列的一部分 通过这些序列 能控制复杂的任务(重发 确认 排序)
UDP
面向非连接的
硬件
网卡
接收模式
广播方式
该模式下的网卡能够接收网络中的广播信息
组播方式
该模式下的网卡能够接收组播数据
直播方式
该模式下 只有目的网卡才能够接收该数据
混杂模式
该模式下的网卡能够接收一切通过它的数据 不管该数据是否传给它的
网线探针
帮助连接到网线的硬件设备
集线器
集线器是在一个共享介质上把多台主机连接起来的一个设备 主要功能是对接收到的信号进行再生整形放大 从而扩大网络传输距离 把所有结点集中在以它为中心的节点上 工作在数据链路层
交换机
交换机是把共享介质上的计算机连接到一起的设备 交换机维护着与其所连接计算机的MAC地址和其本身对应端口的一个关系表