zoukankan      html  css  js  c++  java
  • tcp中的发送窗口是啥意思?

    初始的三次握手:

    02:52:36.585412 IP 127.0.0.1.59764 > 127.0.0.1.8000: Flags [S], seq 3800457532, win 43690, options [mss 65495,sackOK,TS val 1597305 ecr 0,nop,wscale 7], length 0
    02:52:36.585442 IP 127.0.0.1.8000 > 127.0.0.1.59764: Flags [S.], seq 4218504248, ack 3800457533, win 43690, options [mss 65495,sackOK,TS val 1597305 ecr 1597305,nop,wscale 7], length 0
    02:52:36.585468 IP 127.0.0.1.59764 > 127.0.0.1.8000: Flags [.], ack 1, win 342, options [nop,nop,TS val 1597305 ecr 1597305], length 0
    02:53:30.192996 IP 127.0.0.1.59764 > 127.0.0.1.8000: Flags [P.], seq 1:4097, ack 1, win 342, options [nop,nop,TS val 1610707 ecr 1597305], length 4096
    02:53:30.193018 IP 127.0.0.1.59764 > 127.0.0.1.8000: Flags [.], seq 4097:25942, ack 1, win 342, options [nop,nop,TS val 1610707 ecr 1597305], length 21845
    02:53:30.193049 IP 127.0.0.1.8000 > 127.0.0.1.59764: Flags [.], ack 4097, win 1365, options [nop,nop,TS val 1610707 ecr 1610707], length 0

    首先是三次握手协议,发送了一个syn,然后初始序列号是3800457532,然后初始窗口大小是43690,并且最大段的长度是,服务器端首先回复的初始序列号是421850424,也就是说你下次给我发的序号应该是4218504248。但是为啥

    下面这些实际传送的数据包都是后期经过处理的,其实都是在seq上的。

    很奇怪,tcp上没有数据长度信息,tcp的数据包的长度信息是在ip包里

    到底是怎么确定的发送的窗口,在copy的时候会发现,总共80k的数据,下面就是每次拷贝的数据的量,

    Begin write 
    client copy:1456
    client copy:32768
    client copy:30936
    client copy:1832
    client copy:5408
    client copy:7240
    client copy:2280
    

     看下这里到底是咋整的啊

    rcv_wnd 这个就是reciver的窗口咯

    tcp的这些窗口落实在代码里都是咋整的?

    当把网卡的tso和gso特性全部都关掉了,发现数据包的大小就变成了1448

  • 相关阅读:
    【Linux】- 文件基本属性
    【Linux】- mv命令
    【Linux】- 守护进程supervisor安装使用
    【Linux】- rm命令
    【Linux】- 开启远程连接
    【Redis】- 安装为windows服务
    Apache2.4 与 php7.1.6的链接
    apache2.4 的安装
    MySQL v5.7.18 版本解压安装
    网站系统消息表设计
  • 原文地址:https://www.cnblogs.com/honpey/p/9536131.html
Copyright © 2011-2022 走看看