当前位置:首页 > 经验 >

图解tcpip协议详解(图解tcp ip协议)

来源:原点资讯(www.yd166.com)时间:2022-10-29 23:49:12作者:YD166手机阅读>>

同时挥手

3.3 通过序列号与确认应答提高可靠性

  • 在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)。当发送端将数据发出之后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大
  • 在一定时间内没有等待到确认应答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输。
  • 未收到确认应答并不意味着数据一定丢失。也有可能是数据对方已经收到,只是返回的确认应答在途中丢失。这种情况也会导致发送端误以为数据没有到达目的地而重发数据。
  • 此外,也有可能因为一些其他原因导致确认应答延迟到达,在源主机重发数据以后才到达的情况也屡见不鲜。此时,源主机只要按照机制重发数据即可。
  • 对于目标主机来说,反复收到相同的数据是不可取的。为了对上层应用提供可靠的传输,目标主机必须放弃重复的数据包。为此我们引入了序列号。
  • 序列号是按照顺序给发送数据的每一个字节(8位字节)都标上号码的编号。接收端查询接收数据 TCP 首部中的序列号和数据的长度,将自己下一步应该接收的序列号作为确认应答返送回去。通过序列号和确认应答号,TCP 能够识别是否已经接收数据,又能够判断是否需要接收,从而实现可靠传输。

图解tcpip协议详解,图解tcp ip协议(13)

序列号和确认应答

3.4 重发超时的确定

  • 重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过这个时间仍未收到确认应答,发送端将进行数据重发。最理想的是,找到一个最小时间,它能保证“确认应答一定能在这个时间内返回”。
  • TCP 要求不论处在何种网络环境下都要提供高性能通信,并且无论网络拥堵情况发生何种变化,都必须保持这一特性。为此,它在每次发包时都会计算往返时间及其偏差。将这个往返时间和偏差时间相加,重发超时的时间就是比这个总和要稍大一点的值。
  • 在 BSD 的 Unix 以及 Windows 系统中,超时都以0.5秒为单位进行控制,因此重发超时都是0.5秒的整数倍。不过,最初其重发超时的默认值一般设置为6秒左右。
  • 数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。
  • 此外,数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。

3.5 以段为单位发送数据

  • 在建立 TCP 连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度”(MSS)。最理想的情况是,最大消息长度正好是 IP 中不会被分片处理的最大数据长度。
  • TCP 在传送大量数据时,是以 MSS 的大小将数据进行分割发送。进行重发时也是以 MSS 为单位。
  • MSS 在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在 TCP 首部中写入 MSS 选项,告诉对方自己的接口能够适应的 MSS 的大小。然后会在两者之间选择一个较小的值投入使用。

3.6 利用窗口控制提高速度

  • TCP 以1个段为单位,每发送一个段进行一次确认应答的处理。这样的传输方式有一个缺点,就是包的往返时间越长通信性能就越低。
  • 为解决这个问题,TCP 引入了窗口这个概念。确认应答不再是以每个分段,而是以更大的单位进行确认,转发时间将会被大幅地缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。如下图所示:

图解tcpip协议详解,图解tcp ip协议(14)

  • 窗口控制
  • 窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。上图中窗口大小为4个段。这个机制实现了使用大量的缓冲区,通过对多个段同时进行确认应答的功能。

3.7 滑动窗口控制

图解tcpip协议详解,图解tcp ip协议(15)

滑动窗口

  • 上图中的窗口内的数据即便没有收到确认应答也可以被发送出去。不过,在整个窗口的确认应答没有到达之前,如果其中部分数据出现丢包,那么发送端仍然要负责重传。为此,发送端主机需要设置缓存保留这些待被重传的数据,直到收到他们的确认应答。
  • 在滑动窗口以外的部分包括未发送的数据以及已经确认对端已收到的数据。当数据发出后若如期收到确认应答就可以不用再进行重发,此时数据就可以从缓存区清除。
  • 收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能。这种机制也别称为滑动窗口控制。

3.8 窗口控制中的重发控制

在使用窗口控制中, 出现丢包一般分为两种情况:

  • ① 确认应答未能返回的情况。在这种情况下,数据已经到达对端,是不需要再进行重发的,如下图:

图解tcpip协议详解,图解tcp ip协议(16)

栏目热文

通俗解释tcpip协议(图解tcp-ip协议)

通俗解释tcpip协议(图解tcp-ip协议)

近期工作,跟网络协议相关,这让我有机会更深入学习网络协议,而之前很长一段时间,我对网络协议的理解都停留在比较浅的层面。比...

2022-10-29 23:09:06查看全文 >>

tcp/ip协议和http协议(tcp/ip协议和http协议如何设置)

tcp/ip协议和http协议(tcp/ip协议和http协议如何设置)

推荐阅读:TCP/IP概念TCP/IP(Transmission Control Protocol/Internet P...

2022-10-29 23:23:29查看全文 >>

plc通过tcpip协议读取第三方设备(plc能使用tcpip协议通信吗)

plc通过tcpip协议读取第三方设备(plc能使用tcpip协议通信吗)

西门子PLC中MB_SERVER_DB使用方法分享该块是实现PLC与第三方设备进行TCP/IP通讯功能块。本文以PC作为...

2022-10-29 23:38:21查看全文 >>

tcpip 协议详细讲解(图解tcp ip协议)

tcpip 协议详细讲解(图解tcp ip协议)

又到了金三银四的时间,阿粉也是有点蠢蠢欲动,想要准备面试一下,检验一下自己的工作水平了,于是阿粉就开始了改改简历,然后想...

2022-10-29 23:21:51查看全文 >>

tcpip协议图解(tcpip五层协议详解)

tcpip协议图解(tcpip五层协议详解)

什么是TCP/IP协议?计算机与网络设备之间如果要相互通信,双方就必须基于相同的方法.比如如何探测到通信目标.由哪一边先...

2022-10-29 23:31:04查看全文 >>

tcp的三次握手(tcp连接的三次握手过程)

tcp的三次握手(tcp连接的三次握手过程)

作者 | AhuntSun责编 | ElleTCP connection 客户端与服务器之间数据的发送和返回的过程当中需...

2022-10-29 23:37:17查看全文 >>

ip地址基础入门知识(弱电入门必背的知识)

ip地址基础入门知识(弱电入门必背的知识)

一、IP地址简介1、IP地址的分类和表示IP 地址就是给每个连接到 IPv4 网络上的设备分配的一个网络唯一的地址。IP...

2022-10-29 23:36:13查看全文 >>

tcpipv6如何设置(路由器ipv6需要打开吗)

tcpipv6如何设置(路由器ipv6需要打开吗)

作为一位多年的nas用户,如果问我最大的痛点是什么?我会选远程访问:内网的nas设置其实很简单,但涉及到外网访问难度就会...

2022-10-29 23:54:18查看全文 >>

tcp协议栈(tcp协议栈测试)

tcp协议栈(tcp协议栈测试)

TCP/IP协议栈TCP/IP协议是规范不同主机之间进行通信的一系列协议,其中涉及到数据的封装,传输,寻址等一系列内容,...

2022-10-29 23:39:55查看全文 >>

tcp ip各层协议(tcp ip四层结构及协议)

tcp ip各层协议(tcp ip四层结构及协议)

总结有福利需要C/C ,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,M...

2022-10-29 23:25:07查看全文 >>

文档排行