网络路径有很多种,其中的linux网络路径是最常用的,也是最需要关注的。linux网络路径中网络协议栈有几种?电脑新装系统漏洞应不应该修复?了解网络安全常识,首先就要了解计算机网络安全有哪些基本注意事项,下面佰佰安全网小编就带您认识一下吧。

1.总述

Linux中用户空间的网络编程,是以socket为接口,一般创建一个sockfd =

socket(family,type,protocol),之后以该sockfd为参数,进行各种系统调用来实现网络通信功能。其中family指明使用哪种协议域(如INET、UNIX等),protocol指明该协议域中具体哪种协议(如INET中的TCP、UDP等),type表明该接口的类型(如STREAM、DGRAM等),一般设protocol=0,那么就会用该family中该type类型的默认协议(如INET中的STREAM默认就是TCP协议)。

Linux中利用module机制,层次分明地实现了这套协议体系,并具有很好的扩展性,其基本模块构成如下:

顶层的socket模块提供一个sock_register()函数,供各个协议域模块使用,在全局的net_family[]数组中增加一项;各个协议域模块也提供一个类似的register_xx_proto()函数,供各个具体的协议使用,在该协议域私有的xx_proto[]数组中增加一项。

很明显它们是用来创建不同类型的socket接口的,且是一种分层次的创建过程,可想而知,顶层socket_create()完成一些共有的操作,如分配内存等,然后调用下一层create;协议域内的create()完成一些该协议域内共有的初始化工作;最后具体协议中的create()完成协议特有的初始化。具体的下一节讲。

顶层socket模块提供的4个函数,前两个一般由具体协议模块调用,由于协议栈与应用层的交互,具体的后面会讲到。后两个一般有协议域模块调用,用于底层设备与协议栈间的交互。但这也不绝对,如在PPPOE协议中,这4个函数都由具体协议模块调用,这是因为PPPOX协议域内的共有部分不多,各个协议间几乎独立。

2.socket插口创建

首先来看一下最终创建好的socket插口由哪些部分组成,该结构是相当庞大的,这里只给出框架:

基本属性有state(listen、accept等),flags标志(blocked等),type类型,这里family和protocol都没有了,因为它们再创建时使用过了,已经被融入到socket结构中。

File指针指向一个file结构,在Linux中一个socket也被抽象为一个文件,所以在应用层一般通过标准的文件操作来操作它。

Ops指向一个struct proto_ops结构,它是每种协议特有的,应用层的系统调用,最终映射到网络栈中具体协议的操作方法。

Sk指向一个struct

sock结构,而该结构在分配空间时,多分配了一点以作为该协议的私有部分,这里包含了该协议的具体信息,内容相当多。首先是一个struct

sock_common结构,包含了协议的基本信息;然后是一个sk_prot_create指针,指向一个struct

proto结构体,该结构体就是第一节中所述的,用proto_regsiter()注册到内核中的,它包含应用层到协议栈的交互操作和信息(也可以说成是Appà

transport

layer的交互信息);然后还有一个sk_backlog_rcv函数指针,所指函数在协议栈处理完接收到的包之后调用,一般仅是把数据包放到该socket的接收队列中,等待APP读取;最后协议的私有部分里存放该协议的私有信息,如pppoe的sessionID、daddr,tcp的连接4元组等,这些信息很重要,利用它们来区分同一个协议中的多个socket。

linux网络路径中网络协议栈有几种?上面就是佰佰安全网小编为您普及的相关网络安全知识了。如果您想了解更多关于网络协议栈的相关详细信息和知识,您可以关注我们网站上的内容更新。

责任编辑:慕丹萍

linux 网络路径中网络协议栈有几种,linux网络路径中网络协议栈有几种相关推荐

  1. 理解 Linux 网络栈(2):非虚拟化Linux 环境中的 Segmentation Offloading 技术

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

  2. 什么叫linux网络协议栈,我们为什么使用Linux内核的TCP协议栈

    最近的一篇文章提出了"我们为什么使用Linux内核的TCP协议栈"的问题,并在Hacker News引发了非常有意思的讨论. 在CloudFlare的时候我也曾思考这个问题.我的经 ...

  3. redis,memcached到nginx,底层网络io中剥离精髓丨C/C++Linux丨C++后端开发丨Linux服务器开发丨底层原理

    redis,memcached到nginx,底层网络io中剥离精髓 1. redis单线程网络的优缺点 2. memcached多线程网络的并发优势 3. nginx多进程网络的优势 视频讲解如下,点 ...

  4. linux调整网页视频声音,网络学员面试常见问题请你修改一下LINUX的视频驱动和声音.DOC...

    网络学员面试常见问题请你修改一下LINUX的视频驱动和声音 网络学员面试常见问题: 1.请你修改一下LINUX的视频驱动和声音驱动 答: redhatlinux中用sndconfig来设置声卡,如果没 ...

  5. Linux学习笔记_12_进程管理(ps, top)服务管理(service)查看系统网络(netstat)

    1. 进程的基本介绍 在 LINUX 中, 每个执行的程序(代码) 都称为一个进程. 每一个进程都分配一个 ID 号. 每一个进程, 都会对应一个父进程, 而这个父进程可以复制多个子进程. 例如 ww ...

  6. linux网络编程—7层网络以及5种Linux IO模型以及相应IO基础

    一.七层网络模型 OSI是Open System Interconnection的缩写,意为开放式系统互联.国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,它是一个七层的. ...

  7. linux磁盘io调优,Linux系统管理和调优(内存、CPU、磁盘IO、网络)

    系统管理 Author:Rich七哥 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程 查看 IO 运行状态相关工具, ...

  8. 在微型计算机中 cmos属于A顺序存储器,2019年9月网络教育统考计算机模拟卷(精华版)...

    2019年9月网络教育统考时间临近,复习期间做一些模拟题是有必要的,本文是2019年9月网络教育统考计算机模拟卷(精华版). 一.单选题练习 1. 完整的计算机系统由 ( C ) 组成. A.运算器. ...

  9. 4.6-4.7 配置网络 4.8-4.9 远程登录 4.10 Linux密钥认证登录Linux

    2019独角兽企业重金招聘Python工程师标准>>> 4.6-4.7 配置网络 配置网络目的: 1)远程登录它 2)可以使用yum安装其它的包 配置网络步骤: 1)执行dhclie ...

最新文章

  1. java 反射set方法赋值_反射 根据属性名获得属性set方法并为set方法赋值
  2. Github 本周最热的 10 款「机器学习」开源项目 | PaperDaily #27
  3. 什么是空中下载技术?学嵌入式必看!
  4. airpods耳机敲击没反应_iOS11.2.6造成AirPods耳机出现奇怪问题 网友:解决方法很简单...
  5. Rails之格式化价格方法
  6. [BZOJ1726][Usaco2006 Nov]Roadblocks第二短路
  7. ExtJs + .NET MVC 不分页处理大数据
  8. linux 让程序在后台执行
  9. phpmailer thinkphp3.2发送邮件
  10. Javaweb安装教程
  11. xmlspy_XMLSpy是免费的吗? 我说天堂的甘露。
  12. 【空气质量数据分析专题二】数据获取及预处理
  13. 香港乐坛25年发展 [ 2005-04-24 07:28 PM | 作者:老唱片 | 来自:老唱片]
  14. 37岁被裁,120天没找到工作,无奈去小公司,结果懵了
  15. 月薪过万的运维工程师都要会干什么
  16. UML类图java代码实现
  17. 计算机命令vty是什么意思,华为交换机基础命令中user interface 0和user-interface vty 0的区别...
  18. 异地访问公司的ERP解决方案(完美部署上线,超级详细)
  19. 使用MCGS触摸屏与单片机通讯的心得
  20. 【Linux】交叉编译linux内核到ARM平台

热门文章

  1. 年终盘点 | 2019年Java面试题汇总篇(附答案)
  2. 服务器通过响应头向浏览器设置cookie,http响应包括设置cookie jession id,但随后发送请求,请求标头中没有cookie信息...
  3. linux内核io源码,Linux Kernel do_io_submit()函数整数溢出漏洞
  4. pointnet分割自己的点云数据_细嚼慢咽读论文:PointNet论文及代码详细解析
  5. dw如何写php代码提示,DW CS5 jquery代码提示插件
  6. docker mysql优势_前端使用docker有什么优势呢?
  7. linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题
  8. 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程
  9. 电脑自带的画图工具怎么使用笔刷
  10. 设置搜狗浏览器为默认浏览器时被360拦截怎么办?