初始的三次握手:

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

tcp中的发送窗口是啥意思?的更多相关文章

  1. TCP滑动窗口(发送窗口和接受窗口)

    TCP窗口机制 TCP header中有一个Window Size字段,它其实是指接收端的窗口,即接收窗口.用来告知发送端自己所能接收的数据量,从而达到一部分流控的目的. 其实TCP在整个发送过程中, ...

  2. TCP发送窗口更新tcp_ack_update_window

    在tcp_ack接收ACK处理函数中,如果确认当前走慢速路径,那么会调用tcp_ack_update_window函数检查窗口是否需要更新并更新之,并且更新未确认数据的位置,即更新窗口左边沿: sta ...

  3. Linux2.6内核协议栈系列--TCP协议1.发送

    在介绍tcp发送函数之前得先介绍很关键的一个结构sk_buff,在linux中,sk_buff结构代表了一个报文: 然后见发送函数源码,这里不关注硬件支持的分散-聚集: /* sendmsg系统调用在 ...

  4. TCP中的RST复位信号

    TCP中的RST复位信号 在TCP协议中RST表示复位,用来关闭异常的连接,在TCP的设计中它是不可或缺的. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包.而接收 ...

  5. Qt5 基于TCP传输的发送/接收文件服务器(支持多客户端)

    一.实现功能 1.服务器端选择待发送的文件,可以是多个 2.开启服务器,支持多客户端接入,能够实时显示每个客户端接入状态 3.等待所有客户端都处于已连接状态时,依次发送文件集给每个客户端,显示每个客户 ...

  6. TCP中ECN的工作原理分析二(摘自:RFC3168)

    英文源:http://www.icir.org/floyd/ecn.html 发送端和接收端处理: The TCP Sender For a TCP connection using ECN, new ...

  7. TCP协议的滑动窗口协议以及流量控制

    参考资料 http://blog.chinaunix.net/uid-26275986-id-4109679.html http://network.51cto.com/art/201501/4640 ...

  8. 三十天学不会TCP,UDP/IP网络编程 -- TCP中的智慧之连续ARQ

    突然发现上一篇文章贴图有问题,关键我怎么调也调不好,为了表达歉意,我再贴一篇gitbook上的吧,虽然违背了我自己的隔一篇在这里发一次的潜规则~其余完整版可以去gitbook(https://www. ...

  9. TCP协议的滑动窗口具体是怎样控制流量的

    首先明确: 1)TCP滑动窗口分为接受窗口,发送窗口滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致自己被淹没 ...

随机推荐

  1. Golang通道的无阻塞读写的方法示例

    无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,但其实有些情况,我们并不想读数据或者写数据阻塞在那里,有1个唯一的解决办法,那就是使用select结构. 这篇文章会介绍,哪些情况会存在阻塞,以及如 ...

  2. Python 1.2 列表和字典基础

    一. List创建.索引.遍历和内置增删函数 1.列表是Python的内置可变对象,由Array实现,支持任意类型的添加.组合和嵌套. L = [] # list declare L = [1, 1. ...

  3. python类的多态

    1. 什么是多态     多态指的是同一种/类事物的不同形态   2. 为何要用多态     多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象     多态性的精髓:统一   ...

  4. python2和python3的一些区别

    性能:py3.x起始比py2.x效率低,但是py3.x有极大的优化空间,效率正在追赶. 编码:py3原码文件默认utf-8编码,使得变量名更为广阔. 语法:1,去除了 <>  ,改用了  ...

  5. express with bower in websotrm

    0. To install bower , run the following command in webstorm terminal(alt+f12) npm install bower bowe ...

  6. Tomcat7 调优及 JVM 参数优化

      Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增大可使用的内存容量.提高CPU 的频率,保证 ...

  7. MySQL高级第四章——MySQL的锁机制

    一.概述 1.定义 锁是计算机协调多个进程或线程并发访问某一资源的限制. 2.分类 操作类型来分: 读锁(共享锁)和写锁(排它锁) 数据粒度来分: 表锁和行锁 二.三锁 1.表锁——偏读 特点: 偏向 ...

  8. Uber优步北京第二、三组奖励政策

    优步北京第二.三组: 定义为​2015年6月1日至今激活的司机(以优步后台数据显示为准) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注册Uber司机(全国版最新最 ...

  9. python+selenium 环境配置

    配置环境: python:3.5 selenium:3.3.0 安装方式:python pip install -u selenium windows: 10 firefox:52 因为firefox ...

  10. CodeForces - 913C(二进制)

    链接:CodeForces - 913C 题意:给出 n 瓶饮料的花费 C 数组,每瓶的体积是 2^(i-1) 升,求至少买 L 升的最少花费. 题解:二进制数的组合可以表示任何一个数.第 i 的饮料 ...