`

tcp传输的可靠性

 
阅读更多

端到端。   “端”指的是“端口”。   端到端协议,是传输层提供的协议。传输层下层的网络层的IP协议在主机之间传输数据,IP地址只标志主机,并不区分进程。区分到底是主机上哪个进程在通信,就是依靠端到端协议。

 

  

                                            端到端协议简图

    2,面向对象连接  

 

       使用TCP协议,两个进程在传送实际数据之前先建立一个“连接通道”。所谓的连接通道并不是一条端到端TDM或FDM电路,也不是一条虚电路。TCP协议只在端系统中运行,不在中间的网络元素(路由器和链路层交换机)中运行,所以中间元素并不维持TCP连接状态。中间路由器对TCP连接完全毫不知情,它们看到的只是数据报,而不是连接。下面,我们简单说一下建立TCP连接的过程。

 

      一开始学写通信程序时,虽然不懂基本原理,当时Java程序是这样写的:(发起通信的客户端程序)Socket client =new Socket(IP,port);  IP,是服务器的IP地址,port是服务器进程的端口号,端口就是用来标识进程的。 这时,客户机的运输层便开始与服务器的传输层建立连接了。客户机的应用程序首先通知客户机的TCP,它想建立一个与服务器上的某个进程(已经用Port 标识好了)之间的连接。客户机的TCP会用以下方式与服务器的TCP建立一条TCP连接:

 

      第一步:客户端的TCP首先向服务器的TCP发送一个特殊的TCP报文段。该报文段并不包含应用层的数据,并封装在一个IP数据报中,发给服务器。

 

      第二步: 该IP数据报到达服务器后,为该TCPP连接分配TCP缓存和变量(这个暂且不解释,我们先说大体过程),并向客户机TCP发送允许连接的报文段(同样不包含应用层数据)。

 

      第三步:客户机收到服务器回应的报文段后,客户机同样为TCP连接分配缓存和变量,并且,客户机再向服务器发送一次报文段,对服务器允许连接进行确认。

 

     三步完成后,客户机和服务器就可以互相发送报文段了。这种连接方式成为 三次握手。通俗的说,这种连接方式确保双方已经做好准备接收数据。

 

 


 

 

 

3,可靠,按序的数据流 

 

    网络层的IP协议传输数据是不可靠的,数据报有可能丢失,乱序,出错。TCP在IP的不可靠的基础上建立了一种可靠数据传输服务。

 

 我们先说一下 , 可靠数据传输服务。

 

 可靠数据传输服务的实现自然依靠于 可靠数据传输协议

 

 我们要研究一系列协议,从简单到复杂,一个一个来。

 

    1.完全可靠信道上的可靠数据传输  rdt 1.0

         即,底层是完全可靠的。发送方发送数据,接收方接收数据。两者之间无需任何反馈信息,因为数据是完全可靠的。

    2,具有比特差错信道上的可靠数据传输  rdt 2.0

         现实的是,底层信道的比特可能受损,所以需要反馈。当接收方收到正确的数据包后,反馈一个ACK,错误的数据包,反馈NAK。 此时的协议采用了差错检测。

    3,在rdt 2.0 的基础上,若,反馈出错或丢失,要管理丢失的反馈。给分组加seq #两个 #’s (0,1),必须查收ACK/NAK   这是 rdt 2.1

 

    若,两个数据包,1,2     1号出错,2号正确,但 ACK丢失,则传输过程是:


 


 4,rdt 2.2 无NAK的协议     

        功能等同 rdt2.1, 但仅使用 ACK不使用 NAK, 接受方只为最后正确接受的报文发送 ACK,接收方必须显式表明ACK 的分组 seq #,发送方得到双重ACK导致 NAK的相同结果: 重传正确的分组。

 

       如,两个数据包 1,2  1号正确,2号出错  


 

分享到:
评论

相关推荐

    TCP及其可靠性分析

    通过对TCP段格式的理解以及TCP连接建立与拆除流程的学习,我们可以更深入地理解TCP是如何保证数据传输的可靠性的。在未来的发展中,随着网络技术的进步,TCP协议也会不断优化和发展,更好地适应日益复杂的网络环境。

    Qt_TCP传输文件

    **Qt TCP传输文件详解** Qt是一个跨平台的C++应用程序开发框架,广泛应用于GUI和非GUI应用程序的开发。在开发过程中,有时我们需要实现文件的网络传输功能,TCP(Transmission Control Protocol)作为传输层的一种...

    tcp 文件可靠传输

    在TCP文件传输中,确保数据的可靠性是关键,这包括了数据的顺序传输、错误检测与纠正以及流量控制等多个方面。 首先,TCP建立连接的过程称为三次握手(Three-Way Handshake)。客户端发送一个SYN(同步序列编号)包...

    qt tcp传输文件

    在Qt框架中,TCP(Transmission Control Protocol)是一种广泛用于网络通信的协议,它提供了一种可靠的、基于连接的数据传输方式。TCP确保了数据的顺序传输和错误检查,这对于文件传输等应用至关重要。本示例主要...

    C#通过TCP传输文件.rar_C#网口传输_tcp_tcp传输文件c#_文件传输_服务端与

    总之,C#通过TCP传输文件涉及网络编程基础、数据序列化和流操作等多个知识点,理解并熟练掌握这些技能,对于开发高效、可靠的网络应用程序至关重要。通过实际操作和学习提供的源代码,能更好地巩固理论知识并提升...

    tcp传输工具.zip

    本压缩包文件“tcp传输工具.zip”包含了一个能够同时作为客户端和服务端运行的工具,它使得用户可以对TCP和UDP协议进行深入理解和实践。 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP中,数据...

    TCP/IP可靠数据传输代码实现

    首先,TCP通过建立连接来确保数据传输的可靠性,这个过程被称为三次握手。在代码实现中,我们需要创建socket对象,然后通过send和recv函数发送和接收数据。三次握手涉及SYN(同步序列编号)和ACK(确认)标志的交换...

    TCP传输double数据.zip

    TCP通过三次握手建立连接,四次挥手断开连接,确保了数据传输的可靠性。在传输过程中,TCP还会进行流量控制和拥塞控制,防止数据发送过快导致网络拥塞。 在实现TCP客户端和服务器端的通信时,首先要创建套接字...

    tcp传输1M数据全过程1

    TCP传输1M数据全过程详解 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,它提供了点对点的通信服务。在 TCP 传输数据的过程中,存在着各种机制来确保数据的可靠传输和避免网络拥塞。在...

    labview传输_tcp传输_labview_

    在“labview传输_tcp传输_labview_”这个主题中,我们主要探讨的是如何利用LabVIEW实现TCP(Transmission Control Protocol)传输,这是一种网络通信协议,常用于设备之间的可靠数据交换。 TCP是一种面向连接的协议...

    TCP协议可靠性数据传输实现原理分析.doc

    TCP 协议可靠性数据传输实现原理分析 TCP 协议是一种面向连接的传输层协议,为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议(如 IP 协议)是非可靠的,其自身提供机制保证数据的...

    基于TCP传输的H264流解码和播放

    在IT行业中,视频编码与传输技术是至关重要的领域,尤其是随着网络视频应用的普及,H264编码和TCP传输已经成为标准配置。本主题聚焦于“基于TCP传输的H264流解码和播放”,这涉及到多个核心知识点,包括H264编码标准...

    tcp 传输图片文件

    如果服务器没有收到确认,会重发数据段,确保数据的可靠性。 5. **数据重组**:客户端根据TCP的顺序保证机制,按照正确的序列号将数据段重新组合成完整的图片文件。 6. **关闭连接**:当所有数据都成功传输后,...

    TCP.rar_TCP 传输_TCP 文件传输_socket+文件传输_tcp文件传输_文件传输 C

    1. **TCP传输**:TCP是网络通信中用于传输数据的主要协议,它通过三次握手建立连接,并使用序列号和确认应答来保证数据的可靠传输。 2. **文件传输**:TCP常用于文件传输,因为它可以确保文件在传输过程中的完整性...

    C++实现的TCP协议的文件传输

    在TCP传输中,我们需要将文件内容拆分成多个数据块,逐个发送。 6. **数据发送与接收**:使用`send()`或`write()`函数发送数据,`recv()`或`read()`函数接收数据。TCP协议不保证一次发送的数据能一次性接收,因此...

    MFC实现TCP数据传输

    TCP是一种面向连接、可靠的网络协议,确保数据在互联网上按顺序、无丢失地传递。 首先,实现TCP数据传输的关键在于理解套接字(Socket)编程。在MFC中,你可以使用CSocket类来创建和管理套接字。创建一个CSocket...

    基于TCP的文件传输

    基于TCP的文件传输是通过TCP协议的可靠性和顺序性保证文件的安全、完整传输。QQ作为典型的TCP应用,其文件传输功能利用了TCP的各种优势,如连接可靠性、流量控制和优化策略,同时考虑了安全性,确保了用户文件的高效...

    用tcp协议传输文件

    在TCP协议中,数据被分成多个数据段进行传输,并通过序列号、确认应答、重传机制等确保数据的正确性和完整性,为文件传输提供了稳定的基础。 在实现TCP协议传输文件的过程中,我们需要遵循以下几个关键步骤: 1. *...

    用QT写的TCP传输的文件,新手可以参考一下

    在这个项目中,"用QT写的TCP传输的文件"是一个很好的起点,尤其是对于初学者来说,它可以帮助理解如何利用QT库来实现基于TCP协议的文件传输功能。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、...

Global site tag (gtag.js) - Google Analytics