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

品牌百度网站建设可以用自己的电脑做网站主机

品牌百度网站建设,可以用自己的电脑做网站主机,徐州关键词优化平台,学做静态网站可选题目三#xff1a;TCP/IP协议栈在Linux内核中的运行时序分析在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上#xff0c;分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。编译、部署、运行、测评、…可选题目三TCP/IP协议栈在Linux内核中的运行时序分析在深入理解Linux内核任务调度(中断处理、softirg、tasklet、wq、内核线程等)机制的基础上分析梳理send和recv过程中TCP/IP协议栈相关的运行任务实体及相互协作的时序分析。编译、部署、运行、测评、原理、源代码分析、跟踪调试等应该包括时序一 基础概念简介1.什么是TCP/IP?TCP/IP 也即传输控制协议/网际协议(Transmission Control Protocol / Internet Protocol)是一类通信协议也是因特网种最根本的协议用于提供已连接因特网的计算机进行通信。TCP/IP 定义了电子设备(比如计算机)如何连入因特网以及数据如何在它们之间传输的标准。当然TCP/IP协议不仅仅是指TCP和IP两个协议而是指一类协议如下图所示对于四层模型应用层中Telnet、FTP、SMTP等协议及传输层TCP/UDP协议也包括其中。以此命名也只是因为在TCP/IP协议中TCP协议和IP协议最具代表性。2.osi七层模型OSI参考模型将网络结构划分为七层即物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。每一层均有自己的一套功能集并与紧邻的上层和下层交互作用。在顶层应用层与用户使用的软件进行交互在七层模型中每个分层都接受由它下一层所提供的特定服务并且负责为自己的上一层提供特定的服务。需要注意的是OSI为理论参考模型现在普遍采用的是下面介绍的四层模型。3. TCP/IP四层模型基于TCP/IP的参考模型将网络结构分成四层分别是网络访问层、网际层、传输层和应用层。相对于OSI参考模型去掉了会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为网络访问层。4.SocketSocket接口是TCP/IP网络的API独立于具体协议的网络编程接口在TCP/IP模型中socket套接字主要位于传输层和应用层之间。Socket接口定义了许多函数或例程可以用它们来开发TCP/IP网络上的应用程序事实上它是设计模式的一种应用用于让编程变的更简单。二、套接口层相关结构1.socket结构2.proto_ops 结构套接口系统调用到传输层函数的跳转表完成从套接口层到传输层的映射功能3.sock结构公用的网络描述块定义了基本的传输控制块结构。与具体的协议无关。4.proto结构在proto_ops 结构的基础上进一步将传输层和网络层之间进行映射5.net_proto_family每一个协议族都会用net_porto_family结构的一个实例进行表示在初始化时会调用sock_register函数进行统一的注册三、Socket系统调用1.sys_socketcall在Linux系统中所有的socket系统的调用总入口都为sys_socketcall其函数原型为函数的两个形参含义如下*call:每个数字代表一个操作码一共17种具体操作码对应情况如下对一些常用操作的说明SYS_SOCKET: 创建一个套接口若创建成功返回一个打开的文件描述符SYS_BIND:将套接字地址与套接字号相绑定SYS_CONNECT: 建立连接SYS_LISTEN: 仅在TCP服务器端调用将套接字转换到LISTEN状态SYS_ACCEPT: 用于面向对象的连接器用于接受新的连接SYS_SEND:见下分析SYS_RECV:见下分析*args参数为一个指针指向数组其可以根据不同的操作码要求从用户态复制相应长度的数据结构如下2.SYS_SOCKET()函数分析前面有同学对该函数进行了一定的分析但是仍不够全面在此做一定的补充。首先对源码进行分析我们发现在sys_socket函数中还调用了两个函数socket_create()以及socket_mp_fd()下面我们进一步对这两个函数进行进一步的解析sock_create()事实上我们可以看到该函数只是将__socket_create()进行了简单封装并将最后一个参数默认设置为0所以我们这里将对__socket_create()做解析即可。__socket_create()函数解析2.socket_mp_fd()socket_map_fd的功能实际上是将socket套接口与文件描述符进行绑定(实际上我们从函数名也可以推测出)。综上所述由此我们可以得到sys_socket的函数调用时序图大致如下跟踪调试结果四、Send系统调用分析事实上sys_send只是对sys_sendto函数的简单封装同时未指定数据输出的目的地址(参数为NULL)所以采取默认地址即connect函数连接的那个地址。所以我们对sys_sendto函数进行分析即可实际上该函数的作用是将数据报发送至指定的目的地址下面对源码进行分析我们发现在sys_sendto函数种最终还是通过调用SYS_SENDMSG函数进行发送数据所以我们接着对SYS_SENDMSG函数做分析。该函数的主要工作是将用户空间的信息复制到内核空间中然后再逐级调用发包接口发送数据。具体到源码的解析如下通过上述源码的分析我们大致可以画出sendmsg函数的系统调用过程调试结果五、RECV系统调用分析与send过程类似相当于镜像操作。这里就没必要详细展开了。直接给出调用过程图如下调试结果五、传输层部分网际层向传输层方向各调用函数作用说明1.tcp_v4_rcv()充当网络层与传输层的接口传输层报文处理入口函数2.__inet_lookup_v4_lookup()在ehash或者bhask中查找传输控制块若无找到则进行退出 并通过tcp_v4_send_reset(skb)发送RST段给对方如果报文被损坏则无法发送rst直接丢包3.xfrm4_policy_check()进行安全检查4.sk_filter()看是否符合过滤器规则5.tcp_v4_do_rcv()传输层处理TCP段的主入口6.tcp_rcv_established()当连接已经建立时用快速路径处理报文7. tcp_v4_hnd_req():为侦听套口处理半连接状态的ACK消息8. tcp_child_process()不是侦听套接字说明已经建立了半连接。调用此函数初始化子传输控制块如果失败则向客户端发送rst段即tcp_v4_send_reset()调试结果传输层向网际层方向大致经历了以下几个步骤调用Tcp_sendmsg函数检查链接状态并同时获取链接的MSS。创建该数据包的 sk_buffer 数据结构实例 skb从 userspace buffer 中拷贝 packet 的数据到 skb 的 buffer。构造数据包头部,接而计算 TCP 校验和(ack)和顺序号(seq)。最后调用ip_queue_xmit函数将数据包传输到网际层进行处理。这里主要对Tcp_sendmsg函数的调用逻辑进行补充分析该函数只要检查已经建立的 TCP connection 的状态然后获取有效的 MSSTcp_sendmsg函数的内部调用顺序如下各调用函数作用说明1.Tcp_sendmsg分析sendmsg系统调用在TCP层的实现2.lock_sock()获取套接口的锁3.sock_sndtimeo()根据标志计算阻塞超时时间4.sk_stream_wait_connect()对于不能发送信息状态须等待连接正确建立超时5.tcp_current_mss()获得有效的MSS六、网际层网际层到传输层方向各调用函数作用说明1.Ip_rcv函数对IP头部合法性进行严格检查如数据报文长度、首部长度、是否为共享数据包然后把具体功能交给ip_rcv_finish2.ip_rcv_finish函数如果还未为该数据报查找输入路由缓存调用ip_route_input为其查找输入的路由缓存接着处理IP数据报首部中的选项最后根据输入路由缓存输入到本地或转发。3.Ip_forward: 数据报转发的接口函数。4.Ip_forward_finish:完成输入ip数据报的转发5.Ip_local_deliver:处理输入到本地的IP数据报将分片进行重组获得完整数据报之后调用ip_local_deliver_finish函数进行数据传输。6.ip_local_deliver_finish:将数据报从网络层传递到传输层。调试结果同时发现了传输层与网络层接口部分·网际层到网络访问层方向各调用函数作用说明Ip_queue_xmit:将TCP端打包成IP数据报Dst_output:封装了输出数据报目的路由缓存项中的输出端口(分为两类单播组播)Ip_output: 处理单播数据报设置数据报的输出网络设备以及网络层协议类型参数。Ip_finish_output:观察数据报长度是否大于MTU若大于则调用ip_fragment分片否则调用ip_finish_output2输出Ip_ finish_output2: 对skb的头部空间进行检查看是否能够容纳下二层头部若空间不足则需要重新申请skb然后获取邻居子系统并通过邻居子系统输出调试结果网络层与传输层的接口部分七、网络访问层从网际层接受数据方向数据包传输过程启用软中断后调用dev_queue_xmit函数对数据包进行处理主要处理依据为是否采用了Generic Segmentation Offload技术是否采用了QoS技术进行处理。对函数dev_queue_xmit的源码分析如下从网络接口层向网际层方向主要实现函数为softnet_data前面有同学也提到但未做出详细分析所以下面部分就softnet_data结构及其工作原理加以说明补充。该结构实质上描述的是与软中断相关的输入及输出队列。该结构的源码如下结构的参数说明Throttle该参数与后面avg_blog、cng_level参数配合使用实现拥塞管理算法throttle的值实际为bool值其含义是当CPU是超载时为true否则为false。cng_level用于表示拥塞级别在处理每一帧时会重新进行计算。avg_blog表示的是后面参数input_pkt_queue队列的平均长度input_pkt_queue数据包排列形成的队列结构poll_list等待处理入帧的双向设备链表。output_queue记录了需要发送数据包的设备列表。completion_queue记录了已经成功发送可以释放的缓冲区。backlog_dev表示与CPU相关的的设备数据包传输过程若采取非NAPI方式首先会通过硬中断读取数据包。再调用netif_rx函数将收到的数据包添加到input_pkt_queue队列结构中最后通过产生一个软中断的方式依次将数据传输到网络层。若采取NAPI方式相较于非NAPI方式可以有效的减少硬中断的数量。首先会将网络设备添加到poll_list结构中再通过软中断的方式将网络设备中的报文传输到网络层中。标签调用,函数,IP,TCP,Linux,传输层,socket来源 https://www.cnblogs.com/PaddyPan/p/14312038.html
http://www.zqtcl.cn/news/771147/

相关文章:

  • 上传了网站源码怎么做wordpress加百度广告代码出问题
  • 哪些网站做推广vi设计说明模板
  • 杭州市建设工程造价管理协会网站攀枝花建设工程质量监督站投诉网站
  • 做网站推广送什么深圳的网站建设公司流程
  • 中国网站开发的前景制作公司主页网站
  • 在线画流程图的网站购物网站的设计与实现论文
  • 淘宝客cms网站建设K12网站怎么建设
  • 专业门户网站开发浙江省湖州艺术与设计学校官网
  • 企业网站搭建价格搭建平台的另一种说法
  • 网站开发框架桂林人论坛风姿摄影
  • 吉林省建设安全信息网站网站服务器和空间有什么区别
  • 百度制作网站怎么去掉2345网址导航
  • 深圳网站建设有限公司 2019哪些建材网站可以做宣传
  • 西安阿里云网站建设一建报名资格条件
  • 聊城网站优化wordpress循环该分类子分类
  • 帮网站做关键词排名优化创造网站需要多少钱
  • 广西网站建设推荐wordpress 宣布停止
  • 专注网站制作青岛景观设计公司排名
  • 安庆做网站网站代理建设网站观澜
  • 网站开发需求收集 模板cms做门户网站
  • dw网站首页的导航怎么做有大佬给个网址吗
  • 一个网站怎么做聚合洛可可设计公司贾伟
  • 什么是优化型网站网页设计作业在线网站首页
  • 关于网站建设广告词英文案例网站
  • 有哪些可以做策划方案的网站国家域名
  • vk网站做婚介做seo排名好的网站
  • 广州企业网站建设公司苏州建网站提
  • html如何做购物网站天元建设集团有限公司法人代表
  • 教育培训机构排名seo是搜索引擎营销
  • 做奢侈品网站有哪些沧州手机建站哪家好