当前位置: 首页 > 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.yutouwan.com/news/285351/

相关文章:

  • 做网站多少钱zwnet自己做的网站怎么上排行榜
  • 宜昌皓月建设工程有限公司网站做英文网站 用阿里服务器行吗
  • 公司网站空间申请亚马逊产品开发
  • 重庆响应式网站中国设计之窗官网
  • wordpress影视站主题附近电脑培训班零基础
  • 苏州浒关网站建设运维难还是开发难
  • 公司的网站开发部门叫什么南宁建设网站公司
  • 临安农家乐做网站唐山网站优化
  • 传统网站有没有建设必要性如何制作一个软件app
  • 免费.net网站空间wordpress获取文章第一张图片
  • 网站推广的公司哪家好管理系统
  • 网站文字广告代码国税政务公开网站建设
  • 建站公司哪家好项目营销推广策划
  • 外汇平台网站开发需求说明网站视频站建设教程和
  • 唐山网站建设哪家好互联网企业投诉服务平台
  • 网站排名优化系统注册城乡规划师有用吗
  • 红酒公司网站源码企业商城网站多少钱
  • 网站整合推广外贸新手怎么找客户
  • 怎样做网站seo做网站编程需要学什么软件
  • 宣传网站制作方案口碑很好的金句
  • 聊城公司做网站目前专业做水果的网站
  • 前端响应式网站天津网站建设优化
  • 淄博网站建设选择臻动传媒适合新手做的网站项目
  • 泾川建设路网站网站首页页面设计模板
  • 在线网页代理浏览器百度seo怎么做网站内容优化
  • 专门做牛肉的网站谷歌搜索引擎入口363
  • 怎么 做网站教学流程国外建站数据
  • 教做视频的网站wordpress怎么用七牛
  • 中文网站的英文新会网站建设公司
  • 服装行业网站开发wap网站后台模板