
子类__网络篇
文章平均质量分 90
RK3399平台入门到精通系列之网络篇
内核笔记
一直从业于半导体行业,曾为Linux内核开源文档社区提交过若干文档。
主要从事Linux、Android相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,喜欢阅读内核源代码,在不断的学习和工作中深入理解内存管理,进程调度,文件系统,设备驱动等内核子系统。
展开
-
RK3399平台开发系列讲解(网络篇)7.38、网卡驱动程序数据结构
net_device结构完成并填充后,应该在其上调用register_netdev()。请记住,该函数将网络设备注册到内核,这样就可以使用它。struct net_device结构属于需要动态分配的内核数据结构,具有自己的分配函数。不使用的网络设备应该通过free_netdev()函数释放,该函数也释放为私有数据分配的内存。因此,即使分配内存,也可以从原子上下文中调用netdev_alloc_skb()。网络代码中的基本数据结构,使用此数据结构处理每个数据包的发送或接收,下面的头文件应该包含在代码中。原创 2022-10-08 21:33:30 · 1890 阅读 · 4 评论 -
RK3399平台开发系列讲解(网络篇)7.36、ARP协议与邻居子系统剖析
ARP协议 位于 TCP/IP 五层网络模型的 网络层。那么,ARP协议 的用途是什么呢?原创 2022-03-06 18:52:04 · 4619 阅读 · 7 评论 -
RK3399平台开发系列讲解(网络篇)7.37、MAC 地址详解
MAC 地址详解原创 2019-05-12 02:03:06 · 2029 阅读 · 5 评论 -
RK3399平台开发系列讲解(网络调试)7.36、如何在Linux上添加路由
如何在Linux上添加路由:route add原创 2021-10-14 20:03:15 · 2012 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络调试)7.35、如何衡量 Linux 的网络性能
哪些指标可以用来衡量 Linux 的网络性能呢?原创 2022-03-02 23:39:44 · 1904 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络调试)7.34、什么是iptables
Linux 内核提供的 Netfilter 框架,允许对网络数据包进行修改(比如 NAT)和过滤(比如防火墙)。在这个基础上,iptables、ip6tables、ebtables 等工具,又提供了更易用的命令行接口,以便系统管理员配置和管理 NAT、防火墙的规则。原创 2022-02-24 02:14:01 · 3937 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络调试)7.33、网络性能优化
平台内核版本安卓版本RK3399Linux4.4Android7.1????返回专栏总目录文章目录一、传输层优化二、网络层优化三、链路层优化沉淀、分享、成长,让自己和他人都能有所收获!????????如何从传输层、网络层以及链路层中,优化 Linux 网络性能。一、传输层优化传输层最重要的是 TCP和 UDP 协议,所以这儿的优化,其实主要就是对这两种协议的优化。我们首先来看TCP 协议的优化。TCP 提供了面向连接的可靠传输服务。要优化 TCP,我们首先要掌握原创 2022-02-22 01:01:59 · 3745 阅读 · 11 评论 -
RK3399平台开发系列讲解(网络调试)7.32、什么是网络路由?
路由分静态路由和动态路由原创 2022-02-21 23:56:13 · 1875 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络调试)7.31、TCP连接的建立和断开过程分析
Linux 内核需要去处理各种各样的网络场景,不同网络场景的处理策略也会有所不同。而 Linux 内核的默认网络配置可能未必会适用我们的场景,这就可能导致我们的业务出现一些莫名其妙的行为。原创 2022-02-18 01:08:00 · 2113 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络调试)7.30、TCP 数据包的发送过程会受什么影响?
TCP 数据包的发送过程会受什么影响?原创 2022-02-16 00:46:42 · 1872 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络调试)7.28、如何分析常见的TCP问题?
如何分析常见的TCP问题?原创 2022-02-09 23:36:36 · 3423 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络调试)7.27、如何分析TCP重传问题?
TCP 重传也是一个信号,我们通常会利用这个信号来判断系统是否稳定。原创 2022-02-08 23:52:44 · 2822 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络篇)7.26、UDP协议源码分析
UDP协议 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,位于 TCP/IP协议 模型的 传输层原创 2022-02-03 12:32:16 · 3327 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络篇)7.25、Socket接口的分层
在Linux内核中,Socket的实现分为三层,第一层是 GLIBC接口层,第二层是 BSD接口层,第三层是 具体的协议层(如Unix sokcet或者INET socket)。原创 2022-02-02 22:00:28 · 3021 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.24、IP协议源码分析
IP协议 最重要的是 IP地址原创 2022-02-02 19:01:17 · 1769 阅读 · 10 评论 -
RK3399平台开发系列讲解(网络篇)7.22、select系统调用源码分析
应用程序调用select,进入内核调用sys_select,做些简单初始化工作,接着进入core_sys_select,此函数主要工作是把描述符集合从用户空间复制到内核空间,最终进入do_select,完成其主要的功能。原创 2018-08-17 00:06:41 · 2602 阅读 · 10 评论 -
RK3399平台开发系列讲解(网络篇)7.23、设备驱动程序中poll函数实现
在设备驱动程序中实现的poll()函数,会在do_select()中被调用,而驱动中的poll()函数,需要调用poll_wait()函数,poll_wait函数本身很简单,就是去回调函数p->_qproc(),这个回调函数正是poll_initwait()函数中初始化的__pollwait();原创 2017-08-26 22:12:56 · 1277 阅读 · 10 评论 -
RK3399平台开发系列讲解(网络篇)7.21、如何提升网络数据包的接收性能
如何提升TCP网络数据包的接收性能?原创 2022-01-28 00:47:04 · 3045 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络篇)7.19、Linux网络协议栈详解
Linux 通过软中断机制调用网络协议栈代码,处理数据。 在 net_dev 模块初始化时,注册网络收发数据的软中断处理函数。原创 2022-01-26 00:45:29 · 2062 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.20、接收网络包从硬件网卡到IP层的处理(NAPI)
在Linux 内核中,每个网络设备都表示为net_device结构的一个实例。原创 2022-01-26 23:53:37 · 3480 阅读 · 7 评论 -
RK3399平台开发系列讲解(网络篇)7.18、什么是Socket套接字?
套接字接口在网络程序功能中是内核与应用层之间的接口。原创 2022-01-10 01:03:19 · 2233 阅读 · 10 评论 -
RK3399平台开发系列讲解(网络篇)7.17、Socket内核数据结构
说 TCP 的 Socket 就是一个文件流,是非常准确的。因为,Socket 在 Linux 中就是以文件的形式存在的。除此之外,还存在文件描述符。写入和读出,也是通过文件描述符。原创 2021-11-15 00:16:39 · 4478 阅读 · 13 评论 -
RK3399平台开发系列讲解(网络篇)7.16、使用socket接口进行网络通信
在传输层有两个主流的协议 TCP 和 UDP,所以我们的 socket 程序设计也是主要操作这两个协议。原创 2021-11-14 00:37:12 · 2366 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.15、网络为什么要分层?
为什么网络要分层呢?因为网络环境过于复杂,不是一个能够集中控制的体系。全球数以亿记的服务器和设备各有各的体系,但是都可以通过同一套网络协议栈通过切分成多个层次和组合,来满足不同服务器和设备的通信需求。原创 2021-11-13 23:48:51 · 4507 阅读 · 11 评论 -
RK3399平台开发系列讲解(网络篇)7.13、如何兼顾并发数量与传输速度?
TCP 连接是由内核维护的,内核为每个连接建立的内存缓冲区,既要为网络传输服务,也要充当进程与网络间的缓冲桥梁。如果连接的内存配置过小,就无法充分使用网络带宽,TCP 传输速度就会很慢;如果连接的内存配置过大,那么服务器内存会很快用尽,新连接就无法建立成功。因此,只有深入理解 Linux 下 TCP 内存的用途,才能正确地配置内存大小。原创 2021-10-29 23:10:31 · 2065 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.12、在 Linux 上检查网络的常用工具
对互联网服务而言, 网络问题是非常多的,而且很多问题的外在表现都是网络问题,这就需要我们从网络入手,分析清楚根本原因是什么。而要分析各种各样的网络问题,你必须掌握一些分析手段,这样在出现问题的时候,你就可以高效地找到原因。这节我就带你来了解下 TCP 的常见问题,以及对应的分析套路。原创 2018-01-29 21:11:30 · 1361 阅读 · 7 评论 -
RK3399平台开发系列讲解(网络篇)7.10、Linux网络包接收过程的监控
Linux内核对网络包的接收过程大致可以分为接收到RingBuffer、硬中断处理、ksoftirqd软中断处理几个过程。其中在ksoftirqd软中断处理中,把数据包从RingBuffer中摘下来,送到协议栈的处理,再之后送到用户进程socket的接收队列中。原创 2021-10-16 00:19:07 · 2525 阅读 · 10 评论 -
原创 RK3399平台开发系列讲解(网络篇)7.8、DHCP与PXE:IP是如何生成的?
如果需要和其他机器通讯,我们就需要一个通讯地址,我们需要给网卡配置这么一个地址。原创 2018-08-27 19:31:31 · 1923 阅读 · 8 评论 -
原创 RK3399平台开发系列讲解(网络篇)7.7、ICMP与ping:网络侦察兵
一般情况下,你会想到 ping 一下。那你知道 ping 是如何工作的吗?原创 2019-05-26 23:32:53 · 1872 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.6、网关
话说得好,在家千日好,出门一日难。网络包一旦出了网关,就像玄奘西行一样踏上了江湖漂泊的路原创 2019-08-11 12:18:50 · 2699 阅读 · 7 评论 -
RK3399平台开发系列讲解(网络篇)7.11、图解Linux网络包接收过程
文章目录一、Linux网络收包概况二、Linux启动:网络接收准备工作2.1 创建ksoftirqd内核进程2.2 网络子系统初始化2.3 协议栈注册2.4 网卡驱动初始化2.5 启动网卡三、迎接数据的到来3.1 硬中断处理3.2 ksoftirqd内核线程处理软中断3.3 网络协议栈处理3.4 IP协议层处理3.5 UDP协议层处理int main(){ int serverSocketFd = socket(AF_INET, SOCK_DGRAM, 0); bind(serverSoc原创 2021-10-15 23:45:00 · 2718 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.14、linux网桥系统相关数据结构
linux网桥(bridge)相当于一个虚拟二层交换机。 当创建一个bridge时,linux创建一个虚拟接口(net_device),这个虚拟bridge下可以挂接实接口、VLAN虚接口,形成一个多接口的二层交换系统。其内部维护一个高速fdb表(端口、mac、vlan关系表),从而实现完整的二层交换功能,原创 2020-08-21 23:45:58 · 2171 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.1、Linux 网络协议栈
由于 OSI 模型实在太复杂,提出的也只是概念理论上的分层,并没有提供具体的实现方案。事实上,我们比较常见,也比较实用的是四层模型,即 TCP/IP 网络模型,Linux 系统正是按照这套网络模型来实现网络协议栈的。原创 2020-08-21 00:12:24 · 2879 阅读 · 13 评论 -
RK3399平台开发系列讲解(网络篇)7.4、FTP wireshark交互包分析
一、FTP 登录服务器交互流程包二、FTP 上传文件交互流程包三、FTP 下载文件交互流程包四、退出数据,挥手告别原创 2020-08-06 01:26:39 · 2024 阅读 · 9 评论 -
RK3399平台开发系列讲解(网络篇)7.3、图解UDP协议头
UDP 是能够传输数据的最简单的协议,它的协议首部(也称作协议头)只有 8 个字节原创 2020-08-06 01:38:34 · 2180 阅读 · 8 评论 -
RK3399平台开发系列讲解(网络篇)7.5、图解HTTP
什么是超文本(HyperText)?包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。什么是URL?URL即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。什么是超文本传输协议HTTP?是一种按照URL指示,原创 2020-12-19 19:27:08 · 2359 阅读 · 12 评论 -
RK3399平台开发系列讲解(网络篇)7.2、图解TCP通信协议
CP(Transmission Control Protocol)是面向连接的通信协议,通过三次握手建立连接原创 2020-08-23 17:32:01 · 2847 阅读 · 10 评论 -
RK3399平台开发系列讲解(网络篇)7.9、tcpdump及Wireshark工具的使用说明
Tcpdump + Wireshark 实现,在 Linux 里抓包,然后在wireshark里分析包。原创 2020-01-26 14:05:02 · 2290 阅读 · 9 评论