linux发包流程

转载: http://www.verydemo.com/demo_c167_i125773.html

sendto-->sys_sendto(socket.c)-->sock_sendmsg(socket.c)-->__sock_sendmsg(socket.c)-->sendmsg(socket.c)这个调用是通过sock->ops->sendmsg实现的,sock是socket结构类型,
socket->ops(inet_dgram_ops)->sendmsg(Af_inet.c上定义) UDP报文是sendmsg = inet_sendmsg
调用inet_sendmsg--> (调用sk->sk_prot->sendmsg(udp.c)) sk->sk_prot->sendmsg在udp.c上定义,此处sendmsg=udp_sendmsg-->udp_push_pending_frames-->ip_push_pending_frames-->
ip_local_out-->dst_output-->(skb_dst(skb)->output(skb))skb_dst(skb)得到struct dst_entry,路由顶层?? (route.c 定义了output = ip_output input = ip_forward)  此处output = ip_output(Ip_output.c)-->ip_finish_output-->ip_finish_output2-->dst->neighbour->output or neigh_hh_output

dst->neighbour->output = neigh_resolve_output(arp.c指向neighbour中实现)-->(neigh->ops->queue_xmit)实际queue_xmit = dev_queue_xmit(arp.c)
neigh_hh_output-->hh->hh_output = dev_queue_xmit(arp.c,dev.c实现)

dev_queue_xmit(dev.c)-->dev_hard_start_xmit-->ops->ndo_start_xmit(ops->ndo_start_xmitstruct net_device_ops *ops = dev->netdev_ops)
到达网卡将数据包发送出去

时间: 2024-10-07 22:30:27

linux发包流程的相关文章

Linux系统启动流程、内核及模块管理

Linux系统启动流程.内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建.调度.销毁等).内存管理.网络管理(网络协议栈).驱动程序.文件系统.安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列.semerphor.shm(共享内存)跨主机进程间通信机制:socket等运行中的系统环境可分为两层:内核空间.用户空间内核空间(模式):内核代码(特权级操作-->系统调

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

红帽系Linux系统安装流程及自动化安装

本文以Centos6.9系统为例,讲解红帽系linux系统启动流程.以便于理解系统安装原理并能自定义系统安装配置完成自动安装. 目录: 一.系统启动基本流程 二.光盘镜像方式安装(U盘同理) 1.配置文件概述 2.光盘安装系统过程 三.自动化安装 1.anaconda配置方式 2.kickstart配置文件格式 3.自动化安装示例 四.网络自动化安装 一.系统启动的基本流程 系统安装与平时系统的启动流程相似,首先让我们简要了解下: 1.BIOS程序 ①POST开机自检 ②列出可以启动的设备顺序,

记录Linux启动流程的工具bootchart

/*********************************************************************  * Author  : Samson  * Date    : 04/28/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如:

Linux系统管理(二):Linux系统启动流程

Linux系统启动流程 从11月底报名马哥的Linux培训班,12月初真正开始学习,已经过去一个多月的时间了,从学习Linux的发展史开始.跟着学习命令行.文件系统挂载与管理.目录.Bash Shell的基本特性等等,Linux真的是博大精深,今天以CentOS 5,CentOS 6的启动过程进行一下简单的总结.由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教. 系统启动过程主要经过以下几个流程: POST>BootSequence(BIOS)>Bootloader(MBR)&

linux shell 流程控制

linux shell 流程控制 导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi shell命令,可以按照分号分割,也可以按照换行符分

linux引导流程

本章重点: 1.linux引导流程 2.linux运行级别 3.linux启动服务管理 4.GRUB配置与应用 5.启动故障分析解决 linux启动流程 1.固件(fireware):固话在硬件上的程序,主要有CMOS/BIOS 2.post加电自检, 1.检测硬件信息,如cpu,内存,等硬件信息是否工作正常. 2.安全设置 3.可引导介质列表 4.可引导介质的搜索程序 5.电源管理 6.启动细节信息 3.读取MBR(master boot record)主引导记录 MBR位于0柱头0磁头1扇区

Linux shell 流程控制(条件if,循环for,while)

Linux shell 流程控制(条件if,循环[for,while],选择[case]语句实例 linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi 如果对于:条件测试语句不是