select集合的大小是1024个。
select的效率太低,它在用户空间创建一个描述符的集合,当有时间就绪时,就把整个描述符拷贝到内核空间,在内核空间全部遍历一遍,找出就绪的事件,再进行处理。
epoll直接在内核事件表中添加事件,当有事件就绪时,描述符调用自己的回调函数,处理事件。
epoll的LT模式、ET模式。LT模式会一直提醒,直到读完。ET模式只提醒一次,读不读完是你的事情。
一个进程可以使用多个端口,一个端口也可以共用一个端口号。
http:80
https:443
MySQL:3306
ftp:21、20(控制信息、传输信息)
ssh:22
协议就是共同遵守的标准和约定。
connect建立链接。
如何查看某个网络链接中tcp的发送缓冲区和接收缓冲区还有多少数据没有发送出去,send成功只能说明成功地把数据写到发送缓冲区。
netstat -natp
《uninx网络编程》第五章。
tcp是面向面向链接的,什么时候链接都不能断开,序列号也不能有错误。这种情况会不会断开链接。对方会不会感知到。
当客户端去链接一个没有开启的程序,会返回一个rst报文,复位报文。
tcp的流式服务,会存在一个粘包问题。
心跳包:定时发送一个数据包,去探测一下对方是否存在。
ICMP被封装到IP里面,它和IP是同一层的,但它同IP来直接做。
ARP:地址解析协议。
内核中最常见的就是链表和红黑树。
ep_poll_callback,注册回调函数,当描述符上有数据就绪时,设备驱动程序调用回调函数。
epoll_wait:当rdlist有数据时,将其拷贝到用户空间。拷贝到用户空间的数目,作为返回值。