- 博客(20)
- 资源 (20)
- 收藏
- 关注
原创 第十六章PHY -基于Linux3.10
16.1 PHY 本章和OSI模型中的物理层和数据链路层关系密切。在嵌入式SOC上,通常集成有ARM核和MAC控制器,以及增加数据传输带宽的MAC专用DMA,对这种形式的SOC通常使用外接物理PHY设备的方法,外接的PHY芯片如RTL8201F、88E1111、88E6096等,集成型以太网控制器集成了MAC和PHY,如DM9000、RTL8139CP等,它们常用于没有MAC控制器的SOC
2015-03-27 21:36:44 7718
原创 第十五章 提升网络性能技术--基于Linux3.10
本章的这些特性在于提高网络性能,这些技术中的一些需要NICs的支持,一些特性是软件实现的。这些特性在服务器上使用较为流行,但是对于嵌入式领域,尤其是视频等网络等带宽需求较大的应用场景,这些特性也可能被使用。以太网数据包长是1500个字节,如果要传输大量的数据,TCP层就需要将这些数据分成若干小片MSS(Maximum Segment Size),然后再将这些小片发送出去。
2015-03-27 21:23:21 2313
原创 第十四章 netlink机制--基于Linux3.10
Netlink基于网络的消息机制,能够让用户和内核空间进行通信,12.3节提到的ifconfig是使用ioctl方法和内核通信的,而ip命令则是使用netlink和内核通信的。该机制初衷是为网络服务的,但是现在起应用范围已经大大扩展。14.1 netlink支持的通信用户空代码使用实例,发送消息时内核使用同一套代码,也就是说调用这套消息机制代码除了可以发送netlink消息还可以发送其
2015-03-27 21:16:15 2651
原创 第十三章 网络命名空间(内核源码实现)--基于Linux3.10
有两篇翻译博文《Lxc之二—网络设置》和《linuxnamespace-之使用》;LXC文章中关于网络的设置是从用户空间配置的,从该文章可以知道网络命名空间的一些基本概念和其提供的功能。而《linuxnamespace-之使用》包括了网络命名空间管理、配置以及使用,这比LXC译文更接近网络命名空间的实现,但是都是基于用户空间的,这章是关于Linux网络命名空间内核源码。在Linux中,每一个网络空
2015-03-27 21:10:49 3296
原创 第十二章 trie路由--基于Linux3.10
路由表的构建途径: 通过用户命令[route(ioctl) 、ip route(netlink)]静态配置通过路由协议动态配置,这些协议是BGP(Border Gateway Protocol)、EGP(Exterior Gateway Protocol)以及OSPF(Open Shortest Path First)这一章的内容基于route方法,其它的配置路由的方法不在这章中,但是
2015-03-26 22:50:37 9898 1
原创 第十一章 Linux包过滤防火墙-netfilter--基于Linux3.10
11.1 netfilter框架netfilter从Linux2.4引入linux内核,是现在3.10版本的防火墙框架,该框架可实现数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(NetworkAddressTranslation,NAT),以及基于用户及媒体访问控制(MediaAccess Control,MAC)地址的过滤和基于状态的过滤、包速率限制等netfilte
2015-03-25 22:56:49 5041
原创 第十章 网络工具--基于Linux3.10
在测试io设备时,常常会用到iostat、iotop工具,在查看内存时常常用到vmstat、free、slabtop工具,在查看调度器时,常常使用mpstat、top以及ps工具。这里来说说网络相关的工具,有性能分析、网络管理、状态查看类工具。下面的一张图显示了网络相关工具和其作用的层次关系。图10.1 网络工具由上至下的来看该这些工具。 ssss是iproute2包提
2015-03-25 22:43:57 1256
原创 第九章 tcp拥塞控制--基于Linux3.10
Linux提供丰富的拥塞控制算法,这些算法包括Vegas、Reno、HSCTP(High Speed TCP)、Westwood、BIC-TCP、CUBIC、STCP(Scalable TCP)、Hybla以及Veno等,对于Linux3.10而言,这些算法在添加到内核时会被注册到同一个链表。9.1 CUBIC拥塞控制tcp_sock函数使用到的控制拥塞变量如下:snd_cwnd:
2015-03-25 22:30:55 2994
原创 第八章 tcp接(传输层)--基于Linux 3.10
在IP层的接收,提到其调用的函数是inttcp_v4_rcv(struct sk_buff *skb),其参数是包含数据信息的sk_buff。这个函数定义于:net/ipv4/tcp_ipv4.c 1961 int tcp_v4_rcv(struct sk_buff *skb)1962 {1963 const struct iphdr *iph; //ip层头标识
2015-03-25 22:26:22 1288
原创 第七章 tcp发送(传输层)--基于Linux3.10
由第五章可知,sock_recvmsg和tcp_sendmsg用于tcp层和应用层的接口,由第四章可知,tcp_v4_rcv和tcp_tarnsmit_skb是传输层和网络层之间的接口,现在来看看tcp_sendmsg是如何到tcp_tarnsmit_skb,tcp_v4_rcv又是如何到sock_recvmsg的。图7.1 套接字发送sys_send的参数意义如下,fd是套接
2015-03-24 22:57:18 1672
原创 第六章 应用层(网络)--基于Linux3.10
前述文章代码由下至上分析,这次从上至下的分析,从应用层开始,看看应用层(用户空间)是如何将数据传递给内核的。在应用程序编程时,常常可以看见如下接口:sockfd = socket(AF_INET, SOCK_STREAM, 0) connect(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr) recv(soc
2015-03-24 22:48:48 982
原创 第五章 传输层(tcp)到网络层(ip)--基于Linux3.10
根据数据的流向跟踪代码,由于数据发送是从tcp层到网络层再到网络到主机层,所以先来看tcp层向ip层发送数据的函数。tcp的发送函数和接收函数一样位于net/ipv4/文件夹,文件名是tcp_output.c文件,传输层和网络层联系的函数是tcp_transmit_skb(...):在进入该函数时,先看该函数用到的一个重要的数据结构,其定义于net/dccp/ipv4.c文件,919行是发
2015-03-24 22:30:15 2302
原创 第四章 网络层接收数据包流程--基于Linux3.10
4.1 主机到网络层的过渡从netif_receive_skb(struct sk_buff *skb)函数开始,网卡收到数据包后产生中断通知CPU有数据到达,在中断服务函数中触发接收软中断,等待内核在适当的时间调度NAPI方式的接收函数完成数据的接收,并非所有网卡或者MAC控制器都是支持NAPI方法(需要硬件能支持)的,NAPI服务函数最重要的工作就是调用netif_receive_skb将
2015-03-23 22:45:58 4712 1
原创 第三章 套接字相关数据结构--基于Linux3.10
本章是对socket通信过程中使用到的比较重要的据结构罗列和意义的阐述,在阅读其它层的代码前,先来看几个重要的数据结构,这几个数据结构贯串四层模型。 3.1 socket对应的内核结构体在用户空间使用socket()函数创建一个套接字。对应的系统调用就是:asmlinkagelong sys_socketcall(int call, unsigned long __user *ar
2015-03-23 22:38:36 1543
原创 第二章 主机到网络层(网卡)--基于Linux3.10
TCP/IP协议栈模型网络协议栈常用OSI七层模型,实际上Linux网络协议栈使用的却是四层模型,图2.1展示了OSI七层和四层模型它们之间各层对应关系。图2.1的最左侧一列是数据在协议栈上各层的称谓。frame位于主机到网络层(Layer1),packet位于Layer2,segment位于Layer3,data或message位于Layer4;当然对于OSI七层模型而言,由下至上依
2015-03-20 21:59:11 2355
原创 第一章 网络子系统初始化--基于Linux3.10
网络初始化函数调用顺序《Linux系统启动那些事—基于Linux 3.10内核》提到系统启动时会调用一系列的初始化函数,初始化函数使用include/init.h中的宏定义,这些宏的顺序显示了初始化函数调用的顺序。即由pure_initcall函数定义的函数先于core_initcall定义的函数,依此类推。#define pure_initcall(fn) __define_init
2015-03-20 21:43:12 4955 1
原创 第零章 内核网络相关配置选项--基于Linux 3.10
Kconfig选项packet protocol 被直接和网络设备通信的应用程序使用,其没有使用内核的其它协议,像tcpdump支持需要使能该选项,af_packet。 Packet socket 支持PF_PACKET套接字,ss之类工具监控接口(eth0...)会使用这类套接字 Packet:sockets monitoring interf
2015-03-20 21:34:24 2466
原创 i2c驱动-建立于字符驱动之上
字符设备的驱动简单模板如下:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #
2015-03-13 23:08:27 1609
原创 网络摄像机架构
网络摄像机 IPC现今的手机、运动摄像机以及安防监控领域的摄像机,它们通过光学传感器获取外部图像,经过处理后将视频信号存储或者传输到远端。本文主要针对网络摄像机。硬件层 硬件层随着应用场景的的不同硬件方案上差别很大,手机的芯片解决方案主要偏向于射频和基带信号处理,网上有很多联发科手机芯片解决方案,而安防领域则偏重于图像质量,更偏重于高清、远距离监控等;安防领域视频芯片解决目
2015-03-10 22:58:48 4844 4
翻译 IPv6
1、IPv6提供比IPv4更大的地址空间 128bit --- 32bit2、提供更好的端到端的连接,Peer-to-peer应用需要end-to-end连接。 Ipv6有巨大的地址空间,不需要像IPv4那样使用NAT3、IPv6具有更好的设备自动配置功能。IPv4使用DHCP,ipv6使用plug-and-play自动配置,此外提供类似DHCP的DHCPv6。4、IPv6简化了头结构
2015-03-02 23:08:35 2077
深度学习 模型调优 keras mnist
2022-06-06
bluetooth BLE server
2016-12-12
vim 技巧和插件
2015-05-08
linux tcp/ip协议栈
2015-04-22
Linux系统启动那些事—基于Linux 3.10内核
2014-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人