linux网络内核基础

linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/net/socket.c /net/protocols.c etcINET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时, 还需要保留些额外的参数,于是就有了struct sock结构。文件主要 有:/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etcTCP/UDP层:处理传输层的操作,传输层用struct inet_protocol和struct proto两个结构表示。文件主要 有:/net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp.c/net/ipv4/tcp_input.c /net/ipv4//tcp_output.c /net/ipv4/tcp_minisocks.c/net/ipv4/tcp_output.c /net/ipv4/tcp_timer.c etcIP层:处理网络层的操作,网络层用struct packet_type结构表示。文件主要有:/net/ipv4/ip_forward.c ip_fragment.c ip_input.c ip_output.c etc.数据链路层和驱动程序:每个网络设备以struct net_device表示,通用的处理在dev.c中,驱动程序都在/driver/net目 录下。2. 两台主机建立udp通信所走过的函数列表 ^| sys_read fs/read_write.c| sock_read net/socket.c| sock_recvmsg net/socket.c| inet_recvmsg net/ipv4/af_inet.c| udp_recvmsg net/ipv4/udp.c| skb_recv_datagram net/core/datagram.c| -------------------------------------------| sock_queue_rcv_skb include/net/sock.h| udp_queue_rcv_skb net/ipv4/udp.c| udp_rcv net/ipv4/udp.c| ip_local_deliver_finish net/ipv4/ip_input.c| ip_local_deliver net/ipv4/ip_input.c| ip_recv net/ipv4/ip_input.c| net_rx_action net/dev.c| -------------------------------------------| netif_rx net/dev.c| el3_rx driver/net/3c30Array.c| el3_interrupt driver/net/3c30Array.c==========================| sys_write fs/read_write.c| sock_writev net/socket.c| sock_sendmsg net/socket.c| inet_sendmsg net/ipv4/af_inet.c| udp_sendmsg net/ipv4/udp.c| ip_build_xmit net/ipv4/ip_output.c| output_maybe_reroute net/ipv4/ip_output.c| ip_output net/ipv4/ip_output.c| ip_finish_output net/ipv4/ip_output.c| dev_queue_xmit net/dev.c| --------------------------------------------| el3_start_xmit driver/net/3c30Array.cV 3. 网络路径图、重要数据结构sk_buffer及路由介绍 linux-net.pdf 第2.1章 第2.3章 第2.4章 4. 从连接、发送、到接收数据包的过程 linux-net.pdf 第4、5、6章详细阐述 二.linux的tcp-ip栈代码的详细分析 1.数据结构(msghdr,sk_buff,socket,sock,pr

linux内核网络基础,linux网络内核基础.doc相关推荐

  1. 【CentOS Linux 7】【Linux网络配置基础】

    Linux系统及应用---调研报告 [CentOS Linux 7]实验1[VMware安装.新建虚拟机:63个基础命令运行结果图] [CentOS Linux 7]实验2[Shell编程及应用] [ ...

  2. Docker基础: Linux内核之Cgroups(1)

    作为开源Container技术代表的Docker,它跟Linux内核的Namespace和Cgroup两大特性密不可分.物有本末,事有终始.知所先后,则近道矣.理解Linux的这两大特性将有助于我们更 ...

  3. Linux基础命令-网络配置和相关命令

    Linux基础命令-网络配置和相关命令 网络配置和相关命令 一.基本网络配置 二.网卡名称 1. 网卡别名 2. 设备别名 3. 实验 三.网络配置方式 1. ifconfig命令 2. route命 ...

  4. 2021-10-16python笔记(Linux内核简介与Linux基础命令)

    前面的博文已经教会了大家如何下载和安装Linux操作系统,并且使用Xshell软件远程连接Linux服务器,这节课我们要进入真正的Linux基础学习中. 知识点概括: 1.Linux的心脏-Linux ...

  5. 【Linux】网络基础+UDP网络套接字编程

    只做自己喜欢做的事情,不被社会和时代裹挟着前进,是一件很奢侈的事. 文章目录 一. 网络基础 1.局域网和广域网 2.协议初识和网络协议分层(TCP/IP四层模型) 3.MAC地址和IP地址(子网掩码 ...

  6. linux内核网络协议栈--linux bridge(十九)

    1 . 前言 本文是参考附录上的资料整理而成,以帮助读者更好的理解kernel中brdige 模块代码. 2. 网桥的原理 2.1 桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口" ...

  7. linux内核网络协议栈--linux网络设备理解(十三)

    网络层次 linux网络设备驱动与字符设备和块设备有很大的不同. 字符设备和块设备对应/dev下的一个设备文件.而网络设备不存在这样的设备文件.网络设备使用套接字socket访问,虽然也使用read, ...

  8. linux 内核网络协议栈--linux内核路由机制(一)

    内核的路由部分是是网络中重要部分,目前在Linux内核中默认的路由查找算法使用的是Hash查找,所以你会看到很多的数据结构是XXX_hash什么之类(例如fn_hash).Linux内核从2.1开始就 ...

  9. Linux基础之网络配置

    Linux基础之网络配置 一.查看网络配置 1.查看网络接口状态 2.查看网关路由信息 3.查看dns信息 二.ifconfig网络管理工具使用 1.查看已激活网卡信息 2.查看所有网卡(包括未激活) ...

最新文章

  1. 复习一个知识点——原、反、补码以及取反操作
  2. WCF入门的了解准备工作
  3. 数据库sql课程设计_SQL和数据库-初学者完整课程
  4. 带你走进和声搜索算法(Harmony search )的世界!
  5. 字节数组和字符串的相互转化……
  6. LeetCode003-无重复字符的最长子串(Length of longest substring)-Rust语言实现
  7. 大数据之-Hadoop3.x_MapReduce_编程规范---大数据之hadoop3.x工作笔记0086
  8. Oracle常用语句汇总
  9. python numpy 索引_Python numpy中布尔索引的问题。
  10. 2017 ACM-ICPC南宁网络赛: J. Minimum Distance in a Star Graph(BFS)
  11. JAVA集合Set之HashSet详解_Java基础———集合之HashSet详解
  12. 机器学习中梯度下降算法的实际应用和技巧/李文哲
  13. HTML基础___CSS样式表__上 第九天
  14. 希捷、西部数据硬盘保修查询
  15. 扫盲:Java 后端开发常用的 10 种第三方服务
  16. js正则表达式检验经纬度
  17. PCB后续以及泪滴、敷铜和标识
  18. 【芯片前端】Filelist -f/-F的文件解析方式探究
  19. Actions as Moving Points复现
  20. Android开发:使用EasyPay打造全能移动支付框架

热门文章

  1. 微积分28-复合函数与隐函数的微分法
  2. 加入功能区buttonRibbon Button到SP2010特定列表或库
  3. ecshop修改后台登陆密码
  4. Android 系统预装添加第三方apk到data/app
  5. Cobbler安装指南
  6. php代码自定义字段,[原创]栏目自定义字段调用教程及代码
  7. python电脑怎么打开任务管理器_利用Python调用Windows API,实现任务管理器功能
  8. php天津旅游设计网站作品
  9. 两周从爬虫小白变大神,看完你就知道我不是标题党了【五万字教程,建议收藏】
  10. Java多线程详解(线程池)