发布时间:2013-01-18 19:30:10
接着上一篇,继续介绍struct sock。 sk_rmem_alloc, sk_wmem_alloc和sk_omem_alloc分别表示接收缓冲队列,发送缓冲队列及其它缓冲队列中已经分配的字节数,用于跟踪缓冲区的使用情况。 struct sock有一个struct sock_common成员,因为struct inet_timewait_sock也要用到它,所以把它单独归到一个结构体中,其定义如下: struct sock_common {  ......【阅读全文】
发布时间:2013-01-18 19:30:01
这次我们稍微做点改变,在172.16.48.1上创建一个TCP socket,并在5002端口上侦听。当我们继续在172.16.48.2上去尝试连接172.16.48.1的5002端口时,会得到一个肯定的响应 数据报。下面是来自172.16.48.1的响应数据,也就是TCP三次握手协议的第二个报文段: 数据报内容 含义基本TCP首部&nbs......【阅读全文】
发布时间:2013-01-18 19:29:58
现在,我们来看一个完整的流程,在一个TCP socket上系统调用connect究竟是如何建立起一个到对端的连接的。我们还是以实验环境172.16.48.2向172.16.48.1的端口5002发起连接请求为例。 第一步,172.16.48.2向172.16.48.1发起连接请求,发送一个SYN段,指明目的端口5002,通告自己的初始序号(ISN,由协议栈 随机产生的一个32位数),设置确认序号为0(因为还没有收到过对端的数据),通告自己的滑动窗口大小为5840(对端是5792,这似乎有问题,有待进 一步细查),窗口扩大因子为2(在......【阅读全文】
发布时间:2013-01-18 19:29:52
TCP提供的是一种面向连接的,可靠的字节流服务,TCP提供可靠性的一种重要的方式就是MSS。通过MSS,应用数据被分割成TCP认为最适合发送的数 据块,由TCP传递给IP的信息单位称为报文段或段(segment)。代表一个TCP socket的结构体struct tcp_sock中有多个成员用于确定应用数据被分割成最大为多大的数据块较为合适(最大报文段长度MSS)。 我们不难联想到,跟最大报文段长度最为相关的一个参数是网络设备接口的MTU,以太网的MTU是1500,基本IP首部长度为20,TCP首部是20,所以MSS的值可达1460(......【阅读全文】