当前位置: 首页 > news >正文

英文网站模板源代码免费做旅游海报的网站

英文网站模板源代码,免费做旅游海报的网站,企业电话卡,重庆智能网站建设推荐深入网络底层#xff0c;了解Linux系统收发网络数据包的过程、原理、流程#xff0c;附图文说明。 Linux 服务器收到网络数据包#xff0c;需要经过哪些处理#xff0c;一步步将数据传给应用进程的呢#xff1f;应用进程发送数据包时#xff0c;Linux 又是如何操作将数据…深入网络底层了解Linux系统收发网络数据包的过程、原理、流程附图文说明。 Linux 服务器收到网络数据包需要经过哪些处理一步步将数据传给应用进程的呢应用进程发送数据包时Linux 又是如何操作将数据包发送出去的呢今天我们就来聊聊这个话题。 在准备好接收网络数据包之前Linux需要做很多准备工作例如网络子系统的初始化、协议栈的注册、网卡驱动的初始化、启动网卡等等,只有这些都准备好了之后才能真正开始接收网络包。 网络协议栈 在介绍Linux收发网络数据包之前我们先来了解一下Linux网络协议栈。 国际标准化组织制定了开放式系统互联通信参考模型Open System Interconnection Reference Model也就是 OSI 网络模型该模型主要有 7 层分别是应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。 由于 OSI 模型太复杂提出的只是存在于概念和理论上的一种模型分层太多增加了网络工作的复杂性所以没有大规模应用。 我们比较常见是TCP/IP 网络模型Linux 系统正是按照这套网络模型来实现网络协议栈的。 TCP/IP 网络模型共有 4 层分别是应用层、传输层、网络层和网络接口层每一层负责的职能如下 1、应用层 对应于OSI参考模型的高层为用户提供所需要的各种服务例如FTP、Telnet、DNS、SMTP等. 2、传输层 对应于OSI参考模型的传输层为应用层实体提供端到端的通信功能保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议传输控制协议TCP和用户数据报协议UDP). 3、网络层 对应于OSI参考模型的网络层主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址它还负责数据包在多种网络中的路由。该层有三个主要协议网际协议IP、互联网组管理协议IGMP和互联网控制报文协议ICMP。 4、网络接口层 与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上TCP/IP本身并未定义该层的协议而由参与互连的各网络使用自己的物理层和数据链路层协议然后与TCP/IP的网络接入层进行连接。地址解析协议ARP工作在此层即OSI参考模型的数据链路层。 接收网络数据包 网络数据包到达网卡后按照FIFO顺序被存入网卡的接收队列网卡通过 DMA 技术将网络包写入到指定的内存地址Ring Buffer。 Ring Buffer是在网卡驱动程序启动时创建和初始化的存储的是sk_buff缓冲区的描述符物理地址和大小等。 当网络包到达时从Ring Buffer获取指向的sk_buff描述符通过DMA将数据写入该地址。等sk_buff中的数据交由上层协议栈处理后Ring Buffer中的描述更新为新分配的sk_buff。 接着网卡向 CPU 发起硬件中断当 CPU 收到硬件中断请求后根据中断注册表找到注册的中断处理函数。 硬件中断处理函数会做如下的事情 1、屏蔽网卡的中断 目的是避免CPU被频繁中断而无法处理其他任务屏蔽中断是告诉网卡已经知道内存中有数据了下次再收到数据包直接写内存就可以了不要再通知 CPU 了。 2、发起软中断恢复刚才屏蔽的中断 内核中的 ksoftirqd 线程收到软中断后就会调用相应软中断的处理函数来轮询处理数据即从Ring Buffer 中获取一个数据帧用 sk_buff 表示作为一个网络包交给网络协议栈从下到上进行逐层处理。 网络协议栈对网络包的处理流程如下 1、网络接口层 首先网络接口层检查报文的合法性和正确性如果不合法或报文校验不正确则丢弃否则找出上层协议的类型IPv4还是IPv6去掉帧头、帧尾然后交给上层即网络层处理。 2、网络层 网络层取出IP头判断网络包下一步的走向是转发还是交给上层。当确认网络包是要发送给本机后就取出上层协议的类型比如TCP或UDP去掉IP头然后交给传输层处理。 3、传输层 传输层取出 TCP 头或者 UDP 头后根据四元组【 源 IP、源端口、目的 IP、目的端口 】找出对应的 Socket并把数据拷贝到 Socket 的接收缓冲区。 4、应用层 最后应用层程序调用 Socket 接口将内核的 Socket 接收缓冲区的数据拷贝到应用层的缓冲区。 到这里一个网络包的接收过程就结束了。 发送网络数据包 我们了解了网络包的接收流程后就很容易理解网络包的发送流程了。网络包的发送方向正好跟接收方向相反。 首先应用程序调用 Socket 发送网络包的接口。这是一个系统调用会从用户态陷入到内核态的套接字层中。 套接字层会申请一个内核态的 sk_buff 内存将用户待发送的数据拷贝到 sk_buff 内存并将其加入到Socket发送缓冲区等待网络协议栈的处理。 由于网络数据包从应用程序传到内核时是原始数据协议栈要在原始数据中加入通信约定才能保证数据到达服务端能被正确识别。网络协议栈从 Socket 发送缓冲区中取出数据包然后按照 TCP/IP 栈的分层传输层、网络层、网络接口层从上到下逐层进行处理各层将协议的头信息不断插入到数据包中。 协议栈对发送数据包的处理流程如下 1、传输层 在传输层会为器添加TCP头同时拷贝一个新的 sk_buff 副本 这是因为 sk_buff 在到达网卡发送完成的时候会被释放掉而TCP 协议是支持重传的为确保网络包可靠传输在收到对方的 ACK 之前这个 sk_buff 不能被删除。 2、网络层 在网络层主要会做这些工作选取路由确认下一跳的 IP、填充 IP 头、netfilter 过滤、对超过 MTU 大小的数据包进行分片。处理完这些工作后会交给网络接口层处理。 3、网络接口层 网络接口层会进行物理地址寻址以找到下一跳的 MAC 地址填充帧头和帧尾将其放到发送队列中。然后触发软中断告诉网卡驱动程序队列中有新的网络包需要发送。驱动程序收到通知会通过 DMA 从发送包队列中读出网络帧并通过DMA将数据写入网卡的FIFO发送队列。 4、网卡设备 网卡设备从FIFO发送队列中取出数据包将其发送到网络当发送完成的时候网卡设备会触发一个硬中断来释放内存主要是释放 sk_buff内存和清理 RingBuffer 内存。最后当收到这个 TCP 报文的 ACK 应答时传输层就会释放原始的 sk_buff。 至此一个网络包的发送流程就结束了。
http://www.sadfv.cn/news/285351/

相关文章:

  • 东阳市建设局网站沈总网站建设
  • 学校为什么要做网站wordpress火车头发布模块
  • 广州汽车网站建设网页投放广告怎么收费
  • 邢台市桥西住房建设局网站linux wordpress 建站教程
  • 周村网站制作哪家好二手交易网站怎么做
  • 用笔记本做网站服务器专注WordPress网站建设开发
  • 东莞活动网站设计模板网站首页设计布局
  • 网站开发技术视频广告设计公司成本核算具体到每个项目
  • 网站抓取诊断ip出错系统优化工具是什么软件
  • 请描述网站开发的一般流程怎么在中国移动做网站备案
  • 潍坊知名网站建设服务商网站可以多个域名吗
  • wordpress 5.0网易云音乐网站seo推广平台
  • WordPress文章发布模块seo优化关键词挖掘
  • 网站开发一般包括广告视频
  • 上海建站优化做网站如何收费
  • 广东seo网站优化公司凡科快图官网登录入口
  • 小程序与手机网站区别多少钱算有钱
  • 摄影网站设计理念网络服务器无响应
  • 沁水做网站wordpress换了ip
  • 学校官方网站网页设计网站建设费用预算
  • wordpress上次附件郴州网站优化
  • 一级a做爰全过程网站口碑营销的案例及分析
  • 海淀周边网站建设直播间人气互动平台
  • 公司如何申请一个网站做教程网站犯法吗
  • 西安企业网站建设多少钱wordpress站点路径
  • 唐山高端网站建设公司教育网站开发报告
  • wordpress跳转到微信快速seo关键词优化方案
  • 商业网站策划书范文wordpress 改成动态
  • 嘉兴有能做网站优化苏州建设项目备案网站
  • 长沙网站优化步骤怎么显示wordpress里元素的源代码