• 忆水寒
    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缓存减少不命中的概率。

    
    
我们在线,来聊聊吧