网络
LyndonZheng
字节跳动某小游戏工作室后端程序
墨麟龙骑战歌服务端程序员
展开
-
三次握手和四次挥手
一、简述 1. 三次握手 C: syn S: syn+ack C: ack2. 四次挥手 C: fin S: ack S: fin C: ack3. 为什么挥手时,S的ack和fin不一起发?(1) 当S收到C的FIN报文时,仅仅表示C不再发送数据,但C还能接收数据。(2) S是否现在关...转载 2019-01-27 18:20:27 · 148 阅读 · 0 评论 -
libevent的消息传递和回调注册函数
----参考原帖地址https://www.cnblogs.com/secondtonone1/p/5554075.html1.evconnlistener_new_bind函数:(1) evconnlistener_new_bind:完成socket生成和绑定(2) evconnlistener_new:生成evconnlistener* listener, 并将listen...原创 2019-04-29 21:03:06 · 1586 阅读 · 0 评论 -
Reactor和Proactor的区别
一、实现方式Reactor: 采用同步IO,用户层执行IO操作时,处于挂起状态,等待内核层完成。图示如下:Proactor:采用异步IO,用户层执行IO操作时,可以一边等待内核操作IO,一边自己去处理其他事情。等内核操作IO结束后,用户层被唤醒。图示如下:Proactor下,应用程序需要传递缓存区。二、优点和缺点1. Reactor:优点:(1) 实现简单,不需要向...转载 2019-04-29 11:56:19 · 4891 阅读 · 0 评论 -
windows网络IO模型:IOCP
参考原帖地址:https://blog.csdn.net/beyond_cn/article/details/9336043一、概念 1. 完成端口IOCP是一个异步IO模型, IO设计模式 属于Proactor。 2. 它开启多个工作者线程,每个工作者线程负责多个socket的处理。 3. 它利用操作系统的内核程序来并发处理多个IO,避免某个线程被单个耗时的I...原创 2019-04-28 17:53:24 · 633 阅读 · 0 评论 -
网络 一些概念了解
1.Reactor和Proactor模式的主要区别Reactor和Proactor模式的主要区别是真正的读取和写入操作,是由谁来完成的。Reactor:应用程序自己读取或者写入数据。(应用程序完成)Proactor:应用程序不需要进行实际的读写过程,只需要从缓存区读取或者写入即可。内核会读取缓存区或者写入缓存区到真正的IO设备。(内核完成)2.同步和异步,阻塞和非阻塞同步和...原创 2019-03-28 20:36:16 · 282 阅读 · 0 评论 -
libevent概述(极简)
libevent核心:1.事件驱动2.同步非阻塞libevent好处:1. 事件驱动,高性能2. 轻量级,专注于网络,不如ACE那么臃肿庞大3. 跨平台,支持windows和linux4. 支持多种I/O多路复用技术, epoll,poll,dev/poll,select,和kqueue5. 支持I/O,定时器和信号等事件关于libevent, 我个人的描述: ...原创 2019-03-28 18:31:50 · 479 阅读 · 0 评论 -
Linux性能优化实战 47-48 服务器丢包的检测思路
1. 执行 wrk 命令,来测试 Nginx 的性能可以看到吞吐量(也就是每秒请求数)只有 189,并且所有 1910 个请求收到的都是异常响应(非 2xx 或 3xx)。数据显然表明,吞吐量太低了,并且请求处理都失败。以下开始查找原因。2. 使用ss查看 TCP 连接数的汇总情况成功建立连接数太少了,是 timewait 状态太多了。3. 查看系统系统日志...转载 2019-03-27 16:01:30 · 1348 阅读 · 0 评论 -
Linux性能优化实战 47-48 服务器丢包的检测思路
一、消息收发流程图及丢包可能原因1.在网卡收包后,环形缓冲区可能会因为溢出而丢包;2.在链路层,可能会因为网络帧校验失败、QoS 等而丢包;3.在 IP 层,可能会因为路由失败、组包大小超过 MTU 等而丢包;4.在传输层,可能会因为端口未监听、资源占用超过内核限制等而丢包;5.在套接字层,可能会因为套接字缓冲区溢出而丢包;6.在应用层,可能会因为应用程序异...转载 2019-03-27 12:01:23 · 3615 阅读 · 0 评论 -
Linux性能优化实战 35:C10K 和 C1000K 问题
一、定义:1.C10K 就是单机同时处理 1 万个请求(并发连接 1 万)的问题2.C1000K 也就是单机支持处理 100 万个请求(并发连接 100 万)的问题、二、I/O 模型优化1. 两种 I/O 事件通知的方式:水平触发和边缘触发(1) 水平触发:只要文件描述符可以非阻塞地执行 I/O ,就会触发通知。 应用程序...转载 2019-02-26 20:18:39 · 1674 阅读 · 0 评论 -
Linux性能优化实战 33-34:网络模型,性能指标,配置说明,性能检测
原标题:关于 Linux 网络,你必须知道这些一、网络模型1. 国际标准化组织定义了一个七层的 OSI 网络模型,但是这个模型过于复杂。2.实际工作中的事实标准,是更为实用的 TCP/IP 模型TCP/IP 模型,把网络互联的框架分为应用层、传输层、网络层、网络接口层等四层(1)应用层,负责向用户提供一组应用程序,比如 HTTP、FTP、DNS 等。(2)传输层,负...转载 2019-02-26 17:20:54 · 614 阅读 · 0 评论 -
Linux性能优化实战 43 网络性能指标
一、网络性能工具二、套接字套接字可以屏蔽掉 Linux 内核中不同协议的差异,为应用程序提供统一的访问接口。除此之外,套接字接口还提供了一些配置选项,用来修改网络连接的行为。1.为 TCP 连接设置 TCP_NODELAY 后,就可以禁用 Nagle 算法;2.为 TCP 连接开启 TCP_CORK 后,可以让小包聚合成大包后再发送(注意会阻塞小包的发送)...转载 2019-03-01 18:30:01 · 277 阅读 · 0 评论 -
Linux性能优化实战 41 : NAT
一、NAT原理1.NAT 技术能够重写 IP 数据包的源 IP 或目的 IP,让网络中的多台主机,共享同一个公网 IP 地址来访问外网资源。 达到解决公网 IP 地址短缺问题的目的。2.NAT 屏蔽了内网网络,也为局域网中机器起到安全隔离的作用。3.NAT 基于内核的连接跟踪模块实现。所以,它维护每个连接状态的同时,也会带来很高的性能成本。二、NAT性能1...转载 2019-03-01 17:45:20 · 662 阅读 · 0 评论 -
Linux性能优化实战 40 :网络延迟问题
一、查看延迟情况1. 确定网络延迟,更常用的是双向的往返通信延迟RTT(Round-Trip Time)。2.很多网络服务会把 ICMP 禁止掉,所以需要使用traceroute 或 hping3 的 TCP 和 UDP 模式,来获取网络延迟。从 hping3 的结果中,你可以看到,往返延迟 RTT 为 20.9ms。traceroute 会在路由的每一跳发送三个包,并在...转载 2019-03-01 12:25:26 · 4002 阅读 · 0 评论 -
Linux性能优化实战 39 :怎么缓解 DDoS 攻击带来的性能下降问题?
一、模拟DDOS攻击 运行 hping3 命令 如果现象不明显,那么把参数里面的 u10 调小,或者加上–flood 选项;二、确认DDOS攻击1. 执行命令变慢,正常客户端的连接超时了,并没有收到 Nginx 服务的响应。2. sar命令查看网络收发状况接收的 PPS 已经达到了 20000 多,但是 BPS 却只有 1...转载 2019-02-28 12:14:23 · 307 阅读 · 0 评论 -
Linux性能优化实战 38:怎么使用 tcpdump 和 Wireshark 分析网络流量?
一、tcpdump1. 命令解释 tcpdump -nn udp port 53 or host 35.190.27.188 -nn :不解析抓包中的域名(即不反向解析)、协议以及端口号。 udp port 53 :只显示 UDP 协议的端口号(包括源端口和目的端口)为 53 的包。 host 35.190.27.188:表示只显示 IP地址(包括源地...转载 2019-02-27 18:12:25 · 343 阅读 · 0 评论 -
Linux性能优化实战 37:DNS
一、域名与 DNS 解析1. DNS 协议在 TCP/IP 栈中属于应用层,不过实际传输还是基于 UDP 或者 TCP 协议(UDP 居多) ,域名服务器监听端口 53 。2. 域名以分层的结构进行管理,域名解析是用分层递归的方式(从顶级开始),发送给每个层级的域名服务器,直到得到解析结果。3. 查看服务器的域名服务器配置 /etc/resolv.conf4. DNS 服务通...转载 2019-02-27 17:01:07 · 507 阅读 · 0 评论 -
Linux性能优化实战 36:网络性能测试方法
一、网络基准测试 Linux 网络基于 TCP/IP 协议栈,而不同协议层的行为显然不同。 评估的网络性能,需要确定评估协议栈的哪一层。1.基于 HTTP 或者 HTTPS 的 Web 应用程序,属于应用层,应该测试 HTTP/HTTPS 的性能;2.对大多数游戏服务器来说,通常会基于 TCP 或 UDP ,与客户端进行交互,应该测试TCP/UDP 的性能;...转载 2019-02-27 15:18:12 · 557 阅读 · 0 评论 -
网络编程实战 10-12:笔记1
12 | 连接无效:使用Keep-Alive还是应用心跳来检测?使用心跳包就是这样一种保持 Keep Alive 的机制,默认是关闭的原创 2019-09-17 15:38:44 · 157 阅读 · 0 评论