TCP-IP详解卷1-19:TCP的交互数据流

本文探讨了TCP交互式数据流的特点,包括按键输入产生的数据分组、时延确认技术的应用、Nagle算法的工作原理及其在不同场景下的优劣分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP-IP详解卷1-19:TCP的交互数据流

一:介绍
    TCP数据流大致可以分为两类,交互式数据流和成块的数据流。
    交互式数据流就是发送控制命令的数据流,比如relogin, telnet, ftp命令等。
    成块数据流是用来发送数据包,网络上大部分的TCP包都是这种包。

二:交互式输入(以relogin为例)
    许多TCP/IP的初者很吃惊地发现通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行)。
    而且,Rlogin需要远程系统(服务器)回显我们(客户)键入的字符。这样就会产生4个报文段:
    1: 来自客户的交互按键;
    2: 来自服务器的按键确认;
    3: 来自服务器的按键回显;
    4:来自客户的按键回显确认;

三:经受时延的确认
    TCP交互式数据流通常使用“经过时延的确认”技术。即Server在接收到Client发送过来的数据时,并不马上发送ACK,而是等一小段时间,看看本机是否有数据需要反馈给Client。
    如果有,就将数据包在此ACK包中,一起发送给Client。
    一般情况下,这个延时为200MS。
   
四:NAGLE算法
    1: 小分组
        在一个Rlogin连接上客户一般每次发送一个字节到服务器,这就产生了一些41字节长的分组:20字节的IP首部、20字节的TCP首部和1个字节的数据。
        在局域网上,这些小分组(被称为微小分组(tinygram))通常不会引起麻烦,因为局域网一般不会出现拥塞。
        但在广域网上,这些小分组则会增加拥塞出现的可能。
    2: 该算法要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。
        相反, TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。
        该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快。
        而在希望减少微小分组数目的低速广域网上,则会发送更少的分组。
    3: 有时我们也需要关闭Nagle算法。一个典型的例子是X窗口系统服务器:小消息(鼠标移动)必须无时延地发送,以便为进行某种操作的交互用户提供实时的反馈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值