unp学习笔记——Chapter1】的更多相关文章

1.发现网络拓扑的几个重要的命令 (1).netstat -i 提供网络接口的信息.我们还指定-n 标志以输出数值地址,而不是试图把它们反向解析成名字.netstat -r 展示路由表. dzhwen@deng:~/unpv13e/intro$ netstat -ni Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 BMU eth1 BMRU l…
UNIX域协议是在单个主机上执行客户/服务器通信的一种方法 使用UNIX域套接字有以下3个理由: 1.UNIX域套接字往往比通信两端位于同一个主机的TCP套接字快出一倍 2.UNIX域套接字可用于在同一个主机上的不同进程之间传递描述符 3.UNIX域套接字较新的实现把客户的凭证提供给服务器,从而能够提供额外的安全检查措施 UNIX域中用于标识客户和服务器的协议地址是普通文件系统的路径名.这些路径名不是普通的UNIX文件: 除非他们和UNIX域套接字关联起来,否则无法读写这些文件. 可以查看之前a…
本章讨论我们笼统地归为“高级I/O”的各个函数和技术 套接字超时 有3种方法在涉及套接字的I/O操作上设置超时 1.调用alarm,它在指定超时时期满时产生SIGALRM信号 2.在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在read或write调用上 3.使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项. 使用SIGALRM为connect设置超时 下面给出我们的connect_timeo函数,它以调用者指定的超时上限调用connect /…
I/O模型 首先我们将查看UNIX下可用的5种I/O模型的基本区别: 1.阻塞式I/O 2.非阻塞式I/O 3.I/O复用(select和poll) 4.信号驱动式I/O(SIGIO) 5.异步I/O(POSIX的aio_系列函数) 阻塞式I/O模型 最流行的I/O模型是阻塞式I/O模型,下面以数据报套接字作为例子,有如下的情形 非阻塞式I/O模型 进程把一个套接字设置成非阻塞式通知内核:当锁请求的I/O操作非得把本进程投入睡眠才能完成时,不要把本进程投入睡眠,而是返回一个错误 前三次调用rec…
我们将在本章使用前一章中介绍的基本函数编写一个完整的TCP客户/服务器程序实例 这个简单得例子是执行如下步骤的一个回射服务器: TCP回射服务器程序 #include "unp.h" int main(int argc, char **argv) { int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET…
线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还共享: 1.进程指令 2.大多数数据 3.打开的文件(即描述符) 4.信号处理函数和信号处置 5.当前工作目录 6.用户ID和组ID 不过每个线程有各自的: 1.线程ID 2.寄存器集合,包括程序计数器和栈指针 3.栈(用于存放局部变量和返回地址) 4.errno 5.信号掩码 6.优先级 基本线程…
有多种方法获取和设置影响套接字的选项: 1.getsockopt和setsockopt函数 2.fcntl函数 3.ioctl函数 getsockopt和setsockopt函数 这两个函数仅用于套接字 #include <sys/socket.h> int getsockopt(int sockfd,int level,int option,void *restrict optval,socklen_t restrict optlen); int setsockopt(int sockfd,…
TCP测试用客户程序 #include "unp.h" #define MAXN 16384 /* max # bytes to request from server */ int main(int argc, char **argv) { int i, j, fd, nchildren, nloops, nbytes; pid_t pid; ssize_t n; char request[MAXLINE], reply[MAXN]; ) err_quit("usage:…
ioctl相当于一个杂物箱,它一直作为那些不适合归入其他精细定义类别的特性的系统接口. 本章笔记先放着,到时候有需要再看 ioctl函数 #include <unistd.h> int ioctl(int fd,int request,.../* void *arg */); 其中第三个参数总是一个指针,但指针的类型依赖于request参数. 我们可以把网络相关的请求(request)划分为6类: 1.套接字操作 2.文件操作 3.接口操作 4.ARP高速缓存操作 5.路由表操作 6.流系统…
关于守护进程可以查看apue的笔记 http://www.cnblogs.com/runnyu/p/4645046.html daemon_init函数 下面给出名为daemon_init函数,通过调用它(通常从服务器程序中),我们能够把一个普通进程转变为守护进程 #include "unp.h" #include <syslog.h> #define MAXFD 64 extern int daemon_proc; /* defined in error.c */ int…
信号驱动式I/O是指进程预先告知内核,使得当某个描述符发生某事时,内核使用信号通知相关进程. 套接字的信号驱动式I/O 针对一个套接字使用信号驱动式I/O(SIGIO)要求进程执行以下3个步骤: 1.建立SIGIO信号的信号处理函数 2.设置该套接字的属主,通常使用fcntl的F_SETOWN命令设置 3.开启该套接字的信号驱动式I/O,通常通过使用fcntl的F_SETFL命令打开O_ASYNC标志完成 对于UDP套接字的SIGIO信号 在UDP上使用信号驱动式I/O是简单得.SIGIO信号在…
套接字的默认状态时阻塞的 可能阻塞的套接字调用可分为以下4类: 1.输入操作,包括read.readv.recv.recvfrom和recvmsg. 2.输入操作,包括write.writev.send.sendto和sendmsg. 3.接受外来连接,即accept函数. 4.发起外出连接,即用于TCP的connect函数(该函数一直要等到客户收到对于自己的SYN的ACK为止才返回) 非阻塞connect 当在一个非阻塞的TCP套接字上调用connect时,connect将立即返回一个EINP…
域名系统 域名系统(Domain Name System,DNS)主要用于主机名字与IP地址之间的映射. 主机名既可以是一个简单得名字,如solaris,也可以是一个全限定域名,如solaris.unpbook.com. 资源记录 DNS中的条目称为资源记录(resource record,RR) A记录把一个主机名映射成一个32位的IPv4的地址. AAAA记录把一个主机名映射成一个128位的IPv6地址. PTR记录把IP地址映射成主机名. MX记录把一个主机指定作为主机的“邮件交换器(ma…
UDP应用程序客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须指定目的地的地址作为参数. 下图给出典型的UDP客户/服务器程序的函数调用. recvfrom和sendto函数 这两个函数类似于标准的read和write函数,不过需要3个额外的参数 #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,struct sockaddr *sr…
本章讲解编写一个完整的TCP客户/服务器程序所需要的基本套接字函数. socket函数 #include <sys/socket.h> int socket(int family,int type,int protocol); //返回:成功则为非负描述符,若出错则为-1 family参数指明协议族,它是如下某个常值 type参数指明套接字类型,它是如下某个常值 protocol参数为下面某个协议类型常值,或者设为0,以选择所给定family和type组合的系统默认值 下图展示了基本TCP客户…
本章开始讲解套接字API. 套接字地址结构 IPv4套接字地址结构 它以sockaddr_in命名,下面给出它的POSIX定义 struct in_addr { in_addr_t s_addr; }; stuct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; struct in_addr sin_addr; ]; }; POSIX规范只需要这个结构中的3个字段:s…
本章的焦点是传输层,包括TCP.UDP和SCTP. 绝大多数客户/服务器网络应用使用TCP或UDP.SCTP是一个较新的协议. UDP是一个简单的.不可靠的数据报协议.而TCP是一个复杂.可靠的字节流协议. 这里重点放在TCP中. 用户数据报协议(UNP) 应用程序往UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地(面向非连接的). UDP不保证UDP数据报会达到最终目的地,不保证各个数据报的先后顺序跨网路后保持不变,也不…
环境搭建 1.下载解压unpv13e.tar.gz 2.进入目录执行 ./configurecd lib //进入lib目录make //执行make命令 3.将生成的libunp.a静态库复制到/usr/lib/和/usr/lib64/中 cd .. //返回unpv13e目录sudo cp libunp.a /usr/lib sudo cp libunp.a /usr/lib64 4.修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便 vi l…
1 概述 之间的学习中发现,传统的阻塞式系统调用不仅浪费进程运行时间,而且会带来狠毒问题.因此进程需要有一种预先告知内核的能力,使得内核一旦发现进程指定的一个或者多个I/O条件就绪,它就通知进程.这个能力称为I/O复用,是由select和poll函数支持的. I/O复用的典型使用场景: 当客户处理多个描述符(通常是交互输入和网路套接字)时,必须使用I/O复用 一个客户同时处理多个套接字 如果一个TCP服务器既要处理监听套接字,也要处理已连接套接字,一般就要使用I/O复用 如果一个服务器既要处理T…
1 概述 TCP和UDP网络编程存在一些本质的差异,主要是由于传输层的差别:UDP是无连接的不可靠的数据报协议,而TCP是面向连接的字节流协议. 下图是典型的UDP客户端和服务器之间的通信流程.客户不与服务器建立连接,而是只管使用sendto函数.服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待某个客户的数据到达. 本章学习用于UDP套接字的两个新函数recvfrom和sendto,并使用UDP重写ECHO程序.还将学习connect函数在UDP套接字中的用法,同时理解异步错误…
1 概述 编写一个简单的ECHO(回复)程序来分析TCP客户和服务器之间的通信流程,要求如下: 客户从标准输入读入一行文本,并发送给服务器 服务器从网络输入读取这个文本,并回复给客户 客户从网络输入读取这个回复,并显示在标准输出上 通过这样一个简单的例子来学习TCP协议的基本流程,同时探讨在实际过程中可能发生的意外情况,从而更深层次的理解其工作原理: 客户和服务器启动时发生了什么? 客户正常终止发生了什么? 若服务器进程在客户之前终止,则客户会发生什么? 若服务器主机崩溃,则客户会发生什么? ……
我自幼时自觉聪慧,但实缺恒力,遂二十余岁却一事无成,亦无一技傍身,实属惭愧. 少时便仰慕于新兴世界之IT技术,然因惰性,未曾一日习学. 今陷此困境,聊以度日,反无端生出些许时间,便志要潜心研学,不求能成大器,只愿能习得一技或灭吾性之惰躁,实属努力不费也. 遂记博客,以观众人,亦作自省. 1.语法突出:在编写时编辑器会将不同类型的内容用不同的颜色进行区分,比如print与message=与“hello python world”与打印出来的hello python world分别使用蓝色.黑色.红…
路由套接字上支持3种类型的操作 1). 进程能通过写路由套接字向内核发消息. 2). 进程能通过路由套接字从内核读消息. 3). 进程可以用sysctl函数得到路由表或列出所有已配置的接口. 数据链路套接字地址结构 通过路由套接字返回的一些消息中含有作为返回值给出的数据链路套接字地址结构 struct sockaddr_dl { uint8_t sdl_len; sa_family_t sdl_family; /* AF_LINK */ uint16_t sdl_index; /* system…
1 套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数.每个协议族都定义了自己的套接字结构.这些套接字的结构以sockaddr_开头,以每个协议族唯一的后缀名结尾. 1.1 IPV4套接字地址结构 IPV4套接字结构通常被称为网际套接字结构,以sockaddr_in命名,定义在<netinet/in.h>头文件中. struct sockaddr_in { uint8_t sin_len; //数据结构长度(16) sa_family_t sin_family; //A…
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u5B8B%u4F53" 就是\5B8B\4F53 font-family: 中文,英文,最好的是unicode编码 eg. font-family: "SimSun","SimHei",sans-serif; 字体名称 英文名称 Unicode 编码 宋体 S…
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为http host: 定义域主机(http的默认主机是www) domain: 定义因特网域名 port: 定义端口号,默认是端口80 path: 网页在服务器上的路径 filename: 文件名称 htm & html 文件名的区别: 之前的老版本系统只支持显示3位的文件名后缀,所以使用htm 现…
本文转载至 http://blog.chinaunix.net/uid-16979052-id-3350958.html 分类:  原文地址:TCP协议和socket API 学习笔记 作者:gilbertjuly  • TCP包头 ACK为1时,确认序号有效,表示期望收到的下一个序号,是上次成功收到的字节序加1. SYN, FIN都占用一个序号. • TCP连接的建立 client通过connect()来建立TCP连接,connect()会发送SYN报文: server通过bind().lis…
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者服务器 一.安装webpack 你需要之前安装node.js $ npm install webpack -g 安装成功后,便可以使用webpack命令行了. ok,开始工作! 二.新建一个空目录,名字为myApp,文件如下 entry.js document.write("It works.&qu…
1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 3.  UML类图 4.  思维导图 (右键查看图片可放大) 5.  PHP代码 我已经把有关这部分PHP代码,上传到git.oschina.net上,可以在 https://git.oschina.net/andywww/myTest 的文件夹template_Study下看到相关的完整代码. templa…
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UML类图解析: 4.PHP代码: 我已经把有关这部分PHP代码,上传到git.oschina.net上,可以在 https://git.oschina.net/andywww/myTest 的文件夹 login1下看到相关的完整代码. (完.)…