UNIX网络编程卷1:套接字联网API 笔记
文章平均质量分 79
sunnet2007
信息
展开
-
第二章 传输层:TCP、UDP和SCTP(1)
1. TCP/IP协议族总图IPv4 网际协议版本4(Internet Protocol version 4)。使用32位地址。IPv4给TCP、UDP、SCTP、ICMP和IGMP提供分组递送服务。IPv6 网际协议版本6(Internet Protocol version 6)。使用128位地址。给TCP、UDP、SCTP和ICMPv6提供分组递送服务。TCP原创 2015-11-20 09:57:34 · 485 阅读 · 0 评论 -
IO多路复用之epoll
1. 基本常识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。现对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关心的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2.epoll接口 epoll操作过程需要三个接口,分别如下:#转载 2015-11-26 11:43:21 · 313 阅读 · 0 评论 -
第二章 传输层:TCP、UDP和SCTP(2)—TCP连接的建立和终止
1. 三次握手建立一个TCP连接时会发生下述情形(1) 服务器必须准备好接受外来的连接。这通常通过调用socket、bind和listen这3个函数来完成,称之为被动打开。(2) 客户通过调用connect发起主动打开。这导致客户TCP发送一个SYN(同步)分节,它告诉服务器客户将在(待建立的)连接中发送的数据的初始序列号。通常SYN分节不携带数据,其所在IP数据报只包含一个IP首部、原创 2015-11-20 11:28:13 · 365 阅读 · 0 评论 -
I/O模型
对于一次IO访问(以read为例),数据先会被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间,所有说让一个read操作发生时,会经历两个阶段:(1) 等待数据准备(Waiting for the data to be ready)(2) 将数据从内核拷贝到进程中(Copy the data from the kernel to the process)原创 2015-11-26 15:42:44 · 399 阅读 · 0 评论 -
第三章 套接字编程简介(2) - 字节序
1. 字节序排序函数系统所用的字节序称为主机字节序,网络协议必须指定一个网络字节序。这两张字节序直接的转换使用一下4个函数#include // 将主机字节序转换为网络字节序uint16_t htons(uint16_t host16bitcalue);uint32_t htonl(uint_32 host32bitvalue);// 强网络字节序转换为主机字节序uin原创 2015-11-20 16:18:59 · 281 阅读 · 0 评论 -
第三章 套接字编程(1) - 套接字地址结构
套接字地址结构1. IPv4套接字地址结构 IPv4套接字地址结构通常称为“网际套接字地址结构”,它以sockadd_in命名,定义在头文件中。 struct in_addr{ in_addr_t s_addr; /*32位IPv4地址,网络字节序*/ }; struct sockaddr_in{ ui原创 2015-11-20 15:05:43 · 831 阅读 · 0 评论 -
第二章 传输层:TCP、UDP和SCTP(3)—端口号
端口号被划分为3段1. 0~1023 这些端口由IANA分配和控制2. 1024~49151 已登记的端口,这些端口不受IANA控制,不过由IANA登记并提供它们的使用情况清单3. 49152~65535 动态或私用的端口。IANA不管这些端口,它们就是通常所称的临时端口。原创 2015-11-20 11:47:17 · 1962 阅读 · 0 评论 -
第一章实例
客户端代码//#include "unp.h"#include #include #include // bzero()头文件#include #include #include #define MAXLINE 4096#define SA struct sockaddrint main(int argc, char **argv){ int原创 2015-11-19 17:11:57 · 261 阅读 · 0 评论 -
IO多路复用之poll总结
1. 基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll与select同样存在一个缺点就是,包含大量的文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2. poll函数转载 2015-11-25 16:31:19 · 295 阅读 · 0 评论 -
IO多路复用之select
1. 基本概念 IO多路复用是指内核一旦发现进程指定的一个或多个IO条件准备就绪,它就通知该进程。IO多路复用使用如下场合: (1) 当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用IO复用 (2) 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3) 如果一个TCP服务器既要处理监听套接口,又要处理已有连接套接口,一般也转载 2015-11-25 14:07:51 · 628 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
select、poll、epoll都是IO多路复用的机制。IO多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进程响应的读写操作。但select、poll、epoll本质上都是同步IO,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步IO则无需自己负责进行读写,异步IO的实现会负责把数据从内核拷贝到用户控件。转载 2015-11-26 14:23:05 · 288 阅读 · 0 评论