发布时间:2012-12-21 16:48:53
接着上一篇,继续介绍struct sock。 sk_rmem_alloc, sk_wmem_alloc和sk_omem_alloc分别表示接收缓冲队列,发送缓冲队列及其它缓冲队列中已经分配的字节数,用于跟踪缓冲区的使用情况。 struct sock有一个struct sock_common成员,因为struct inet_timewait_sock也要用到它,所以把它单独归到一个结构体中,其定义如下: struct sock_common {  ......【阅读全文】
发布时间:2012-12-21 16:48:06
用户使用socket系统调用编写应用程序时,通过一个数字来表示一个socket,所有的操作都在该数字上进行,这个数字称为套接字描述符。在系统调用 的实现函数里,这个数字就会被映射成一个表示socket的结构体,该结构体保存了该socket的所有属性和数据。在内核的协议中实现中,关于表示 socket的结构体,是一个比较复杂的东西,下面一一介绍。 struct socket。 这是一个基本的BSD socket,我们调用socket系统调用创建的各种不同类型的socket,开始创建的都是它,到后面,......【阅读全文】
发布时间:2012-12-21 16:45:57
前面讲到过,UDP socket和RAW socket上的connect调用的原理是相当简单的,它所做的操作只是通过路由规则和路由表等一些信息,在struct socket结构中填入一些有关对端服务器的信息,这样,以后向对端发送数据报时,就不需要每次进行路由查询等操作以确定对端地址信息和本地发送接口,应 用程序也就不需要每次传入对端地址信息(可以使用send而不使用sendto)。这也就是为什么UDP被称为无连接的协议。 但TCP socket上的connect系统调用就相对比较复杂了,下面我们逐步探索tcp socket上的conn......【阅读全文】