![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netWork
文章平均质量分 69
Greetlist
这个作者很懒,什么都没留下…
展开
-
SO_BINDTODEVICE 使用指定网卡
文章目录问题指定网口PING程序的实现问题在一台机器上面有一个千兆口和一个万兆口,两个口都能连接到特定的服务上面,但是如果不加网口指定的话,程序的连接全部都是走千兆口的,万兆口没有使用上。指定网口在网上查了下,可以使用SO_BINDTODEVICE这个套接字选项来指定套接字使用哪个网口。临时写了一个简单server/client来验证下:server: int listen_fd = socket(AF_INET, SOCK_STREAM, 0); if (listen_fd &l原创 2021-05-10 15:06:03 · 3331 阅读 · 0 评论 -
NAT 技术详解
一、什么是NAT?为什么要使用NAT?NAT是将私有地址转换为合法IP地址的技术,通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址。NAT的出现完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 二、NAT的分类STUN标准中,根据内部终端的地址(LocalIP:LocalPort)到NAT出口的公转载 2017-03-22 13:21:35 · 1173 阅读 · 1 评论 -
对于Linux下的服务器编程(1)
在Linux下面,对于海量连接并且每个连接在大部分时间里面都是不活跃的情况下,我们使用Epoll来解决C10K[C10M]问题。1.如何使用Epoll:man Epoll。即为三个系统调用。2.在服务器拥有多个CPU的情况下,我们需要多线程或者多进程来帮助我们提高程序的性能,所以就需要一个主线程和一些工作线程,我们可以在每个线程/进程里面弄一个epoll实例,来监控客户的链接[有两种情况]: ...原创 2018-05-31 16:24:42 · 530 阅读 · 0 评论 -
对于Linux下的服务器编程(2)
对于惊群问题,我们可以使用一个主线程来接受连接,并且把这个连接套接字传递到子进程里面,让子进程来处理这个连接。这种方法需要进程间通信:通过Unix套接字来在进程之间传递套接字。【注意不能使用Unix套接字***直接***传递描述符到子进程,因为虽然父进程和子进程获得的文件描述符相同,但是子进程不一定打开了这个描述符的文件,或者说这两个描述符指向不同的文件,所以必须使用recvmsg/sendmsg...原创 2018-06-19 16:39:24 · 195 阅读 · 0 评论 -
原始套接字 发送 TCP SYN 包
通过原始套接字、setsockopt、IP_HDRINCL套接字选项,我们可以在应用进程里面构造自己的IP包:所以我们在初始化原始套接字之后,可以调用setsockopt函数来开启IP_HDRINCL套接字选项,并且构造自己的IP头,TCP/UDP头,最后再像发送普通包一样调用sendto 、sendmsg等函数发送构造好的数据。1.首先我们可以先得到一个原始套接字,并且设置IP_HDRINCL套...原创 2018-07-13 11:08:07 · 8652 阅读 · 5 评论 -
EPOLL注意点
目录目录accept函数读取套接字里面的所有数据EAGAIN & EWOULDBLOCKaccept函数client = accept(listenFD, (struct sockaddr*)&cli, &len);这里假设监听套接字是非阻塞的(NONBLOCK),边缘触发(ET)的,并且把监听套接字加入到了epoll里面。当监听套接字...原创 2018-08-30 14:38:15 · 161 阅读 · 0 评论