04 2016 档案
摘要:1. 原始套接字能力: (1) 进程可以读写ICMP,IGMP等分组,如ping程序; (2) 进程可以读写内核不处理协议字段的ipv4数据报;如OSPF等; (3) 进程可以使用IP_HDRINCL套接字选项自行构造ipv4首部; 2. 原始套接字的创建: 开启ip头构造选项: 当选项开启时,我们
阅读全文
摘要:1. Nagle算法: 是为了减少广域网的小分组数目,从而减小网络拥塞的出现; 该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组
阅读全文
摘要:1. 套接字选项函数原型: 2. 通用套接字选项: (1) SO_BROADCAST: 本选项开启或禁止进程发送广播消息的能力;只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上; (2) SO_DEBUG: 本选项仅由TCP支持。当给一个TCP套接字开启本选项,内核将为TCP在该套接字和
阅读全文
摘要:套接字的默认状态是阻塞的,这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待响应操作完成,可能阻塞的套接字调用可分为以下四类: (1) 输入操作,包括read,readv,recv,recvfrom,recvmsg; (2) 输出操作,包括write,writev,send,s
阅读全文
摘要:1. connect出错: (1) 若TCP客户端没有收到syn分节的响应,则返回ETIMEOUT错误;调用connect函数时,内核发送一个syn,若无响应则等待6s后再发送一个,若仍然无响应则等待24s后在发送一个,若总共等待75s后仍未收到响应则返回本错误; (2) 若对客户的syn响应是rs
阅读全文
摘要:1. listen函数: listen仅由服务器调用,它做两件事情: (1) 当socket创建一个套接字的时候,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字。listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的连接请求;调
阅读全文
摘要:1. connect函数: connect函数是把当前套接字从CLOSED状态转移到SYN_SENT状态,若成功则再转移到ESTABLISHED状态。若connect失败则该套接字不再可用,必须关闭,我们不能对这样的套接字再次调用connect函数。当循环调用connect为给定主机尝试各个ip地址
阅读全文
摘要:printf输出条件: (1) 调用fflush; (2) 缓冲区满了; (3) 遇到\n \r这些字符 (4) 遇到scanf这些要取缓冲区的; (5) 线程或者进程退出; fork之后会拷贝父进程的缓冲区; 代码: 结果: (1) 第一次输入到控制台,write无缓冲直接输出,printf("b
阅读全文
摘要:1. 线程同步: 当多个控制线程共享相同的内存时,需要确保每个线程看到一致的数据视图。当某个线程可以修改变量,而其他线程也可以读取或者修改这个变量的时候,就需要对这些线程进行同步,以确保他们在访问变量的存储内容的时候不会访问到无效的数值; 当一个线程修改变量时,其他线程在读取这个变量的值的时候可能看
阅读全文

浙公网安备 33010602011771号