忆水寒
2020-02-09
从网络协议专栏看完过来的,tcp协议实际上很熟悉,所以看这篇文章大概都懂。但是每次读都能有新的体会。
1
bbbi
2019-12-17
老师一个sk_buff多大呢?这个链表可以无限长吗?
记事本
2019-11-25
老师好 这部分的内容有没有参考书可以看看的?
谛听
2019-11-24
VFS: 拿到 file 中的 socket,进而得到 sock,进而调用 tcp_sendmsg
tcp_sendmsg: 将用户数据拷到 sk_buff,不断循环发送,发送过程中计算 MSS,拆分成一个个的
Segment 放在一个个的 IP 包里面,数据可拷贝到连续的区域,也可以拷到不连续的区域
( 需要网络设备支持分散聚合),最后调用 tcp_write_xmit 发送网络包
tcp_write_xmit:TSO--分段可由内核做,比较耗CPU,也延迟到网卡做;
拥塞窗口--避免把网络塞满;
滑动窗口--避免把接收端塞满
tcp_transmit_skb:填充tcp报文,发送网络包
展开
PETER DONG
2019-08-13
有一次分别在服务器端和客户端抓包
服务器端的包都是好几k 十几k.
客户端的包是1400多 一开始没弄明白都mtu了为什么还有好几k的包
后来查到内核可以配置网络参数,不把拆包交给网卡固件,自己分包。
作者回复: 赞,学以致用
1
W.jyao
2019-07-11
老师,请教一个问题,为什么流媒体服务器发送的rtp包都要小于1500左右,也就是小于MTU,理论上不是大于1500会分片吗?但是好像实现的代码都会小于Mtu,为什么呢?
作者回复: 分片再组合会增加时延
1
一梦如是
2019-07-11
老师好,请教一个困惑很久的问题,cpu的L1,L2,L3级cache,缓存的数据是以内存的页为单位的吗
oracle sga在大内存时,通常会配置hugepage以减少TLB的压力和swap的交换用来提高性能,linux(centos)下默认是2M,而一般cpu L1是32+32K,L2是256K,是不是就意味着没法使用这两级缓存了
作者回复: Hugepage不会将页面放到缓存里面的,而是TLB缓存减少不命中的概率。
我们在线,来聊聊吧
✕
您好,当前有专业客服人员在线,让我们来帮助您吧。
我们在线,来聊聊吧