unp1
文章平均质量分 84
TT_love9527
聪与敏,可恃而不可恃也,自恃其聪与敏而不学者,自败者也;
昏也庸,可限而不可限也,不自限其昏与庸而力学不倦者,自力者也。
展开
-
UNP卷一chapter5 tcp client/server
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、netstat命令在网络编程的用法记住一下netstat -tuanlp 查看激活的网络连接,针对tcp、udp协议 tua:tcp、udp、all,n:no domain,p:PID/Progranetstat -s 各协议信息netstat -r 查看路由信息nets...原创 2018-04-30 13:15:09 · 194 阅读 · 0 评论 -
UNP卷一chapter13 daemon和inetd超级服务器
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、守护进程(daemon)在后台运行且不与任何控制终端关联的进程——守护进程。守护进程产生的所有输出通常通过调用syslog函数发送给syslogd守护进程。系统管理员可根据发送消息的守护进程以及消息的严重级别,完全控制这些消息的处理方式。守护进程多种启动方法:i、在系统启动阶...原创 2018-05-20 23:34:43 · 249 阅读 · 0 评论 -
UNP卷一chapter16 非阻塞式I/O
阻塞套接字意味着当发出一个不能立即完成的套接字调用时,其进程将投入睡眠,等待相应操作完成。非阻塞套接字,如果输入操作不能被满足(对于tcp套接字即至少有一个字节的数据可读,对于udp套接字即有一个完整的数据报可读),相应调用将立即返回一个EWOULDBLOCK错误。1、非阻塞读和写:str_cli函数的开发如果套接字发送缓冲区已满,writen调用将会阻塞。在进程阻塞于writen调用期间,可能有...原创 2018-05-25 22:16:37 · 192 阅读 · 0 评论 -
UNP卷一chapter17 ioctl操作
网络程序(特别是服务器程序)经常在程序启动执行后使用ioctl获取所在主机全部网络接口的信息,包括:接口地址、是否支持广播、是否支持多播,等等。所以此部分的ioctl及源码的学习可将其视为一个ifconfig、arp命令的实现过程。1、ioctl函数(POSIX未对它进行标准化,巨伤唉!)#include<unistd.h>int ioctl(int fd, int request,...原创 2018-05-25 23:31:10 · 249 阅读 · 0 评论 -
UNP卷一chapter18 路由套接字
相比较第17章用ioctl函数获取整个路由表,利用sysctl函数也是可以做到而且无需超级用户权限。1、路由套接字上支持3种类型的操作数据链路套接字地址结构(定义在net/if_dl.h文件中,我的机器上没有这文件,需要的可以参考if_dl.h文件)2、介绍路由套接字的相关信息i、通过路由套接字交换的消息类型ii、在路由消息中用于指称套接字地址结构的常值(见书上P385)iii、获取并输出一个路由...原创 2018-05-31 22:30:51 · 290 阅读 · 0 评论 -
UNP卷一chapter20 广播
1、单播、广播及多播等不同寻址方式类型IPv4IPv6TCPUDP所标识接口数递送到接口数单播YYYY一个一个任播*Y尚没有Y一组一组中的一个多播可选YY一组一组中的全体广播YY全体全体表中要点:i、多播支持在IPv4中是可选的,在IPv6中却是必需的ii、IPv6不支持广播。使用广播的任何IPv4应用程序一旦移植到IPv6就必须改用多播重新新编写iii、广播和多播要求用于UDP或原始IP,不能用...原创 2018-06-05 10:34:31 · 224 阅读 · 0 评论 -
UNP卷一chapter24 带外数据
带外数据,也称经加速数据,这也意味着在已经排队等待发送的任何“普通”(也称为“带内”)数据之前发送。每层都有各自带外数据实现,需要注意的是UDP没有实现带外数据,此处只关注tcp的带外数据模型。1、TCP带外数据tcp通过紧急模式实现带外数据的发送。进程以MSG_OOB标志调用send函数写出一个含有ASCII字符a的单字节带外数据。(值 得注意的是,带外数据只有一个字符)send(...原创 2018-06-15 12:47:44 · 208 阅读 · 0 评论 -
UNP卷一chapter26 线程
1、并发服务器中,用线程代替fork2、基本线程函数i、pthread_create函数当一个程序由exec启动时,称为初始线程或主线程的单个线程就创建了,其余线程则由pthread_create函数创建。3、使用线程的str_cli函数及tcp回射服务器程序(存在着多个线程不同步访问一个共享变量问题,这是线程使用中必须要注意的问题)以上知识点来均来自steven先生所著UNP卷一(version...原创 2018-06-21 10:32:31 · 202 阅读 · 0 评论 -
UNP卷一chapter21 组播
1、IPv4的D类地址(组播)和IPv6组播地址IPv4的D类地址(从224.0.0.0到239.255.255.255)是IPv4多播地址。D类地址的低序28位构成多播组ID,整个32位地址称为组地址。其与以太网地址的映射关系见下图。IPv6多播地址的高序字节值为ff,其与以太网地址的映射关系见下图。 若干个特殊的IPv4多播地址:i、224.0.0.1是所有主机组。子网...原创 2018-06-09 10:41:25 · 265 阅读 · 0 评论 -
UNP卷一chapter27 IP选项
本章节讲述了IPv4及IPv6选项,由于IPv6选项的运用并不鲜见,此处只重点介绍IPv4选项的用法,也只是重点关注源路径选项。源路径选项的运用,先是通过往给定的44字节缓冲区中填写路径IP地址及目的IP地址,通过setsockopt()函数给相应套接字设置IPv4选项,接收端通getsockopt()函数读取IP报文首部中选项部分。1、IPv4选项共有10个,如NOP(no-operation,...原创 2018-06-13 23:32:58 · 273 阅读 · 0 评论 -
UNP卷一chapter30 客户与服务器程序设计范式
本章主要讲述9个不同的服务器程序设计范式。重点在于讲述服务器开僻进程池以及线程池。i、预先派生子进程是让服务器在启动阶段调用fork创建一个子进程池。每个客户请求由当前可用子进程池中的某个(闲置)子进程处理。ii、预先创建线程是让服务器在启动阶段创建一个线程池,每个客户由当前可用线程池中的某个(闲置)线程处理。回忆之前所学的客户/服务器程序代码编写,此处将详细罗列各种tcp客户/服务器...原创 2018-06-23 13:28:23 · 225 阅读 · 0 评论 -
UNP卷一chapter15 UNIX协议
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。原创 2018-05-22 19:56:15 · 227 阅读 · 0 评论 -
UNP卷一chapter9/10 基本SCTP套接字编程
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、流控制传输协议(SCTP)sctp在客户和服务器之间提供关联(连接只涉及两个ip地址之间的通信,而关联指代两个系统之间的一次通信,其支持多宿,涉及不止两个地址)。sctp同样提供可靠性、排序、流量控制以及全双工的数据传送。与tcp不同,sctp面向消息;sctp能够在所连接的...原创 2018-05-10 23:15:20 · 276 阅读 · 0 评论 -
UNP卷一chapter14 高级I/O函数
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。本章主要讲述在I/O操作上设置超时的三种方法,然后介绍5种I/O函数中的3种,如何确定套接字接收缓冲区中的数据量,在套接字上使用C的标准I/O函数库,最后讨论等待事的一些高级方法。东西有点杂,并且与标题有点不太符合,将就吸收吧!1、套接字超时i、使用alarm函数和SIGALRM...原创 2018-05-20 11:12:31 · 225 阅读 · 0 评论 -
UNP卷一chapter6 I/O复用:select和poll函数
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、I/O复用模型:通过调用select或poll函数,阻塞在这两个系统调用中的某一个之上,见下图模型解释一下,阻塞I/O、非阻塞I/O、同步I/O、异步I/O阻塞I/O:从调用recvfrom开始到它返回的整段时间内是被阻塞的非阻塞I/O:调用recvfrom开始,只要无数据准...翻译 2018-05-03 21:47:43 · 218 阅读 · 0 评论 -
UNP卷一chapter2相关概念
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、TCP是一个提供面向连接、可靠、无差错、不丢失、不重复、按序到达的数据流传输协议。头部开销为20字节。全双工逻辑信道。支持的上层应用协议为Telnet、Ftp、SMTP、HTTP。2、UDP是一个不面向连接,不可靠的数据报传输协议,尽最大努力交付。头部开销为8字节,支持一对一...翻译 2018-04-24 21:36:25 · 219 阅读 · 0 评论 -
UNP卷一chapter3 Socket字
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、套接字地址结构 IPv4套接字地址结构:struct in_addr { in_addr_t s_addr; //32位IPv4地址,网络字节序};struct sockaddr_in { uint8_t sin_len; //结构大小 sa_fam...原创 2018-04-25 21:02:58 · 179 阅读 · 0 评论 -
UNP卷一chapter7 套接字option
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。本章节读下来,了解套接字的option有哪些,分别对应的level,当然对于通用套接字、IPv4、IPv6、tcp等option还好理解,但针对sctp的option实在没耐心看下去(暂且跳过,后面有用到时再返回来看看)。1、getsockopt函数(获取套接字optio...原创 2018-05-05 21:34:08 · 146 阅读 · 0 评论 -
UNP卷一chapter12 IPv4与IPv6的互操作性
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、双栈主机既存在着IPv4协议栈,又存在着IPv6协议栈,此处只针对客户和服务器使用不同协议的两种情况讨论。2、IPv4客户和IPv6服务器其通信过程如下:(1)IPv6服务器启动后创建一个IPv6的监听套接字,假定服务器把通配地址捆绑到该套接字;(2)IPv4客户调用geth...原创 2018-05-17 19:50:39 · 239 阅读 · 0 评论 -
UNP卷一chapter8 基本UDP套接字编程
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、下图是典型的UDP client/server程序所用套接字函数 需要注意的是,UDP不面向连接,故不需要使用connect函数,但使用connect也是可以的,只是作用不再是三次握手建立连接,其作用表现在检测异步错误(asychronous error)和绑...原创 2018-05-05 23:02:18 · 192 阅读 · 0 评论 -
UNP卷一chapter4 基本的套接字了解
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。由于刚开始接触套接字编程,主要是了解下图中各个套接字的功能和用法。1、socket函数(指定期望的通信协议类型)#include<sys/socket.h>int socket(int family, int type, int protocol);//若成功则为非...翻译 2018-04-28 10:03:56 · 193 阅读 · 0 评论 -
UNIX网络编程—源代码编译问题修复
以下问题的修复均来自各网友大人的博客,所以在列举问题后,会相应附上其博客链接。具体修复细节此处不再阐述。(由于个人修练还在路上,今后遇见的问题一点点往上累积!)0、编译unp1源代码首先需要做的准备工作:见此博文1、UNIX网络编程-sctp编译运行错误及解决,参考博客:解决方法2、unp卷1P553,编译threads/example01.c代码时,需要的选项-lpthread。...原创 2018-05-06 20:53:17 · 268 阅读 · 0 评论 -
UNP卷一chapter11 名字与地址转换
以下知识点来均来自steven先生所著UNP卷一(version3),刚开始学习网络编程,如有不正确之处请大家多多指正。1、域名系统(DNS)资源记录A:A记录把一个主机名映射成一个32位的IPv4地址;AAAA:把一个主机名映射成一个128位的IPv6;PTR:PTR记录把IP地址映射成主机名;MX:MX记录把一个主机指定作为给定主机的“邮件交换器”(mail exchanger)CNAME:C...原创 2018-05-13 21:59:43 · 389 阅读 · 0 评论 -
UNP卷一chapter22 高级UDP套接字编程
1、单播、广播及多播等不同寻址方式类型IPv4IPv6TCPUDP所标识接口数递送到接口数单播YYYY一个一个任播*Y尚没有Y一组一组中的一个多播可选YY一组一组中的全体广播YY全体全体表中要点:i、多播支持在IPv4中是可选的,在IPv6中却是必需的ii、IPv6不支持广播。使用广播的任何IPv4应用程序一旦移植到IPv6就必须改用多播重新新编写iii、广播和多播要求用于UDP或原始IP,不能用...原创 2018-06-12 11:28:58 · 257 阅读 · 0 评论