博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux内核TCP 源码分析,Linux内核源代码解析之TCP面向字节流
阅读量:6484 次
发布时间:2019-06-23

本文共 807 字,大约阅读时间需要 2 分钟。

大家都知道TCP是面向stream,而UDP是面向datagram的。

那,到底什么是stream呢?

我们来看一下以下代码

/* Now we need to check if we have a half built packet. */

if ((skb = tcp_dequeue_partial(sk)) != NULL) {

int hdrlen;

/* IP header + TCP header */

hdrlen = ((unsigned long)skb->h.th - (unsigned long)skb->data)

+ sizeof(struct tcphdr);

/* Add more stuff to the end of skb->len */

if (!(flags & MSG_OOB)) {

copy = min(sk->mss - (skb->len - hdrlen), len);

/* FIXME: this is really a bug. */

if (copy <= 0) {

printk("TCP: **bug**: "copy" <= 0!!

");

copy = 0;

}

memcpy_fromfs(skb->data + skb->len, from, copy);

skb->len += copy;

from += copy;

copied += copy;

len -= copy;

sk->write_seq += copy;

}

if ((skb->len - hdrlen) >= sk->mss ||

(flags & MSG_OOB) ||

!sk->packets_out)

tcp_send_skb(sk, skb);

else

tcp_enqueue_partial(skb, sk);

continue;

}

明白了吧?

转载地址:http://kqnuo.baihongyu.com/

你可能感兴趣的文章
在iOS当中发送电子邮件和短信
查看>>
13~1003的和
查看>>
pycharm如何新项目如何不默认创建虚拟环境(吐槽)
查看>>
MySQL字段类型详解
查看>>
ORACLE 的游标
查看>>
虚拟机安装的UBUNTU全屏的方法:
查看>>
java虚拟机类加载器
查看>>
ASP.NET状态管理之八(会话Session)
查看>>
转载:大型网站架构演变和知识体系
查看>>
set集合
查看>>
SVN服务器的搭建和使用
查看>>
mvc中枚举的使用和绑定枚举值到DropDownListFor
查看>>
多目标跟踪的评价指标
查看>>
HTTPS(SSL)详解以及PHP调用方法
查看>>
突发小事件,USB接口问题
查看>>
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
实参传递不当导致的运行时错误
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>