以太网 TCP数据交互过程、TCP的窗口机制详细介绍。

2.7.1 以太网 TCP协议(数据交互过程、窗口机制)

环境介绍:

 1、客户端访问FTP服务器进行下载文件,由于FTP是基于TCP协议进行工作的,所以客户端在访问FTP服务器时必然会进行建立TCP连接。

 2、通过在交换机上对任意端口进行抓包,来分析TCP的传输数据时报文交互的过程,以及TCP的窗口机制凸显的现象

在这里插入图片描述

一、TCP数据报文交互

为什么说TCP协议可靠的?

 其中一项就是因为TCP协议在传输数据的过程对,会对接收到的TCP数据进行一个确认。

 当对方发来一个Seq报文序号2、并承载100Byte的TCP数据,我成功收到且FCS检查无误之后,回复Flags-ACK置位1、ack序号=(收到的Seq+收到的数据大小)=4+100=104TCP报文进行确认。对方收到Seq为104的报文,就知道了我成功接收到了100Byte的数据。

简述TCP数据报文交互过程:

  • 客户端请求下载文件之后,建立起传输的TCP连接。
  • 连接建立之后,服务器告知客户端:请求文件的大小以及发送的方式、编码等。随后基于TCP连接发送FTP-DATA。
    • FTP-DATA为什么是两个包?
    • 因为在TCP建立的时候知道MSS=1460(传输最大文件大小限制),而下载的index.html文件大小为1649Byte,需要分成1460+189两个FTP-DATA包进行传输
  • 收到FTP-DATA之后,客户端向服务器回复ACK确认:ack=1651
    • FTP-DATA(1)报文信息:seq=1,ack=1,Len=1460
    • FTP-DATA(2)报文信息:seq=1461,ack=1,len=189
    • 两个包都收到之后,检查无误,最后一个包的seq=1461、数据大小lene=189,所以回复的ACK报文中,ack序号=1461+189=1651.

抓包信息:

(1)总体信息

在这里插入图片描述

(2)FTP-DATA(1)

在这里插入图片描述

(3)FTP-DATA(2)

在这里插入图片描述

(4)FTP回复的ACK

在这里插入图片描述

华为官网教材截图(HCIA-02 网络参考模型):

在这里插入图片描述

为什么PC1所发的Ack字段没有增长?

 TCP成功建立之后,回复的TCP报文ackp字段只会将收到的报文中seq字段与Data字段大小进行相加成为ack字段的新值。

 即:ack=seq+data,如果收到的TCP报文中data(载荷)=0,即ack=seq,也就是图中ack=seq=b+1的原因。

二、TCP窗口机制

 TCP通过滑动窗口机制来控制数据的传输速率,保障数据传输时不会因为其中一端传输太快导致数据丢失。

 在TCP三次握手建立连接时,双方都会通过Window(win)字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小,单位Byte)。

TCP窗口机制如何进行工作的?

  1. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
  2. 接受方 接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
  3. 接收方 根据自身的缓存空间大小,在回复TCP报文时更新窗口大小( Window )。
  4. 发送方 根据接收方回复的窗口大小,实时更改发送相应数量的数据。

TCP窗口机制对数据交互有什么影响?

  • 教程中常常看到的数据交互都是发一个数据包就回复一个确认,这种主要为了让我们好理解,现实中如果需要实现这种一个数据报文就回复一个确认,就需要使用到TCP报文中的PSH字段。

  • 如果网络中都是这样一包一回复,大量不必要的数据报文在网络中传输,易造成网络负载较重,使得传输效率降低。

  • 窗口机制有个特点就是不断的接收数据放置在缓冲区中,直到缓冲区被占用满或者遇到PSH置位的TCP报文,才会进行数据转发,以及回复ACK进行数据确认。这样统一的回复有效减少了大量确认数据在网络中传输。

TCP中的PSH字段作用?

  • 通过TCP报头中的PSH字段 控制服务器缓冲区内的数据立即传送出去。
  • 什么时候用到PSH字段呢?
  • 对于需要紧急处理的指令数据,需要快速的进行转发处理,就需要应用到PSH。
  • 如:数据交互实例中的客户端下载index.html文件,需要紧急执行下载,如果等待send buffer(缓冲区)满了再转发,客户端看来就是等了很久才开始进行下载/传输文件。
    在这里插入图片描述

华为官网教材截图(HCIA-02 网络参考模型):

注:图中的win=3,表示可接收的数据包为3个。在实际环境中,该字段通常表示目前可接受处理的数据大小,单位Byte。

在这里插入图片描述

为什么PC1所发报文的Win字段没有变化?

 因为win表示的是本端目前所能接收的数据窗口大小,即目前可处理的数据量大小。自己发送的数据并不会占用win窗口量。

为什么PC1所发报文的Win字段没有变化?

 因为win表示的是本端目前所能接收的数据窗口大小,即目前可处理的数据量大小。自己发送的数据并不会占用win窗口量。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
目 录 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 1.13 互联网 12 1.14 实现 12 1.15 应用编程接口 12 1.16 测试网络 13 1.17 小结 13 第2章 链路层 15 2.1 引言 15 2.2 以太网和IEEE 802封装 15 2.3 尾部封装 17 2.4 SLIP:串行线路IP 17 2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27 3.4 子网寻址 30 3.5 子网掩码 32 3.6 特殊情况的IP地址 33 3.7 一个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4章 ARP:地址解析协议 38 4.1 引言 38 4.2 一个例子 38 4.3 ARP高速缓存 40 4.4 ARP的分组格式 40 4.5 ARP举例 41 4.5.1 一般的例子 41 4.5.2 对不存在主机的ARP请求 42 4.5.3 ARP高速缓存超时设置 43 4.6 ARP代理 43 4.7 免费ARP 45 4.8 arp命令 45 4.9 小结 46 第5章 RARP:逆地址解析协议 47 5.1 引言 47 5.2 RARP的分组格式 47 5.3 RARP举例 47 5.4 RARP服务器的设计 48 5.4.1 作为用户进程的RARP服务器 49 5.4.2 每个网络有多个RARP服务器 49 5.5 小结 49 第6章 ICMP:Internet控制报文协议 50 6.1 引言 50 6.2 ICMP报文的类型 50 6.3 ICMP地址掩码请求与应答 52 6.4 ICMP时间戳请求与应答 53 6.4.1 举例 54 6.4.2 另一种方法 55 6.5 ICMP端口不可达差错 56 6.6 ICMP报文的4.4BSD处理 59 6.7 小结 60 第7章 Ping程序 61 7.1 引言 61 7.2 Ping程序 61 7.2.1 LAN输出 62 7.2.2 WAN输出 63 7.2.3 线路SLIP链接 64 7.2.4 拨号SLIP链路 65 7.3 IP记录路由选项 65 7.3.1 通常的例子 66 7.3.2 异常的输出 68 7.4 IP时间戳选项 69 7.5 小结 70 第8章 Traceroute程序 71 8.1 引言 71 8.2 Traceroute 程序的操作 71 8.3 局域网输出 72 8.4 广域网输出 75 8.5 IP源站选路选项 76 8.5.1 宽松的源站选路的traceroute 程序示例 78 8.5.2 严格的源站选路的traceroute 程序示例 79 8.5.3 宽松的源站选路traceroute程序 的往返路由 80 8.6 小结 81 第9章 IP选路 83 9.1 引言 83 9.2 选路的原理 84 9.2.1 简单路由表 84 9.2.2 初始化路由表 86 9.2.3 较复杂的路由表 87 9.2.4 没有到达目的地的路由 87 9.3 ICMP主机与网络不可达差错 88 9.4 转发或不转发 89 9.5 ICMP重定向差错 89 9.5.1 一个例子 90 9.5.2 更多的细节 91 9.6 ICMP路由器发现报文 92 9.6.1 路由器操作 93 9.6.2 主机操作 93 9.6.3 实现 93 9.7 小结 94 第10章 动态选路协议 95 10.1 引言 95 10.2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hades_Ling

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值