会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要的部分. http://blog.csdn.net/yusiguyuan/article/details/11760187 UNIX网络编程---简介…
认知套接口编程接口 理解原始套接口(raw socket)的概念   值得注意的是,客户和服务器是典型的用户进程,而TCP和IP协议则通常是系统内核协议栈的一部分. 上图中在TCP和UDP之间留有间隙,用于指出应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket). UNIX网络编程中所说的套接口编程接口是应用层到传输层的接口.UNIX网络编程的焦点是:如何使用套接口编写使用TCP或UDP的网络应用程序.…
编写一个完整的TCP客户和服务器程序所需要的基本套接口函数: 1.socket函数(客户端.服务器端都必须调用) 参数family指明协议族(family),该参数也往往被称为协议域(domain).所以有的书上声明如下: 而且对于socket函数第一个参数,在不同书籍上可能会看到不同前缀的取值常量列表,如下两图所示: AF_xxx与PF_xxx: AF_前缀表地址族,PF_前缀表示协议族.历史上曾有这样的想法:单个协议族可以支持多个地址族,PF_值用来创建套接口,而AF_值用于套接口地址结构.…
概述 使用UDP编写的一些流行的应用程序有:DNS(域名系统).NFS(网络文件系统)和SNMP(简单网络管理协议). 如下图所示,给出了典型的UDP客户/服务器程序的函数调用: 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须作为参数指定目的地(即服务器)的地址.类似地,服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待来自某个客户的数据到达.recvfrom将与所接收的数据报一道返回客户的协议地址,因此服务器可以把响应发送给正确的客户. rec…
概述 有很多方法来获取和设置影响套接口的选项: getsockopt和setsockopt函数 fcntl函数 ioctl函数 getsockopt和setsockopt函数 这两个函数仅用于套接口. #include <sys/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, i…
端口号 端口号(port number):16位整数,用来区分不同的进程. 服务器使用的端口号:TCP和UDP定义了一组众所周知的端口(well-known port),用于标识众所周知的服务. 客户端使用的端口号:通常使用短期存活的临时端口(ephemeral port).这些端口号通常由传输层协议自动赋予客户.客户一般不关心其临时端口的具体值,而只需确信它在所在主机中是唯一的就行.传输层协议的代码确保这种唯一性. 端口号被划分成三段: (1)众所周知的端口为0-1023. 这些端口由IANA…
概述 应用程序可以绕过传输层而直接使用IPv4和IPv6,这称为原始套接口(raw socket).http://www.cnblogs.com/nufangrensheng/p/3583435.html. 原始套接口是一种对原始网络报文进行处理的套接口.原始套接口主要应用在底层网络编程上,同时也是网络黑客的必备手段.例如sniffer.拒绝服务(DoS).IP地址欺骗等都需要在原始套接字的基础上实现. 与原始套接字对应,之前的TCP/UDP的套接字称为标准套接字,如下图所示,为标准套接字与原始…
概述 SCTP是一个较新的传输协议,于2000年在IETF得到标准化(TCP是在1981年标准化的).它最初是为满足不断增长的IP电话市场设计的:具体地说,就是穿越因特网传输电话信令. SCTP是一个可靠的面向消息的协议,在端点之间提供多个流,并为多宿提供传输级支持. 尽管SCTP和TCP之间存在一些本质性的差别,然而SCTP的一到一(one-to-one)接口与TCP提供的应用接口非常接近.这一点允许轻而易举地移植应用程序,不过没法使用SCTP的某些高级特性.SCTP的一到多(one-to-m…
第四章 基本tcp 套接口编程 注意区分AF_XXX 和PF_XXX,AF代表address family, PF代表protocol family. 1 socket 函数 2 connect 函数 3 bind 函数 4 listen 函数 注:主动.被动 与 服务器.客户端没有明确的对应关系 linux中定义backlog为 完成队列的最大个数 5 accept 函数 5 getsockname和getpeername的用法及实例 getsockname和getpeername #incl…
第一章: C/C++语言提供两种不同的编程模式:IPL32和PL64.► IPL32 ● 表示integer/pointer/long三种数据类型是32位(4个字节),在这种模式下,提供32位的地址空间,理论的内存使用限制为4G.► PL64 ● 表示pointer/long两种数据类型是64位(8个字节),提供64位地址空间,使用内存超过4G(达2^60bytes=1EB). more infoabout IPL32 and PL64, please refer to http://www-3…