
网络
文章平均质量分 80
TCP/IP协议栈
shichaog
这个作者很懒,什么都没留下…
展开
-
PHY+MAC
MDIO(Management Data Input/Output),对G比特以太网而言,串行通信总线称为管理数据输入输出 (MDIO)。该总线由IEEE通过以太网标准IEEE 802.3的若干条款加以定义。MDIO是一种简单的双线串行接口,将管理器件(如MAC控制器、微处理器)与具备管理功能的收发器(如多端口吉比特以太网收发器或 10GbE XAUI收发器)相连接,从而控制收发器并从转载 2014-08-01 19:13:18 · 1782 阅读 · 0 评论 -
第十三章 网络命名空间(内核源码实现)--基于Linux3.10
有两篇翻译博文《Lxc之二—网络设置》和《linuxnamespace-之使用》;LXC文章中关于网络的设置是从用户空间配置的,从该文章可以知道网络命名空间的一些基本概念和其提供的功能。而《linuxnamespace-之使用》包括了网络命名空间管理、配置以及使用,这比LXC译文更接近网络命名空间的实现,但是都是基于用户空间的,这章是关于Linux网络命名空间内核源码。在Linux中,每一个网络空原创 2015-03-27 21:10:49 · 3354 阅读 · 0 评论 -
第九章 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 · 3065 阅读 · 0 评论 -
第一章 网络子系统初始化--基于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 · 5087 阅读 · 1 评论 -
第十二章 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 · 10081 阅读 · 1 评论 -
第四章 网络层接收数据包流程--基于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 · 4772 阅读 · 1 评论 -
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 · 2188 阅读 · 0 评论 -
netperf网络性能检测工具-嵌入式
§ 嵌入式平台编译和安装首先环境搭建gcc 和交叉编译工具,gcc工具需要编译x86下运行的server端可执行程序netserver工具,交叉编译工具编译的是,嵌入式平台上运行的netperf可执行工具。编译工具版本:sudo apt-get install build-essential执行一键安装arm-linux-gcc-4.4.3.tar 嵌入式交叉编译工具链,原创 2014-08-28 11:03:12 · 3520 阅读 · 0 评论 -
网络运维词汇汇总
本篇之所以起该名字原创 2014-09-06 09:12:54 · 14248 阅读 · 1 评论 -
linux中platform_bus_type注册使用到的数据结构和函数
linux中platform_bus_type注册使用到的数据结构和函数 转自http://blog.chinaunix.net/uid-20620288-id-3134258.html,struct bus_type { // include/linux/device.h const char *name;转载 2014-09-10 19:05:54 · 2049 阅读 · 0 评论 -
bufferbloat--缓存过满
bufferbloatbufferbloat产生原创 2014-11-07 19:31:41 · 8631 阅读 · 0 评论 -
博通wifi驱动
很早之前自己的笔记,想想还是记录到网上吧注册7611 static int __init 7612 dhd_module_init(void) 7613 { 7614 int err; 7615 int retry = POWERUP_MAX_RETRY; 7616 7617 printk("%s: in\n", __FUNCTION__); 761原创 2016-03-26 23:58:16 · 10279 阅读 · 2 评论 -
第十六章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 · 7918 阅读 · 0 评论 -
第七章 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 · 1715 阅读 · 0 评论 -
第六章 应用层(网络)--基于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 · 1005 阅读 · 0 评论 -
第五章 传输层(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 · 2348 阅读 · 0 评论 -
PHY 驱动目录树构建
下为转 设备模型之kobject,kset及其关系 设备驱动基础0:设备模型之kobject,kset及其关系Linux2.6以后的设备驱动,都是在设备模型的基础上构建的,因此,要编写linux下的设备驱动程序,不论是usb设备,pci设备等,都需要了解设备模型。设备模型的基础结构体主要是kobject,kset这两个结构转载 2014-08-15 18:58:43 · 2856 阅读 · 0 评论 -
PHY Linux 驱动
以太网 MAC(链路层)+PHY(物理层/RTL8201F,88E1111);集成型DM9000,RTL8139CP由于网络数据传输量较大,不论是分开型还是集成型,通常会在MAC和PHY之间引入DMA,MAC和PHY之所以有分开,是因为MAC属于数字电路部分,而PHY则属于模拟部分,负责将接收到的数据传输给MAC层,MAC层将接收到的数据传输给上层协议,如IP层,IGMP层。P原创 2014-07-29 20:09:47 · 9164 阅读 · 0 评论 -
千兆网口、光口调试总结
千兆网口、光口调试总结配置6096端:工作模式的配置方式:1、 硬件配置,通过电阻上下拉确定;6096的硬件配置不可以错,其在port status寄存器状态中有相应的寄存器位体现硬件配置的工作模式。2、 软件配置,主要是配置链路层的工作模式。主要是设置PCS(Physical coding sublayer)寄存器。3、 Marvell的PHY芯片有个特性,叫P原创 2015-01-09 19:00:02 · 15056 阅读 · 1 评论 -
第十章 网络工具--基于Linux3.10
在测试io设备时,常常会用到iostat、iotop工具,在查看内存时常常用到vmstat、free、slabtop工具,在查看调度器时,常常使用mpstat、top以及ps工具。这里来说说网络相关的工具,有性能分析、网络管理、状态查看类工具。下面的一张图显示了网络相关工具和其作用的层次关系。图10.1 网络工具由上至下的来看该这些工具。 ssss是iproute2包提原创 2015-03-25 22:43:57 · 1304 阅读 · 0 评论 -
第十一章 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 · 5151 阅读 · 0 评论 -
第八章 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 · 1312 阅读 · 0 评论 -
第十四章 netlink机制--基于Linux3.10
Netlink基于网络的消息机制,能够让用户和内核空间进行通信,12.3节提到的ifconfig是使用ioctl方法和内核通信的,而ip命令则是使用netlink和内核通信的。该机制初衷是为网络服务的,但是现在起应用范围已经大大扩展。14.1 netlink支持的通信用户空代码使用实例,发送消息时内核使用同一套代码,也就是说调用这套消息机制代码除了可以发送netlink消息还可以发送其原创 2015-03-27 21:16:15 · 2718 阅读 · 0 评论 -
第十五章 提升网络性能技术--基于Linux3.10
本章的这些特性在于提高网络性能,这些技术中的一些需要NICs的支持,一些特性是软件实现的。这些特性在服务器上使用较为流行,但是对于嵌入式领域,尤其是视频等网络等带宽需求较大的应用场景,这些特性也可能被使用。以太网数据包长是1500个字节,如果要传输大量的数据,TCP层就需要将这些数据分成若干小片MSS(Maximum Segment Size),然后再将这些小片发送出去。原创 2015-03-27 21:23:21 · 2410 阅读 · 0 评论 -
第零章 内核网络相关配置选项--基于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 · 2548 阅读 · 0 评论 -
第二章 主机到网络层(网卡)--基于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 · 2402 阅读 · 0 评论 -
第三章 套接字相关数据结构--基于Linux3.10
本章是对socket通信过程中使用到的比较重要的据结构罗列和意义的阐述,在阅读其它层的代码前,先来看几个重要的数据结构,这几个数据结构贯串四层模型。 3.1 socket对应的内核结构体在用户空间使用socket()函数创建一个套接字。对应的系统调用就是:asmlinkagelong sys_socketcall(int call, unsigned long __user *ar原创 2015-03-23 22:38:36 · 1580 阅读 · 0 评论 -
ICMP redirect
这要从一个问题说起公司有一台设备,在联网并从同一个cdn节点上获取数据,发现用着用着从cdn节点上获取数据就失败了,但是这时设备在ping百度以及上其它网还是正常的,在当时这还是很令人费解的。在分析app,设备网络特性以及公司网络架构后发现了这一问题的原因是icmp redirect导致的问题。ICMP重定向消息是路由器发现主机针对某个目的ip有一个更好的路由策略,其使用ICMP re原创 2016-11-14 12:55:57 · 11608 阅读 · 2 评论