网络
Lailikes
这个作者很懒,什么都没留下…
展开
-
虚拟机使用代理方案
参考:https://blog.csdn.net/Bob_666/article/details/81412242在安装虚拟机后通常也希望使用代理,可以直接在对应的虚拟中安装代理软件,但是这会消耗掉一个设备数,我们期望虚拟机直接使用宿主机上的代理。1、我们可以让ssr对局域网中的链接进行代理,但前提是虚拟机和宿主机必须在同一个局域网中,也就是要有相同的子网号,我们直接选用选用桥接模式可以很...原创 2020-03-29 09:19:35 · 10499 阅读 · 1 评论 -
SO_LINGER和优雅关闭连接以及短链接TIME_WAIT问题解决方法
SO_LINGER和优雅关闭连接以及短链接TIME_WAIT问题解决方法Linux网络编程中,socket的选项很多.其中几个比较重要的选项就包括SO_LINGER。在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,SO_LINGER选项则是用来修改这种默认操作的。S...转载 2019-05-20 09:46:04 · 5005 阅读 · 0 评论 -
Linux 高性能服务器编程——socket选项
https://blog.csdn.net/ctthuangcheng/article/details/25595117socket选项函数功能:用来读取和设置socket文件描述符属性的方法函数:#include <sys/scoket.h>int getsockopt ( int sockfd, int level, int option_name, void*...转载 2019-05-20 09:52:19 · 297 阅读 · 0 评论 -
怎样调试回调函数
gdb/VS不会直接step到相应的回调函数中去,我们需要一些特定的手段实现这个目的,如果是C++11的function,可以经过简单的几步调到目的回调函数,但是如果是boost库中的function,如果一步一步跳就比较麻烦了。为此提供如下解决方案step1:找到相应回调函数地址以VS为例:如上图所示,马上就要调用回调函数connectionCallback_了,我们想知道这个f...原创 2019-05-20 17:02:04 · 2546 阅读 · 5 评论 -
Reactor和Proactor网络编程模型
链接:https://www.zhihu.com/question/26943938/answer/68773398reactor:能收了你跟俺说一声。proactor:你给我收十个字节,收好了跟俺说一声。1、标准定义两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象...转载 2019-05-16 11:56:30 · 261 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
https://blog.csdn.net/historyasamirror/article/details/5778378同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和...转载 2019-05-16 12:01:45 · 130 阅读 · 0 评论 -
write和read返回值详解
write返回值1、返回值>0a、等于给定字节数b、小于给定字节数,有如下几种可能:底层物理介质上没有足够的空间 创建的文件指定了RLIMIT_FSIZE,也就是指定了文件允许的最大字节数,不能再往其中添加数据 已经写了部分数据,但是被中断信号打断,返回中断打断前写入的字节数2、返回值=0如果相应的errno被设定,说明有相应失败情况。如果errno没有被设定,没有...原创 2019-05-29 10:50:34 · 26137 阅读 · 0 评论 -
计算机网络
● 请你说一下TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程参考回答:TCP保证可靠性:(1)序列号、确认应答、超时重传数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是...转载 2019-06-01 16:55:05 · 1962 阅读 · 0 评论 -
内网穿透
NAT的缺陷之一就是只能由内网主机发起连接,外网主机无法主动连接到内网。这就意味着外部节点无法和内网主机进行P2P通信STUN——UDP打洞全称为Simple Tranversal of UDP through NAT假设两个不同网络中的设备A和B想穿透NAT进行点对点通信,其中STUN SERVER是部署在公网中的STUN服务器。A通过NAT网关向SERVER发送STUN请...转载 2019-07-03 17:39:06 · 417 阅读 · 0 评论 -
分布式限流令牌桶算法
https://blog.csdn.net/SunnyYoona/article/details/512284561. 简介令牌桶算法最初来源于计算机网络。在网络传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送。令牌桶算法是网络流量整形(Traffic Shaping)和速...转载 2019-07-03 17:50:42 · 2054 阅读 · 0 评论 -
select poll epoll之间该如何决择
http://cxd2014.github.io/2018/01/10/epoll/前言本文翻译自select/poll/epoll: practical difference for system architects主要介绍了select、poll、epoll三者之间的区别和各自的优缺点,以及在实际场景下如何选择使用哪个接口。分析的非常到位遂决定把它翻译下来。正文当设计一个高性...转载 2019-07-04 17:05:27 · 400 阅读 · 0 评论 -
超时重传三次后会发生什么?
TCP未收到发送报文的ACK,重传定时器超时后会进行重传,但重传不会一直持续下去,3次后依然不成功,直接发送RST关闭连接。对面主机宕机,物理网线断开,会在IP成返回路由不可达的ICMP,TCP层直接重传,3次后RST...原创 2019-08-08 11:38:38 · 870 阅读 · 0 评论 -
TCP的拥塞控制
https://www.cnblogs.com/losbyday/p/5847041.html1. 拥塞:即对资源的需求超过了可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。 拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提:网络能够承受现有的网络负荷。拥塞控制是一个全...转载 2019-05-14 17:57:13 · 372 阅读 · 0 评论 -
TCP 的那些事儿
目录TCP 的那些事儿(上)TCP头格式TCP的状态机数据传输中的Sequence NumberTCP重传机制快速重传机制SACK 方法TCP 的那些事儿(下)TCP的RTT算法经典算法Karn / Partridge 算法Jacobson / Karels 算法TCP滑动窗口Zero WindowSilly Window Synd...转载 2019-05-14 16:21:13 · 417 阅读 · 0 评论 -
Epoll的本质(内部实现原理)
本文主体转自https://zhuanlan.zhihu.com/p/63179839,加上了自己的理解和批注从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。因为epoll的重要性,不少游戏公司(如某某九九)在招聘服务端同学时,可能会问及epoll相关的问题。...转载 2019-05-06 11:11:26 · 80936 阅读 · 27 评论 -
端口复用SO_REUSEADDR
版权声明:本博客文章,大多是本人整理编写,或在网络中收集,转载请注明出处! https://blog.csdn.net/tennysonsky/article/details/44062173在《绑定( bind )端口需要注意的问题》提到:一个网络应用程序只能绑定一个端口( 一个套接字只能绑定一个端口 )。实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口( 占用...转载 2018-10-23 11:39:32 · 7151 阅读 · 7 评论 -
一篇文章讲懂IP数据报分片、组装以及与TCP/UDP的联系
http://www.mamicode.com/info-detail-1465195.htmlhttps://blog.csdn.net/leex_brave/article/details/51971053https://blog.csdn.net/buptzwp/article/details/5055487一、术语:a、MTU: 当两台...原创 2018-10-31 21:40:41 · 6484 阅读 · 0 评论 -
协程与go语言并发
https://www.cnblogs.com/liang1101/p/7285955.htmlhttps://studygolang.com/articles/10112简而言之,协程与线程主要区别是它将不再被内核调度,而是交给了程序自己调度(意味着程序员需要自己编写调度代码),而线程是将自己交给内核调度。而go语言封装了这种调度,使协程的调度对用户透明,让用户感觉自己是在使用线程一...原创 2018-11-14 10:11:44 · 244 阅读 · 0 评论 -
抓包工具tcpdump用法说明
https://www.cnblogs.com/f-ck-need-u/p/7064286.html若在本地主机同时模拟服务器和客户端,需要 -i lo 使用环路,即使显示给出本机IP也是这样的转载 2018-12-20 17:26:29 · 235 阅读 · 0 评论 -
TCP粘包问题与Nagle算法的辨析
TCP提供的是流式数据传输,而粘包问题是流式数据传输带来的必然问题。与UDP接收端收到的是数据报不同,TCP端收到的是数据流,应用层的报文在以流的形式传输时,每一个报文的报头紧接着上一个报文的报文尾部,这就是所谓的“粘包”问题。这其实在网络编程中是经常遇到的问题,解决办法也很简单,通常在每个应用报文前加上一个指明报文长度的字段。 Nagle算法是TCP协议提供的一...原创 2019-02-19 14:28:15 · 604 阅读 · 0 评论 -
netstat、tcpdump和gdb命令的配合使用debug多线程网络程序
不熟练某个命令时记得使用man查找手册一、netstatnetstat命令会截取执行命令那一瞬间的网络状态在调试网络bug时一般最先使用netstat查看网络状态,主要关注TCP状态是否正确,接收和发送区是否有大量数据堆积。-t(tcp)显示tcp相关的网络信息-p(process) 显示占用相应端口的程序名字以及进程号PID-a(all) 显示所有状态的端口包括list...原创 2019-03-11 16:48:38 · 471 阅读 · 0 评论 -
怎样运用pipe更为便捷地实现线程池
先讨论一下pipe的原子性问题,具体而言就是多个写线程写一个pipe,同时多个读线程读这个piperead pipe只要pipe中有数据,read就不会阻塞,不会阻塞就不会在读的中途被换出,也就能确保原子性。要达到上述目的,一个简单的做法就是write的数据量是read的数据量的倍数或相同。这样read就不会在读到一半的数据时被阻塞。write pipe只要pipe中未满,writ...原创 2019-03-18 11:31:40 · 385 阅读 · 0 评论 -
单台服务器并发TCP连接数到底可以有多少
http://www.cnblogs.com/zhangkele/articles/8955051.html常识一:文件句柄限制在linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是“Socket/File:Can't open so many files”。这时你需要明白操作系统对可以打开的最大...转载 2019-03-21 21:09:44 · 2401 阅读 · 0 评论 -
epoll实现
epoll的内部实现 & 百万级别句柄监听 & lt和et模式非常好的解释https://www.cnblogs.com/charlesblc/p/6242479.htmlepoll是Linux高效网络的基础,比如event poll(例如nodejs),是使用libev,而libev的底层就是epoll(只不过不同的平台可能用epoll,可能用kqueue)。epol...转载 2019-04-12 09:16:25 · 161 阅读 · 0 评论 -
服务器监听类Acceptor及Tcp连接TcpConnection的建立与关闭(fd耗尽的解决方案)
https://blog.csdn.net/sinat_35261315/article/details/78343266通常服务器在处理客户端连接请求时,为了不阻塞在accept函数上,会将监听套接字注册到io复用函数中,当客户端请求连接时,监听套接字变为可读,随后在回调函数调用accept接收客户端连接。muduo将这一部分封装成了Acceptor类,用于执行接收客户端请求的任务。类...转载 2019-04-22 11:20:53 · 1150 阅读 · 0 评论 -
muduo设计思想总结
https://blog.csdn.net/qq_38345430/article/details/80372895首先是设计的分析,有了设计才能根据设计编码:1、单线程编程模型采用"non-blocking IO + IO multiplexing",即Reactor模型。基本结构是一个事件循环,以事件驱动和事件回调的方式实现业务逻辑。优点:可以用于读写socket,连接的建立,...转载 2019-04-22 11:24:28 · 516 阅读 · 0 评论 -
RDMA
来源: https://zcopy.wordpress.com/ 说明: 本文不是对原文的逐字逐句翻译,而是摘取核心部分以介绍RDMA Send操作(后面凡是提到RDMA send, 都对应于IBA里的send操作)。文中给出的例子非常浅显易懂,很值得一读。1. What is RDMA | 什么是RDMARDMA is Remote Direct Memory Access whic...转载 2018-10-19 11:35:34 · 2715 阅读 · 0 评论