网络知识点
一、内核网络栈代码:
BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。
分析socket结构:
state表示socket所处的状态,是一个枚举变量;
type是表示socket在特定协议族下的类型如SOCK_STREAM;
flags是一组标志位,用来设置socket是否正在忙碌;
wq是sock的等待队列,在TCP需要等待时就sleep在这个队列上;
file是回指指针;
sk是网络层对于socket的表示,sock是对socket的扩充;socket是inode结构中的一部分,即inode结构内部的一个union用作socket结构,如果把所有的结构成分放到socket结构中,inode结构中的union就会变得很大,对于其他文件会造成很大的浪费,但是在系统中使用inode结构的数量远远超过socket的数量,所以把插口分成两部分,把与文件系统相关的放在socket结构中,与通信相关的放在sock中。
ops协议相关的一组操作集;是依据协议绑定到该socket上的特定