,端到端。 “端”指的是“端口”。 端到端协议,是传输层提供的协议。传输层下层的网络层的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协议也会不断优化和发展,更好地适应日益复杂的网络环境。
**Qt TCP传输文件详解** Qt是一个跨平台的C++应用程序开发框架,广泛应用于GUI和非GUI应用程序的开发。在开发过程中,有时我们需要实现文件的网络传输功能,TCP(Transmission Control Protocol)作为传输层的一种...
在TCP文件传输中,确保数据的可靠性是关键,这包括了数据的顺序传输、错误检测与纠正以及流量控制等多个方面。 首先,TCP建立连接的过程称为三次握手(Three-Way Handshake)。客户端发送一个SYN(同步序列编号)包...
在Qt框架中,TCP(Transmission Control Protocol)是一种广泛用于网络通信的协议,它提供了一种可靠的、基于连接的数据传输方式。TCP确保了数据的顺序传输和错误检查,这对于文件传输等应用至关重要。本示例主要...
总之,C#通过TCP传输文件涉及网络编程基础、数据序列化和流操作等多个知识点,理解并熟练掌握这些技能,对于开发高效、可靠的网络应用程序至关重要。通过实际操作和学习提供的源代码,能更好地巩固理论知识并提升...
本压缩包文件“tcp传输工具.zip”包含了一个能够同时作为客户端和服务端运行的工具,它使得用户可以对TCP和UDP协议进行深入理解和实践。 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP中,数据...
首先,TCP通过建立连接来确保数据传输的可靠性,这个过程被称为三次握手。在代码实现中,我们需要创建socket对象,然后通过send和recv函数发送和接收数据。三次握手涉及SYN(同步序列编号)和ACK(确认)标志的交换...
TCP通过三次握手建立连接,四次挥手断开连接,确保了数据传输的可靠性。在传输过程中,TCP还会进行流量控制和拥塞控制,防止数据发送过快导致网络拥塞。 在实现TCP客户端和服务器端的通信时,首先要创建套接字...
在“labview传输_tcp传输_labview_”这个主题中,我们主要探讨的是如何利用LabVIEW实现TCP(Transmission Control Protocol)传输,这是一种网络通信协议,常用于设备之间的可靠数据交换。 TCP是一种面向连接的协议...
TCP传输1M数据全过程详解 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,它提供了点对点的通信服务。在 TCP 传输数据的过程中,存在着各种机制来确保数据的可靠传输和避免网络拥塞。在...
TCP 协议可靠性数据传输实现原理分析 TCP 协议是一种面向连接的传输层协议,为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议(如 IP 协议)是非可靠的,其自身提供机制保证数据的...
在IT行业中,视频编码与传输技术是至关重要的领域,尤其是随着网络视频应用的普及,H264编码和TCP传输已经成为标准配置。本主题聚焦于“基于TCP传输的H264流解码和播放”,这涉及到多个核心知识点,包括H264编码标准...
如果服务器没有收到确认,会重发数据段,确保数据的可靠性。 5. **数据重组**:客户端根据TCP的顺序保证机制,按照正确的序列号将数据段重新组合成完整的图片文件。 6. **关闭连接**:当所有数据都成功传输后,...
1. **TCP传输**:TCP是网络通信中用于传输数据的主要协议,它通过三次握手建立连接,并使用序列号和确认应答来保证数据的可靠传输。 2. **文件传输**:TCP常用于文件传输,因为它可以确保文件在传输过程中的完整性...
在TCP传输中,我们需要将文件内容拆分成多个数据块,逐个发送。 6. **数据发送与接收**:使用`send()`或`write()`函数发送数据,`recv()`或`read()`函数接收数据。TCP协议不保证一次发送的数据能一次性接收,因此...
TCP是一种面向连接、可靠的网络协议,确保数据在互联网上按顺序、无丢失地传递。 首先,实现TCP数据传输的关键在于理解套接字(Socket)编程。在MFC中,你可以使用CSocket类来创建和管理套接字。创建一个CSocket...
基于TCP的文件传输是通过TCP协议的可靠性和顺序性保证文件的安全、完整传输。QQ作为典型的TCP应用,其文件传输功能利用了TCP的各种优势,如连接可靠性、流量控制和优化策略,同时考虑了安全性,确保了用户文件的高效...
这个“Android客户端TCP传输demo”是为开发者提供一个基础的平台,了解和学习如何在Android应用中实现TCP通信,尤其是涉及到文件的上传和下载功能。 TCP协议保证了数据的顺序和完整性,通过三次握手建立连接,并...
在TCP协议中,数据被分成多个数据段进行传输,并通过序列号、确认应答、重传机制等确保数据的正确性和完整性,为文件传输提供了稳定的基础。 在实现TCP协议传输文件的过程中,我们需要遵循以下几个关键步骤: 1. *...