一直都听老师讲,"TCP/IP 协议是可靠传输协议,相比于UDP传输数据更加可靠,是因为使用TCP传输时,会建立一个传输通道,并且,TCP还有差错重传机制" ,对这些话,说不上真的理解。”什么传输通道?“,怎么个”差错重传“?
实践很重要,但理论同样很重要。不知基本原理,只知道敲几行代码就真的成了一个体力劳动者。要知其然,更要知其所以然。现在,将自己理解的东西做一个总结。
TCP协议,是一种面向连接的传输协议。TCP有四个特点:1.端对端 2.面向连接 3.可靠,按序的数据流 4.批量数据发送
现在,我们一个一个的说。
1,端到端。 “端”指的是“端口”。 端到端协议,是传输层提供的协议。传输层下层的网络层的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号出错
下面还有 GBN协议,和SR协议,以及TCP 所采用的可靠数据传输原理,以及 TCP 的批量数据发送,就在下一篇啦~~~~好累啊~~~~而且,我打算 做 两个 Java Applet 来演示 GBN 协议 和SR 协议~~~就在下一篇啦~~~总结好累啊~~~~
- 大小: 32 KB
- 大小: 15.1 KB
- 大小: 12.1 KB
- 大小: 19.8 KB
- 大小: 41.8 KB
- 大小: 63.6 KB
- 大小: 43.6 KB
分享到:
相关推荐
通过对TCP协议的工作原理及其运行机制的研究,我们可以了解到TCP是如何通过三次握手和四次挥手来确保数据的可靠传输,以及TCP连接的各种状态变迁。这对于理解网络通信的底层机制以及进行网络编程有着至关重要的作用...
TCP(传输控制协议)与UDP相反,提供了一种面向连接的、可靠的通信方式。TCP的特点包括确认机制、流量控制、拥塞控制和连接管理。TCP的状态机是其复杂性的体现,包括建立连接(三次握手)、传输数据、释放连接(四次...
TCP(传输控制协议)是一种面向连接的协议,它确保了数据的可靠传输。在TCP协议下进行Socket编程,开发者需要注意以下几点: - **连接建立**:客户端通过向服务器发起连接请求,服务器端通过调用`accept()`接受连接...
每一条 TCP 连接都是可靠连接,且只有两个端点,TCP 连接是从 Server 端到 Client 端的点对点的,通过 TCP 传输数据,无差错,不重复不丢失。 TCP 协议的通信是全双工的,TCP 协议允许通信双方的应用程序在任何时候...
1. **建立TCP套接字连接**:客户端(浏览器)通过TCP/IP协议与服务器建立连接。 2. **发送HTTP请求报文**:客户端构造请求报文,并通过已建立的TCP连接发送给服务器。 3. **接收HTTP应答报文**:服务器处理请求后,...
TCP(传输控制协议)是一种面向连接的协议,提供了可靠的、顺序的数据传输服务。在基于TCP的Socket编程中,通常涉及以下几个关键步骤: **1. 创建Socket** 首先,客户端和服务端各自创建一个Socket。这个过程涉及...
TCP协议是互联网通信中广泛使用的传输层协议,它为应用层提供可靠的、基于流的传输服务。TCP的一个核心功能就是确保数据包正确、有序地送达目的地。在TCP中,重传机制是一个非常关键的技术,以确保数据包在网络中...
MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少...
FTP协议使用两个TCP连接来完成文件传输任务。首先,建立一个控制连接,客户端主动连接到服务器的熟知端口21,用于发送FTP命令和接收服务器响应。这个连接通常具有低延迟的需求,因为命令通常是实时输入的。其次,当...
TCP负责数据的可靠传输,IP则负责数据的路由。同时,交换机和路由器是网络中的关键设备,它们通过控制数据包的转发,实现了网络间的通信。 信号处理是通信工程中的另一重要环节,包括信号的数字化、滤波、编码和...
从标签“UDP 图像传输-1”我们可以推断,这可能是一个系列资源的第一部分,可能涵盖基础理论、技术实现和相关案例分析。 根据压缩包子文件的文件名称,我们可以预见到以下的知识点: 1. **基于UDP的多媒体数据实时...
- **基础通信层**:利用TCP/IP协议栈,确保数据传输的可靠性和稳定性。 - **应用层**:采用SOAP协议封装管理信息,利用HTTP 1.1协议进行消息传输。 - **安全性**:推荐使用SSL/TLS协议进行加密通信,保障数据安全。 ...
TCP是一种面向连接的协议,它确保数据的可靠传输,通过建立连接、确认应答、顺序传输和错误检测等机制来保证数据的完整性。而UDP则是一种无连接的协议,它不保证数据包的顺序、可靠性和重传,因此具有更高的传输效率...
这种连接方式在自动化技术中多用于现场总线技术,如Profibus和Modbus等,其中,通过通信处理器(例如CP243-1、CP343-1、CP443-1)可以实现不同设备间的数据通信。 TCP连接基于TCP/IP协议,它是一种更为通用的通信...
HTTP(超文本传输协议)是Web应用程序的基础,它定义了客户端(通常是浏览器)与服务器之间的通信方式。HTTP协议建立在TCP/IP协议之上,是应用层协议。TCP/IP协议中的TCP负责提供可靠的数据传输,而UDP则更注重速度...
《Linux下的网络通讯程序设计浅析》这篇文章深入探讨了Linux操作系统在网络通讯程序设计中的应用,特别是在TCP/IP协议上的实现。Linux起源于1991年,由芬兰赫尔辛基大学的学生Linus Torvalds创建,最初是一个为个人...
- **4.1.5 连接:** 实现 TCP/IP 等网络协议的封装。 - **4.1.6 传输,通道,连接:** 组件间数据传输的管理和控制。 - **4.1.7 候选项:** 用于 NAT 穿越过程中地址和端口的选择。 - **4.1.8 数据包:** 包括数据包的...
不仅要确保有足够的网络带宽支持高质量的视频传输,还需要通过高效的压缩技术、多播技术、适当的传输协议和严格的服务质量控制来保障视频会议的顺利进行。此外,合理选择并应用相应的通信协议也是构建成功的关键。...