![](https://img-blog.csdnimg.cn/480f7312fded4637b3b5cfef03bcfd46.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux网络编程
文章平均质量分 96
学习笔记
D@@
这吹不出褶的平静的日子里 ,也在努力发光
展开
-
epoll编程接口
同I/O多路复用和信号驱动一样,Linux的epoll函数可以检查多个文件描述符上的I/O就绪状态,epoll函数的优点:当检查大量文件描述符时,epoll的性能比select和poll函数高很多。epoll既支持水平触发也支持边缘触发,而select和poll支持水平触发,信号驱动只支持边缘触发。epoll性能和信号驱动I/O类似,但epoll可避免复杂的信号处理流程,可以指定检查的事件类型。原创 2022-10-06 10:43:05 · 706 阅读 · 0 评论 -
网络编程-流
带外数据是真正的经加速数据 ,事实上TCP的各通数据和带外数据都使用带0,只有那些让经加边数据(并不是像TCP中的紧急指针而已)先于普通数据发送的协议才使用带1发送经加速数据。当对于不同优先级带的支持随 SVR 4 被增加到流系统时,以下两个g e tm sg和pu tm sg 的变体函数也被间时引入。消息的是套接字函数库和sockmod的组合,或者是XTI函数库和tirnod的组合。所标的三个服务接口定义顺着流上行和下行交换的网络消息的格式。交换的消息,包括消息的格式和每个消息执行的操作。原创 2022-09-12 22:18:50 · 795 阅读 · 0 评论 -
网络编程之线程
fork昂贵。fork要把父进程的内存映像复制到子进程,并在子进程中复制所有描述符,现在使用写时复制避免这种状况。fork返回之后父子进程之间信息的传递需要进程通信机制。调用fork之前父进程向尚未存在的子进程传递信息相当容易,因为子进程将从父进程数据空间及所有描述符的一个副本开始运行。然而从子进程往父进程返回信息却比较费力.由于线程的速度快能很好解决上面的问题。同一进程内的所有线程共享相同的全局内存。这使得线程之间易于共享信息,然而伴随这种简易性而来的却是同步问题。原创 2022-09-12 20:15:30 · 193 阅读 · 0 评论 -
密钥套接字
IP安全体系结构(IPsec)的引入,私钥体系加密和认证秘钥的管理需要一套标准机制。秘钥管理API,可用于安全体系结构和其他网络安全服务。API创建新的协议族PF_KEY`域。支持原始套接字。秘钥管理套接字需要特权。SA(安全关联)为分组提供安全服务,描述了源地址和目的地址、机制以及秘钥素材的组合。存放在一个系统中所有SA构成安全关联数据库(SADB)。SPDB(安全策略数据库)描述分组流通的需求,如何执行所需的安全步骤,含有所用的算法和秘钥。PF_KEY可以维护SADB,对SPDB无能为力。原创 2022-09-11 21:12:55 · 600 阅读 · 0 评论 -
路由套接字
AF_ROUTE域对访问内核中的路由子系统的接口做了清理。在路由域中支持的唯一一种套接字是原始套接字。路由套接字支持三种类型的操作。进程通过写到路由套接字向内核发送消息(路径的增加和删除采用这种方式实现)。进程通过读入路由套接字接收来自内核的消息(内核采用这种操作通知进程已收到并处理一个ICMP重定向消息,或请求外部路由进程解析一个路径)。进程调用sysctl函数获取路由表或列出所有已配置的接口。前两种操作可以复合使用。原创 2022-09-11 17:22:46 · 795 阅读 · 0 评论 -
守护进程和inetd超级服务器
守护进程是在后台运行且不与任何控制终端关联的进程。Unix系统通常由很多守护进程在后台运行(约在20到50个的量级),执行不同的管理任务。守护进程启动方法:由系统初始化脚本启动,通常位于/etc/rc或/etc目录下,由这些脚本启动的守护进程一开始拥有超级用户特权。许多网络服务器由inetd超级服务器启动。cron守护进程定期执行一些程序,由它执行的程序同样作为守护进程运行。at命令指定将来某个时刻的程序执行。当这些程序的执行时间到了由cron来启动。可以从用户终端前台和后台启动。原创 2022-09-10 17:53:29 · 527 阅读 · 0 评论 -
高级SCTP套接字
使用分离的SCTP流传输紧急数据多少类似TCP的紧急数据的语义,不过难以准确复制这个特性。该值加上当前重传计时器的值,再加上 一 个随机的抖动值就构成了心搏的间隔时间。依赖客户端关闭关联有时客户端不发送数据,服务器不得不将资源分配给从不使用这些资源的客户,会造成对于SCTP实现的拒绝服务器攻击。函数调用允许应用进程捆绑多个地址,所有地址必须拥有相同的端口,若调用过bind,那么所用端口是调用bind()时指定的端口。SCTP通常提供可靠的有序数据传输服务,不过也提供可靠的无序数据传输服务。原创 2022-09-09 21:38:18 · 602 阅读 · 0 评论 -
流控制传输协议(SCTP)
SCTP在客户和服务器之间提供关联(association),并像TCP那样给应用提供可靠性、排序、流性控制以及全双工的数据传送。SCTP中使用“关联”一词取代“连接” 是为了避免这样的内涵:一个连接只涉及两个IP地址之间的通信。一个关联指代两个系统之间的一次通信,它可能因为SCTP支持多宿而涉及不止两个地址。与TCP不同的是,SCTP是面向消息的(message-oriented)。它提供各个记录的按序递送服务。与UDP一样,由发送端写入的每条记录的长度随数据一道传递给接收端应用。原创 2022-09-09 17:38:43 · 956 阅读 · 0 评论 -
Linux内核中网络部分结构以及分布
Documentation:这个目录下面没有内核的代码,有一套有用的内核文档。其中文档质量良势不齐,有很多内核文档的质量很优秀并且相当完整,例如文件系统;但是有的则完全没有文档,例如进程调度。在这个目录里不时可以发现有用的东西。arch: 此目录下的所有子目录的东西都是体系结构特有的代码。每个体系结构特有的目录下面至少包含 3 个子目录:kernel,不同体系结构内核特有的实现方式,如信号量、计时器、SMP 等;原创 2022-09-02 20:24:30 · 1146 阅读 · 0 评论 -
IPv6简介
IPv6的结构定义在文件中。原创 2022-09-01 23:37:35 · 939 阅读 · 0 评论 -
服务器模型选择
循环服务器指的是对于客户端的请求和连接,服务器在处理完毕一个后在处理另一个,即串行处理客户端的请求。服务器又叫迭代服务器。循环服务器常用于UDP服务程序。UDP协议的循环服务器如下所示,在recv()函数和处理数据这两种业务之间轮询处理。2.TCP循环服务器相当于UDP,TCP协议的循环服务器的主处理过程中多一个accept()的过程,服务器在此等待客户端的连接,由于accept()函数为阻塞函数,所以通常情况,服务器会在此处等待。对accept()函数的不同处理是区别各种服务器类型的一个重要依据。原创 2022-08-31 21:47:38 · 300 阅读 · 0 评论 -
原始套接字
要解决上面这些问题需要原始套接字。原始套接字主要应用在底层网络编程上,之前的TCP、UDP的套接字称为标准套接字,下图所示为标准套接字与原始套接字之间的关系。标准套接字与网络协议栈的TCP、UDP层打交道,而原始套接字则与IP层级网络协议栈核心打交道。原始套接字提供以下3种标准套接字不具备的功能。使用原始套接字可以读/写分组。例:ping程序就使用原始套接字发送ICMP回显请求,并接受ICMP回显应答。用于多播的守护程序,同样适用原始套接字来发送和接收IGMP分组。上述功能同样允许使用构造的应用程序完全作原创 2022-08-31 00:15:28 · 3286 阅读 · 0 评论 -
套接字选项
函数原型:选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当对套接字选项进行操作时,必须给出选项所处的层和选项的名称。为了操作套接字层的选项,应该将层的值指定为。为了操作其他层的选项,必须给出控制选项的协议类型号。例如,为了表示一个选项由TCP 协议解析,层应该设定为协议号 TCP。getsockopt()函数和 setsockopt()函数的返回值在函数执行成功时,返回值为 0; 函数执行出错时,返回值为-1, 错误代码可以从 errno 中获得,其含义如下所述。EBADF:参数 s 不是有效原创 2022-08-20 18:32:07 · 1026 阅读 · 0 评论 -
高级套接字
以太网的数据结构如下图所示,总长度最大为1518字节,最小为64字节,其中目标地址的MAC为6字节,源地址MAC为6字节,协议类型为2字节,含有46~1500字节的数据,尾部为4个字节的CRC校验和。**多播(组播)**将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同 一 分组中进行,其他的主机没有加入此分组不能收发对应的数据。的方式,广播由一个主机发向一个网络上所有主机的操作方式,例如:在一个局域网内进行广播,同一子网内的所有主机都可以接收到广播发送的数据。......原创 2022-08-15 08:56:01 · 513 阅读 · 0 评论 -
基于UDP协议的接收和发送
路由器的存储转发可能造成数据顺序的更改,如下图所示。下图所示,主机C向主机S发送数据包0、数据包1、数据包2、数据包3, 各个数据包途中经过路由器A、路由器B、路由器C, 先后到达主机S, 在主机S端的循序仍然为数据包0、数据包1、数据包2、数据包3, 即发送数据时的顺序和接收数据时的顺序是一 致的。下图为TCP 连接中发送数据报文的过程,主机C 发送的数据经过路由器,到达主机S后,主机S要发送一 个接收到此数据报文的响应,主机C 要对主机S 的响应进行记录,直到之前发送的数据报文1已经被主机S接收到。..原创 2022-08-10 10:06:10 · 6376 阅读 · 0 评论 -
数据的IO和复用
非阻塞方式的操作与阻塞方式的操作最大的不同点是函数的调用立刻返回,不管数据是否成功读取或者成功写入。//s:套接字文件描述符;//F_SETFL命令将套接字s设置为非阻塞方式后,在进行读写操作就可以正常返回。...原创 2022-08-06 20:23:28 · 443 阅读 · 0 评论 -
服务器和客户端信息的获取
对于小端字节序系统,需要将字节在变量中的顺序进行交换,例如16b的变量交换高低两个字节的位置,32b的变量将0、1、2、3位置的字节按照0和2、1和3字节进行交换的方法。32b的变量进行字节序交换的方法,在小端字节序主机系统中,进行字节序交换时,第0个字节的值与第3个字节的值进行交换,第1个字节的值与第2个字节的值进行交换。如图所示,成员p_name指向一块内存,其中存放了协议的官方名称。以上函数的作用是对字节进行交换,在大端字节序系统上,上述的字节序转换函数的实际实现可能是空的,即不进行字节序的转换;..原创 2022-07-30 23:09:17 · 704 阅读 · 0 评论 -
Linux -TCP网络编程基础
Linux -TCP网络编程基础一.套接字编程基础知识1.套接字地址结构2.用户层和内核层交互过程二.TCP网络编程流程1.TCP网络编程架构2.创建网络插口函数socket()3.绑定一个地址端口对bind()4.监听本地端口listen5.接受一个网络请求accept()6.连接目标网络服务器connect()7.写入数据函数write()8.读取数据函数read()9.关闭套接字函数close()三.服务器/客户端的简单例子1.例子功能描述2.服务器网络程序3.服务器读取和显示字符串4.客户端的网络程原创 2022-06-04 22:41:09 · 927 阅读 · 1 评论 -
应用层网络服务程序简介
应用层网络服务程序简介一.HTTP协议和服务1.HTTP协议概述2.HTTP协议的基本过程二.FTP协议和服务1.FTP协议概述2.FTP协议的工作模式3.FTP协议的传输方式4.一个简单的FTP过程5.常用的FTP工具三.TELNET协议和服务1.远程登录的基本概念2.使用TELNET协议进行远程登录的工作过程3.TELNET协议四.NFS协议和服务1.安装NFS服务器和客户端2.服务器端的设定3.客户端的操作4.showmount命令五.自定义网络服务1.xinetd/inetd2.xinetd服务配置原创 2022-05-23 23:58:32 · 791 阅读 · 0 评论 -
TCP/IP协议族简介
TCP/IP协议族简介OSI网络分层介绍OSI网络分层结构OSI的7层网络结构OSI参考模型中的数据传输TCP/IP协议栈TCP/IP协议栈参考模型主机到网络层协议IP协议网际控制报文协议(ICMP)传输控制协议(TCP)用户数据报文协议(UDP)地址解析协议(ARP)IP地址分类与TCP/UDP端口因特网中IP地址的分类子网掩码(subnetmaskaddress)IP地址的配置端口主机字节序和网络字节序字节序的含义网络字节序的转换OSI网络分层介绍OSI网络分层结构OSI的7层网络结构OSI参考原创 2022-05-19 13:54:33 · 1348 阅读 · 0 评论 -
Linux 程序、进程和线程
程序、进程和线程一、程序、进程和线程的概念程序和进程的差别Linux环境下的进程进程和线程二、进程产生的方式进程号进程复制fork()函数system()函数方式进程执行exec()函数系列所有用户态进程的产生进程init三、进程间通信和同步半双工管道命名管道消息队列消息队列的一个例子信号量共享内存信号四、 Linux下的线程多线程编程实例Linux下线程创建函数pthread_create()线程的结束函数pthread_join()和函数pthread_exit()线程的属性线程间的互斥线程中使用信号量原创 2022-05-15 17:00:34 · 2650 阅读 · 0 评论 -
文件系统简介
文件系统简介Linux下的文件系统文件的通用操作方法NFS协议和服务自定义网络服务文件的通用操作方法NFS协议和服务Linux下的文件系统文件系统狭义的概念是一 种对存储设备上的数据进行组织和控制的机制。在Linux 下(当然包含UNIX), 文件的含义比较广泛,文件的概念不仅仅包含通常意义的保存在磁盘的各种格式的数据,还包含目录,甚至各种各样的设备,如键盘、鼠标、网卡、标准输出等,引用一 句经典的话 ''UNIX 下一 切皆文件”。Linux下文件的内涵Linux下的文件系统是对复杂系统进行合理抽原创 2022-05-08 16:36:57 · 1438 阅读 · 0 评论 -
Linux编程环境
Linux编程环境Linux环境下的编辑器Vim使用简介使用Vim建立文件使用Vim编辑文本Vim的格式设置Linux下的GCC环境编辑器Makefile文件简介用GDB调试程序Linux环境下的编辑器在Linux环境下有很多编译器,例如基于行的编辑器ed和ex, 基于文本的编辑器Vim、 Emacs等。使用文本编辑器可以帮助用户翻页、移动光标、查找字符、替换字符、删除等操作。本节中对Vim编辑器进行详细的介绍,并简单介绍其他的编辑器。Vim使用简介Vi 是UNIX系统下最通用的文本编辑器。Vi不是原创 2022-05-05 16:20:45 · 1634 阅读 · 0 评论 -
Linux操作系统概述
Linux操作系统概述Linux发展历史Linux的发展要素Linux与UNIX的异同操作系统类型选择和内核版本的选择Linux的系统架构Linux内核的主要模块Linux的文件结构Linux发展历史Linux操作系统于1991年诞生,目前已经成为主流的操作系统之 一 。其版本从开始的0.01版本到目前的3.9.4版本经历了二十多年的发展,成为目前在服务器、嵌入式系统和个人计算机等多个方面得到广泛应用的操作系统。Linux的发展要素Linux操作系统是UNIX的 一 种典型的克隆系统。在 Linux原创 2022-05-01 08:00:00 · 2245 阅读 · 0 评论