Tcp是怎样进行可靠准确的传输数据包的?

这篇具有很好参考价值的文章主要介绍了Tcp是怎样进行可靠准确的传输数据包的?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

很多时候,我们都在说Tcp协议,Tcp协议解决了什么问题,在实际工作中有什么具体的意义,想到了这些我想你的技术会更有所提升,Tcp协议是程序员编程中的最重要的一块基石,Tcp是怎样进行可靠准确的传输数据包的呢?

看过很多文章里都提到过Tcp协议的三次握手,在这里我要进行系统的整理一下,学习不能人云亦云,要真的去明白其中的道理,下面是一张理解Tcp/Ip的协议图。

Tcp是怎样进行可靠准确的传输数据包的?,# TCP/IP,swoole,微服务,后端

Tcp三次握手

搞懂这个问题首先要知道什么是连接? 用于保证可靠性和流控制机制的信息,包括 Socket、序列号以及窗口大小叫做连接。RFC793

建立 TCP 连接就是通信的双方需要三种信息达成共识(初始化 Sockets、窗口大小、初始序列号),连接中的一对 Socket 是由互联网地址标志符和端口组成的,窗口大小主要用来做流控制,最后的序列号是用来追踪通信发起方发送的数据包序号,接收方可以通过序列号向发送方确认某个数据包的成功接收。

原因:

  • 通过三次握手才能阻止重复历史连接的初始化;
  • 通过三次握手才能对通信双方的初始序列号进行初始化;
  • 讨论其他次数握手建立连接的可能性;

为什么TIME-WAIT状态必须等待2MSL的时间?

  • 为了保证客户端发送的最后一个ACK报文段能够达到服务器。 这个ACK报文段可能丢失,因而使处在LAST-ACK状态的服务器收不到确认。服务器会超时重传FIN+ACK报文段,客户端就能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重启计时器。最好,客户端和服务器都正常进入到CLOSED状态。如果客户端在TIME-WAIT状态不等待一段时间,而是再发送完ACK报文后立即释放连接,那么就无法收到服务器重传的FIN+ACK报文段,因而也不会再发送一次确认报文。这样,服务器就无法按照正常步骤进入CLOSED状态。
  • 防止已失效的连接请求报文段出现在本连接中。客户端在发送完最后一个ACK确认报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

tcp协议是怎么保证数据准备可靠的

Tcp协议再实际应用中主要是思想朴素而深刻,主要解决的数据包的可靠准确的传递,Tcp协议是怎么做到可靠准确的传送数据包呢?

1.解决不丢包问题:Ack + 重试

网络丢包是一定会出现的,对上层应用来说,只有一个办法就是不停的重发,服务器每次收到一个包,就要对客户端进行确认,反馈给客户端已经收到了数据包,如果客户端在超时时间内没有收到Ack,则重发数据。

在确认的时候,Ack每个数据包都要一一确认,效率太低了,客户端对发送的每个数据包编一个号,编号由小到大单调递增,基于编号就能进行确认。

2.解决不重的问题

因为只要超过了约定时间,客户端还没有收到服务器的确定,客户端就会重发,顺序Ack,服务器给客户端回复Ack=6,意思是所有小于等于6的数据包都收到了,之后凡在收到这个范围的数据包,则判定为重复的包,服务器收到后丢弃即可。

3.解决时序错乱的问题

假设服务器收到了数据包1,2,3,回复客户端(Ack=3),之后接收到5,6,7,而数据包4迟迟没有收到,这个时候怎么办呢?

服务器会把数据包5,6,7暂时存放,直到数据包4的到来,再给客户端回复Ack=7,如果数据包不来,服务器的Ack进度会一直停在那(保持Ack=3),等客户端超时,会把数据包4,5,6,7,全部重新发送,这样服务器收到了数据包4,回复ack=7,同时数据包5,6,7重复了,通过上面说的判重的办法,丢弃到上面的5,6,7。文章来源地址https://www.toymoban.com/news/detail-641185.html

到了这里,关于Tcp是怎样进行可靠准确的传输数据包的?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计网 - TCP重传策略大揭秘:确保数据可靠传输的秘诀

    计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次? 计网 - TCP三次握手原理全曝光:深度解析与实战演示 计网 - TCP四次挥手原理全曝光:深度解析与实战演示 TCP 实现可靠传输的方式之一,是通过序列号与确认应答 。 在 TCP 中,当发送端的数据到达接收主机时,接收

    2024年01月16日
    浏览(49)
  • TCP如何保证可靠性,TCP如何实现可靠性传输的

    tcp 如何保证可靠性 大家都知道TCP是可靠性传输协议,既然是可靠的,就需要解决比如包丢失了、数据被破坏了、包重复了、乱序了等等这样的问题。下面将从几个方面介绍TCP的可靠性。 1. 校验和 TCP每一段报文都有校验和,这保证了报文不被破坏或篡改,如果收到的报文在校

    2024年02月10日
    浏览(50)
  • TCP 的可靠传输

    我们知道相比于 UDP, TCP 的传输是可靠的, 啥意思呢? 就是 UDP 发送的数据, 它自己不知道发送的数据对方是否接收到. 而 TCP 发送的数据, 它知道对方是否接收到, 也就是说对方会给个应答. 假设一个场景 : 甲要付款给乙, 甲的账户上明明扣了款, 但是乙却迟迟没收到, 那甲还要付款

    2023年04月15日
    浏览(32)
  • 运输层:TCP可靠传输

    笔记来源: 湖科大教书匠:TCP可靠传输 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 TCP实现可靠传输的方式: 以字节为单位的滑动窗口 发送方将31 ~ 41号报文段发送 假设32 ~ 33号报文段先到达 确认报文段确认ack=31(收到31号之前的报文段) 发送31号报文段 发送确

    2024年02月13日
    浏览(41)
  • TCP协议如何实现可靠传输

    TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。 TCP最主要的特点: TCP是面向连接的输出层协议             每一条TCP连接只能有两个端点,每条TCP连接只能是

    2024年02月15日
    浏览(58)
  • 【lwip】14-TCP协议之可靠传输的实现(TCP干货)

    ‍ 前面章节太长了,不得不分开。 这里已源码为主,默认读者已知晓概念或原理,概念或原理可以参考前面章节,有分析。 参考:李柱明博客:https://www.cnblogs.com/lizhuming/p/17438743.html ‍ lwip的时钟机制可以翻看前面章节。 lwip的TCP可靠传传输的实现离不开两个时钟处理函数:

    2024年02月06日
    浏览(50)
  • TCP消息传输可靠性保证

    三次握手 TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。 所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。 第一次握手:客

    2024年02月12日
    浏览(45)
  • TCP如何保证传输可靠性?

    文章参考: 《网络是怎样连接的》:https://book.douban.com/subject/26941639/ 《图解网络》:https://www.xiaolincoding.com/network/ 在开始阅读该博客之前,先要好好了解一下 TCP报文头部 到底有那些信息,阅读后续内容时有任何模糊的地方都可以回来这里 查看梳理 ,接下来我来解释一下:

    2024年02月20日
    浏览(49)
  • 网络原理(二)TCP的可靠传输

    网络协议的在实际运用是分为5层协议及: 应用层 传输层 网络层 数据链路层 物理层 这五层结构在,java 网络编程中已经有所现,具体用法具体实现的功能,都有。 这里主要的一个协议也是目前网络上最常用的一个协议,HTTP协议。 这层结构,决定数据要传输什么,拿到数据

    2024年02月09日
    浏览(39)
  • TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

    先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据):确定进程之间 通信的性质 以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS,DHCP,FTP,POP3(Post Office Protocol)、SMTP(Simple Mail Transfer P

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包