老王不让用
芝兰生于幽谷,不以无人而不芳; 君子修身立德,不为穷困而改节
展开
-
ifconfig 命令详解
参数说明-a 显示全部接口信息[root@controller hello]# ifconfig -aenp0s3: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500 inet 192.168.10.202 netmask 255.255.255.0 broadcast 192.168.10.255 inet6 fe80::a00:27ff:febc:4068 prefixl转载 2022-03-18 17:04:01 · 7137 阅读 · 0 评论 -
Linux网络编程 之多播、组播
目录1 概述2 多播地址3 多播地址与 MAC 地址的映射3 Linux多播编程3.1 套接口选项3.2 组播包接收3.3组播包发送3.4测试结果1 概述单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。IP 多播(也称多址广播或组播)技术,是一种允..转载 2019-05-08 14:58:31 · 1674 阅读 · 0 评论 -
linux netlink实现机制:通信
目录1 netlink 通信数据结构1.1 netlink 消息报头:structnlmsghdr1.2 socket 消息数据包结构:struct msghdr1.3 netlink消息处理宏2 应用层向内核发送netlink消息3内核向应用层发送netlink消息4 应用层接收内核netlink消息1 netlink 通信数据结构1.1 netlink 消息报头:structnlmsghdrstruct nlmsghdr { __u32 nlmsg_l...转载 2022-02-10 19:57:19 · 2235 阅读 · 0 评论 -
linux netlink实现机制:注册、创建
目录1 netlink 概述2 Netlink子系统初始化3 内核Netlink套接字3.1 内核netlink配置结构:struct netlink_kernel_cfg3.2 netlink属性头:struct nlattr3.3 netlink有效性策略:struct nla_policy3.4 netlink套接字结构:netlink_sock3.5 创建内核netlink套接字4 应用层 Netlink 套接字4.1 套接字地址数据结构 sockaddr_n转载 2022-02-10 19:09:03 · 2218 阅读 · 0 评论 -
高级I/O:readv和writev函数
目录1、减少系统调用2、readv / writev 使用3、代码演练3.1、writev3.2、readv1、减少系统调用使用read()将数据读到不连续的内存、使用write()将不连续的内存发送出去,要经过多次的调用read、write。如果要从文件中读一片连续的数据至进程的不同区域,有两种方案:①使用read()一次将它们读至一个较大的缓冲区中,然后将它们分成若干部分复制到不同的区域; ②调用read()若干次分批将它们读至不同区域。同样,如果想将程序中不同区域的数据块连转载 2020-08-29 16:37:31 · 2300 阅读 · 0 评论 -
socket编程:多路复用在水平模式监听写事件(腾讯面试题)
腾讯后台开发的面试题:Linux 使用 select 或者 epoll模型(LT),当socket可写时,会不停的触发socket可写的事件,如何处理?解释:LT模式下不需要读写的文件描述符仍会不停地返回就绪,这样就会影响我们监测需要关心的文件描述符的效率(因为我们需要挨个遍历并处理已经就绪的描述符)。对于写事件而言只要写缓冲区不为满(大多数情况也是这样)。那么select、epoll_wait 就会一直返回写就绪状态,此时我们很可能不需要进行写操作即发送数据操作,之后 select、epoll_wai原创 2020-08-28 17:10:21 · 551 阅读 · 0 评论 -
socket编程:select、poll、epoll 区别
https://www.cnblogs.com/aspirant/p/9166944.html1.1.3 网络编程相关基础问题1: 网络IO模型有哪些?5种网络I/O模型,阻塞、非阻塞、I/O多路复用、信号驱动IO、异步I/O。从数据从I/O设备到内核态,内核态到进程用户态分别描述这5种的区别。问题2: I/O多路复用中select/poll/epoll的区别?从select...转载 2020-05-10 18:57:07 · 1827 阅读 · 1 评论 -
socket编程:信号驱动式I/O实现
信号驱动式 I/O 的本质就是:进程预先告知内核当某个描述符发生事件时,内核会向该进程发送SIGIO信号量通知进程,进程可在信号处理函数中进行处理。 进程可以通过 fcntl 打开 O_ASYNC标 志或 ioctl 打开 FIOASYNC 标志来通知内核,二者的区别是一些系统不支持 fcntl,所以应尽量使用 ioctl 。对于 socket 产生 SIGIO的条件:TCP套接字:1.监听套接字上有新连接请求完成2.某个断连请求发起3.某个断连请求完成4.数据到...转载 2020-05-09 10:47:03 · 715 阅读 · 0 评论 -
Linux:5 种 I/O 模型
目录前言1、5种IO模型1.1、阻塞IO模型1.2、非阻塞IO模型1.3、IO复用模型1.4、信号驱动IO模型1.5、异步IO模型2、各种 I/O 模型比较2.1、阻塞IO调用和非阻塞IO调用、阻塞IO模型和非阻塞IO模型2.2、同步IO和异步IO前言 IO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整 IO 分为两阶段:用户进程空间<-->内核空间、内核空间<--&g...转载 2020-05-08 20:02:44 · 546 阅读 · 0 评论 -
socket编程:epoll 的水平触发与边缘触发
1、触发定义Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下次调用 epoll_wait()时,它还会通知你在上没读写完的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!!!如果系统中有大量你不需要读写的就绪文件描述符,而它们每次都会返...原创 2020-05-07 12:08:56 · 2934 阅读 · 0 评论 -
socket编程:epoll多路复用
/* *url:http://www.cnblogs.com/yuuyuu/p/5103744.html * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#incl...转载 2020-04-27 22:26:30 · 303 阅读 · 0 评论 -
socket编程:connect函数
网络编程socket api存在一批核心接口,而这一批核心接口就是几个看似简单的函数,尽管实际上这些函数没有一个是简单。connect函数就是这些核心接口的一个函数,它完成主动连接的过程。connect函数的功能是完成一个有连接协议的连接过程,对于TCP来说就是那个三路握手过程,它的函数原型:#include<sys/socket.h>#include<sys/typ......转载 2020-03-10 10:50:51 · 4379 阅读 · 0 评论 -
socket编程:recv/send 和 recv/recvfrom返回值及处理
1、recv 和 recvfrom =0 当返回值为0时,表示对端已经关闭了这个链接,我们应该自己关闭这个链接,即close(sockfd)。另外因为异步操作会用select或epoll做事件触发,所以: 1、如果使用select,应该使用FD_CLR(sockfd,fd_set)将sockfd清除掉,不再监听。 2、如果使用epoll,系统会自己将 ...转载 2020-03-09 19:57:14 · 14893 阅读 · 1 评论 -
socket编程:accept接口使用
目录1、功能概述2、参数说明3、返回值3.1、返回成功3.2、返回失败3.3、socket 和 accept 返回值的关系1、功能概述accept 接口功能:一言以蔽之,接收一个套接字中已建立的连接。accpet 接口API说明接口格式如下:#include <sys/types.h>#include <sys/socket.h>...原创 2020-03-09 16:42:50 · 2164 阅读 · 0 评论 -
socket编程:阻塞式、非阻塞 I/O模型实现
目录1、IO工作模式分类2、socket中的网络I/O工作模式原理2.1、阻塞式I/O模型2.2、非阻塞式I/O模型2.3、I/O复用模型2.4、异步I/O模型2.5、IO工作阶段3、IO工作模式实验3.1、阻塞、非阻塞式I/O3.2、I/O复用1、IO工作模式分类Bio(BlockingI/O):默认工作模式,阻塞式I/O操作,没有任何优化技术处理...原创 2020-03-09 13:58:13 · 715 阅读 · 0 评论 -
socket编程:socket接口创建套接字(原始套接字)使用说明
转载:https://blog.csdn.net/s2603898260/article/details/850200061.原始套接字使用场景我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自己的数据,即每个程序只能收到来自该程序绑定的端口的数据。收到的数据往往只包括应用层数据,原有的头部信息在传递过程中被隐藏了。某些情况下我们需要执行更底层的操作,比如...转载 2019-05-16 09:37:15 · 3291 阅读 · 0 评论 -
socket编程:bind 函数说明
int bind( SOCKET s, const struct sockaddr FAR *name, int namelen );(1)这个函数接收三个参数。第一个参数s指定要绑定的套接字,第二个参数指定了该套接字的本地地址信息,是指向sockaddr结构的指针变量,由于该地址结构是为所有的地址家族准备的,这个结构可能(通常会)随所使用的网络协议不同而不同,所以,要用第三个参数指定该地址结...原创 2019-05-06 10:44:28 · 1474 阅读 · 0 评论 -
socket编程:select 实现多路复用
目录1、socket流分类1.1、阻塞模式1.2、非阻塞模式2、多路复用2.1、select相关API介绍2.2、select 函数相关的几个宏2.3、select使用范例3、select实现机制3.1、select 模型3.2、FD_ZERO、FD_SET、FD_ISSET用法4、代码演练4.1、服务器4.2、客户端4.3、依赖的头文件(s...原创 2021-01-28 10:50:48 · 580 阅读 · 0 评论