12
以太网首部中包含的类型字段值为0x0800,它把本以太网帧标识为一个IPv4帧。0x86dd,标识为一个IPv6帧。
IPv4模块结合其上的TCP模块检测到IPv4数据报的目的端口对应一个IPv6套接字,于是把该数据报IPv4首部中的源IPv4地址转换成一个等价的IPv4映射的IPv6地址。该连接上其余的数据报同样都是IPv4数据报。
一般来说,一个IPv6地址无法表示成一个IPv4地址。
IPv4监听套接字只能接受来自IPv4客户的外来连接。
如果一个绑定了通配地址的IPv6监听套接字未设置IPV6_V6ONLY选项,那么该套接字既能接受来自IPv4的连接,也能接受来自IPv6的连接。
无论是connect或者sendto,IPv4都不能指定一个IPv6地址,IPv6的地址为16个字节,大于IPv4的4字节。
IPv6单栈主机无法映射IPv4地址。
可以调用IN6_IS_ADDR_V4MAPPED宏测试由解析器返回的IPv6地址。
13
在系统启动阶段,许多守护进程由系统初始化脚本启动。
许多网络服务器由inetd超级服务器启动。
cron守护进程按照一定规则执行一些程序
at命令用于指定在将来某个时刻的程序执行。
守护进程还可以从用户终端或前台或后台启动。
syslog把消息发送给syslogd守护进程
daemon_init:
fork:进入后台运行
setsid:脱离当前终端设备,创建新会话,变成新会话的会话头进程以及新进程组的进程组头进程
忽略SIGHUP并fork:确保不会自动获得控制终端。因为不再是一个会话头进程。
要是一个守护进程未打开这些描述符,却开了某个套接字,那么守护进程调用perror之类函数会把数据发给其他客户。
许多守护进程把SIGHUP信号作为来自系统管理员的一个通知,表示其配置文件发生改动,应该重新读入其配置文件。
inted处理普通守护进程以简化守护程序的编写。减少系统中进程总数。
inetd进程以值0的用户ID运行,其子进程将跨fork调用继承这个用户ID,因而能够变成所选定的任何用户。