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

网站怎么做才有百度权重建筑证书兼职网站

网站怎么做才有百度权重,建筑证书兼职网站,游戏推广员是违法的吗,深圳网站制作建设服务公司希望是火#xff0c;失望是烟#xff0c; 生活就是一边点火#xff0c;一边冒烟。 理解TCP全连接队列与tcpdump抓包 1 TCP 全连接队列1.1 重谈listen函数1.2 初步理解全连接队列1.3 深入理解全连接队列 2 tcpdump抓包 1 TCP 全连接队列 1.1 重谈listen函数 这里我们使用… 希望是火失望是烟 生活就是一边点火一边冒烟。 理解TCP全连接队列与tcpdump抓包 1 TCP 全连接队列1.1 重谈listen函数1.2 初步理解全连接队列1.3 深入理解全连接队列 2 tcpdump抓包 1 TCP 全连接队列 1.1 重谈listen函数 这里我们使用之前实现的tcp_echo_server的客户端与服务端。 我们来看listen LISTEN(2) Linux Programmers Manual NAMElisten - listen for connections on a socketSYNOPSIS#include sys/types.h /* See NOTES */#include sys/socket.hint listen(int sockfd, int backlog); 这里的第二个参数我们之前设置的是一个const常量但是这个到底代表什么含义呢今天我们就来学习一下。 当我们启动客户端和服务端时我们能够通过netstat -natp查找到建立的两个连接 分别是客户端到服务端与服务端到客户端的连接我们将服务端的的accept注释掉来看 void Loop(){_isrunning true;while (_isrunning){sleep(1);// accept接收sockfd// struct sockaddr_in client;// socklen_t len sizeof(client);// int sockfd ::accept(_listensockfd, (struct sockaddr *)client, len);// if (sockfd 0)// {// LOG(WARNING, accept error\n);// sleep(1);// continue;// }// InetAddr addr(client);// // 读取数据// LOG(INFO, get a new link, client info : %s, sockfd is : %d\n, addr.AddrStr().c_str(), sockfd);// version 4 --- 线程池版本// task_t t std::bind(TcpServer::Service , this , sockfd , addr);// ThreadPooltask_t::GetInstance()-Equeue(t);}这里的服务端的启动后就只进行了初始化套接字文件不会进行accept! 我们看这个结果中服务端和客户端还是建立起了连接也就是说三次握手建立连接的过程与服务端是否进行accept无关 当我们启动多个客户端进程之后会发现有一些客户端进程的连接处于SYN_SENT状态因为在服务器来不及进行accept的时候底层的TCP listen sock 允许用户进行三次握手建立连接但是不能建立太多**这个数量就是backlog 1**而维护的成功连接在操作系统维护的数据结构就是全连接队列 listen函数中 backlog 的含义就是全连接队列中已经建立三次握手成功的个数 这时我们就能够理解listen函数的两个参数了 int sockfdsockfd是调用socket函数创建的套接字文件描述符。在调用listen之前服务器应用程序必须先用socket函数创建一个套接字一般使用bind函数将其绑定到一个本地地址和端口上。int backlogbacklog指定了在拒绝新的连接请求之前系统应该为该套接字排队的最大连接数量。这个参数对防止过载很有用它控制了未完成连接SYN_RCVD状态队列和已完成但还未被应用程序的accept调用接收的连接ESTABLISHED状态队列的总和的大小。 1.2 初步理解全连接队列 在操作系统中有应用层传输层网络层…在传输层中有一个接收队列accept_queue建立连接时就进行三次握手。操作系统中用户访问的网站多种多样并且会并发的运行所以在操作系统内部一定是要通过数据结构来进行管理的 连接本质就是操作系统内核中的一批数据结构 在传输层中将这个数据结构放入队列中进行管理应用层会调用accept获取连接传输层就会返回给一个文件描述符供应用层使用通过这个文件描述符应用层就可以进行通信这个队列就是全连接队列 当应用层非常忙来不及accept那么全连接队列中会挤压连接这个总数不能超过 backlog 这个并不代表服务端只能同时处理 backlog 1个连接。全连接队列中的连接表示连接成功但来不及及时处理的连接 全连接队列的本质就是生产消费模型应用层从其中获取资源传输层向其中放入资源这个队列保证了在应用层较忙时无法获取连接时可以先将一些连接维护起来等待应用层调用这样可以大大提升效率提高连接吞吐量增加服务端闲置率减少给用户提供服务的效率和体验 1.3 深入理解全连接队列 当服务器启动时本质上是启动一个进程那么就会有对应的task_struct。在这个结构体中都会有struct files_struct其中包含文件描述符表struct file*fd_array[]每个元素都指向文件结构体struct file。 当创建网络套接字时会创建一个struct socket结构体在内核中时这样一个结构 可以看到struct socket结构体内部有一个struct file结构体但是未来我们是想通过文件描述符找到对应的套接字然后进行读取数据。可是现在是struct socket结构体内部有一个struct file结构体如果通过struct file结构体找到套接字呢 在struct file结构体有一个指针void* private_data,这个指针指向struct socket结构体。这样两个结构体就联系起来了 struct socket结构体是网络Socket的入口其内部还包含一个const struct proto_ops结构体 这是一个方法集集合了bindconnect…一系列的函数指针 虽然我们struct socket结构体是内核中的套接字结构但建立连接时真实的数据结构是tcp_sock结构体 这是TCP套接字其中包含了慢启动算法阈值拥塞窗口大小关联进程…一系列TCP协议中的对应字段这个tcp_sock就是三次握手时候建立的结构体其中的第一个成员struct inet_connection_sock是复制连接属性的这里就包含连接的相关信息。全连接队列就在这个结构体中 这里有超时重传的触发时间TCP 连接的状态握手失败重试次数全连接队列…等数据。 全连接队列中时这样的结构 struct inet_connection_sock中的第一个成员是struct inet_sock结构体这是网络层的结构体。 struct inet_sock结构体其中包含了目的端口号源端口号目的 IP 地址和源 IP 地址等数据更重要的是其中第一个成员是struct sock结构体里面包含着报文的一些属性。这是整个tcp_sock中最底层的结构体其中有两个字段接收队列和发送队列 struct sk_buff_head sk_receive_queue; struct sk_buff_head sk_write_queue;这两个队列对于网络通信至关重要因为它们直接参与了数据的接收和发送过程。今天不详细讲解。 我们再回过来看struct socket其中有一个结构体指针struct sock* sk这个指针可以指向tcp_sock中最底层的struct sock结构体然后可以通过类型转换最终读取到整个tcp_sock结构体也就是说这个指针指向了tcp_sock结构体这是C风格的多态 同样的创建UDP套接字时udp_sock的第一个成员是struct inet_sock结构体因为udp不需要连接所以没有包含连接属性结构体。那么最终也是一个struct sock结构体所以也可以通过C风格的多态实现 通过基类struct socket我们可以进行tcp和udp的通信所以说他是网络socket的入口。 此时我们看上图可以直观的理解套接字的结构。每当创建网络套接字时就会创建一个socket文件。这个文件中会指向通用socket这个通用socket可以指向TCP结构体或UDP结构体。 三次握手建立一个连接时主要是创建tcp_sock或udp_sock 两者的区别就是是否包含连接属性结构体然后就将这个结构体放入到全连接队列中去获取连接时会通过sock_map_fd方法将sock套接字转换为文件描述符 2 tcpdump抓包 现在我们已经学习完毕了TCP协议的内容熟悉了TCP报头结构中各个字段的意义了解了三次握手和四次挥手的过程。接下来我们落实一下动手能力—进行抓包。 Linux系统中我们使用TCPDump TCPDump 是一款强大的网络分析工具 主要用于捕获和分析网络上传输的数据包。 tcpdump 通常已经预装在大多数 Linux 发行版中。 如果没有安装 可以使用包管理器进行安装。 例如 Ubuntu系统可以使用以下命令安装 sudo apt-get update sudo apt-get install tcpdump我们接下来在我们的云服务器进行一些抓包 通过 sudo tcpdump -i any tcp命令我们可以看到实时传输的数据包 -i any 指定捕获所有网络接口上的数据包 i 可以理解成为 interface “界面”的意思.tcp 指定捕获 TCP 协议的数据包。 我们如果想要捕获特定源或目的源IP地址的TCP报文呢 使用 host 关键字可以指定源或目的 IP 地址。 例如 要捕获源 IP 地址为192.168.1.100 的 TCP 报文 可以使用以下命令 $ sudo tcpdump src host 192.168.1.100 and tcp要捕获目的 IP 地址为 192.168.1.200 的 TCP 报文 可以使用以下命令 $ sudo tcpdump dst host 192.168.1.200 and tcp同时指定源和目的 IP 地址 可以使用 and 关键字连接两个条件 $ sudo tcpdump src host 192.168.1.100 and dst host 192.168.1.200 and tcp我们如果想要捕获特定端口的TCP报文呢 使用 port 关键字可以指定端口号。 例如 要捕获端口号为 80 的 TCP 报文通常是HTTP 请求 可以使用以下命令 $ sudo tcpdump port 80 and tcp保存捕获的数据包到文件与读取 使用 -w 选项可以将捕获的数据包保存到文件中 以便后续分析。 例如 $ sudo tcpdump -i eth0 port 80 -w data.pcap这将把捕获到的 HTTP 流量保存到名为 data.pcap 的文件中。 • 了解 pcap 后缀的文件通常与 PCAPPacket Capture 文件格式相关 这是一种用于捕获网络数据包的文件格式,不能通过直接的cat读取 使用 -r 选项可以从文件中读取数据包进行分析。 例如 sudo tcpdump -r data.pcap注意事项 使用 tcpdump 时 请确保你有足够的权限来捕获网络接口上的数据包。 通常 你需要以 root 用户身份运行 tcpdump。使用 tcpdump 的时候 有些主机名会被云服务器解释成为随机的主机名 如果不想要 就用-n 选项主机观察三次握手的第三次握手 不占序号 通过抓包我们可以验证三次握手和四次挥手的过程 可以看到是第一次是SYN请求第二次是SYNACK第三次是ACK通信过程中也把窗口大小确定了 可以看到四次会受到过程这里因为服务端和客户端同时断开连接所以中间两次的挥手合并为一次通信通过ACK序号和确认序号可以确定我们可以通过sleep将服务端和客户端断开的时间错开 这样就是完整的四次挥手
http://www.hkea.cn/news/14383385/

相关文章:

  • wordpress标签链接分类目录品牌推广百度seo
  • 学院网站建设招标书wordpress 卡
  • 济南网站建设泰观网络深圳市网站建设公司排名
  • 中山做营销型网站深圳网站建设叶林
  • 创意手机网站ps做 网站标准尺寸是多少合适
  • 中国住房和城乡建设部网站一级建造师网莱州网站建设案例
  • 襄城县做网站的门店做网站有没有必要
  • 官方网站套餐北京 网站设计招聘信息
  • 茌平企业做网站推广郑州建设网站企业定制
  • asp.net mvc 网站开发wordpress彩色标签云插件
  • 西安网站制作哪家公司好用asp.net做网站计数器
  • 电商网站 性能目标有哪些以蓝色为主色调的网站
  • 手机网站推广个人如何申请网址
  • 怀化优化网站排名wordpress单页面博客
  • 河南中英网站建设做一个同城便民信息网站怎么做
  • 县城网站怎样做经验十大医疗器械公司排名
  • 做企业网站赚钱吗广州宝盈网络科技有限公司网站
  • 沈阳网站制作优化推广建筑设计专业世界大学排名
  • 装潢设计与制作是学什么网站优化销售话术
  • 网站开发工程师适合女生吗产品公司网站建设方案模板
  • 网站域名怎么买wordpress localhost
  • 最流行的做网站语言用友erp管理系统多少钱
  • 网站备案通过之后北京注册公司政策
  • wordpress 建门户网站东营建设信息网官网查询
  • 营销型网站费用南京模板建网站哪家好
  • 杭州企业网站seo网站的备案的要多少钱
  • 杭州做家教网站杭州企业网站制作哪家好
  • 怎么整理网站电商网站建设网
  • 专门做品牌网站设计服务做移动端电影网站
  • 上海高端网站wordpress全景图