简介
TCP和UDP协议是IP网络中不同终端间通讯的两种传输协议。
在OSI模型中,TCP、UDP是传输层协议,其中TCP是面向连接的协议,UDP是无连接的协议。
TCP
什么是TCP
- 是传输层的一种面向连接的协议
- 处理下层的不可靠数据使之变得可靠(确定通过网络发送的数据报的状态并且如果部分已被丢弃则处理信息的重发的任务并按正确的顺序重新组合成消息以提供可靠性)
- TCP驻留在传输层中,并仅驻留在实际处理数据报的机器上,确保数据报已从源机器到目标机器;它不驻留在简单路由数据报的设备上,因此网关中没有TCP层。
tcp协议留驻在传输层示意图
TCP的特点
单播协议:
TCP基于单播网络模型,支持两方之间的数据交换。它不支持广播或多播网络模型。连接状态:
TCP使用两个端点之间的同步状态,而不是在网络内强加一个状态来支持连接。
该同步状态被设置为初始连接过程的一部分,因此TCP可以被认为是面向连接的协议。
许多协议设计旨在确保每个本地状态转换被传送到远程方并由其确认。可靠性:
可靠性意味着在连接的一端传递给TCP驱动程序的八位字节流将通过网络传输,使得流作为相同的八位字节序列呈现给远程进程,顺序与生成的由发送方。这意味着协议检测数据流的分段何时已被网络丢弃,重新排序,复制或损坏。
在必要的情况下,发送器将重传损坏的段,以便允许接收器重建原始数据流。
这意味着TCP发送方必须保持所有发送数据的本地副本,直到它接收到接收方已经完成数据的准确传送的指示为止。全双工:
TCP是全双工协议; 它允许双方在单个TCP连接的上下文内发送和接收数据。
流:
虽然TCP使用分组结构用于网络传输,但TCP是真正的流传输协议,并且应用级网络操作不透明。一些协议明确地封装每个应用事务;
对于每一次写,都必须有一个匹配的读。以这种方式,在网络上保留数据流到逻辑记录结构的应用派生分段。
TCP不保留施加在数据流上的这种隐式结构,使得在网络协议内的写和读操作之间不存在配对。
例如,TCP应用可以将三个数据块按顺序写入网络连接,其可以由远程读取器在单个读取操作中收集。TCP会话中使用的数据块(段)的大小在会话开始时协商。
发送器尝试在接收器的最大段大小,配置的发送器的最大段大小和最大可支持的非分段分组大小的限制内使用它可以用于数据传输的最大段大小网络路径(路径最大传输单元[MTU])。
路径MTU周期性地刷新以适应在TCP连接活动时可能发生在网络内的任何改变。速率适配:
TCP也是速率自适应协议,因为数据传输速率旨在适应网络内的主要负载条件并适应接收机的处理能力。
没有预定的TCP数据传输速率; 如果网络和接收器都具有额外的可用容量,则TCP发送器将尝试向网络注入更多数据以占用此可用空间。
相反,如果有拥塞,TCP发送方将降低其发送速率以允许网络恢复。该适配功能试图实现最高可能的数据传输速率,而不触发一致的数据丢失。
TCP建立连接三次握手
客户端发送SYN消息; 服务器发送组合对客户端的SYN的ACK并且包含服务器的SYN的消息; 然后客户端发送对服务器的SYN的ACK。
连接在其生命周期中经过一系列状态:
侦听,SYN发送,SYN接收,建立,FIN-WAIT-1,FIN-WAIT-2,CLOSE-等待,CLOSING,LAST-ACK,TIME-WAIT和虚构状态CLOSED。CLOSED是虚构的,因为它代表没有TCP时的状态,因此没有连接。
LISTEN - 表示等待来自任何远程TCP和端口的连接请求。
SYN-SENT - 表示在发送连接请求之后等待匹配的连接请求。
SYN-RECEIVED - 表示在接收和发送连接请求之后等待确认连接请求确认。
ESTABLISHED - 表示打开连接,收到的数据可以传递给用户。连接的数据传输阶段的正常状态。
FIN-WAIT-1表示等待来自远程TCP的连接终止请求,或者先前发送的连接终止请求的确认。
FIN-WAIT-2 - 表示等待来自远程TCP的连接终止请求。
CLOSE-WAIT - 表示等待来自本地用户的连接终止请求。
CLOSING - 表示等待来自远程TCP的连接终止请求确认。
LAST-ACK-表示等待先前发送到远程TCP的连接终止请求的确认(其包括对其连接终止请求的确认)。
TIME-WAIT - 表示等待足够的时间通过,以确保远程TCP接收到其连接终止请求的确认。
CLOSED - 根本不表示连接状态。复制代码
TCP连接响应事件从一个状态进行到另一个状态。事件是用户调用,OPEN,SEND,RECEIVE,CLOSE,ABORT和STATUS; 传入段,特别是包含SYN,ACK,RST和FIN标志的段; 和超时。
连接建立和终止
建立连接
只有在两个机器之间的连接不存在,两个机器都同意连接,并且两个机器都有足够的TCP资源来为连接提供服务时,才能在两台机器之间建立连接。
如果不满足这些条件中的任何一个,则不能进行连接。连接的接受可以由应用或系统管理例程触发。数据传输
对于由机器A的TCP从ULP接收的每个数据块,TCP封装它并且以递增的序列号将其发送到机器B. 在机器B接收到消息之后,它使用增加下一个序列号的分段确认来确认它(并且因此指示它接收到该序列号的一切)。
tcp传输图
TCP数据传输服务实际上体现了六个不同的子服务:全双工:使连接的两端在任何时间,甚至同时发送。
及时性:使用计时器可确保在合理的时间内传输数据。
有序:从一个应用程序发送的数据将在另一端以相同的顺序接收。这发生,尽管事实上数据报可能通过IP被无序地接收,因为TCP在将消息传递到较高层之前以正确的顺序重新组装消息。
标签:所有连接具有商定的优先级和安全值。
受控流:TCP可以通过使用缓冲区和窗口限制来调节信息流。
错误校正:校验和确保数据没有错误(在校验和算法的限制内)。
关闭连接
为了关闭连接,TCP之一从ULP接收关闭原语并发出具有设置为开的FIN标志的消息。tcp关闭连接示意图
在图中,机器A的TCP发送请求以关闭具有下一个序列号的机器B的连接。机器B然后将发送对该请求及其下一个序列号的确认。随后,机器B通过其ULP将关闭消息发送到应用程序,并等待应用程序确认关闭。这一步不是绝对必要的; TCP可以在没有应用程序批准的情况下关闭连接,但是一个良好的系统会通知应用程序状态的改变
UDP
什么是UDP
UDP是无连接和不可靠的传输协议。两个端口用于标识源和目标机器内的端点。当不需要可靠的传递时,使用用户数据报协议来代替TCP。然而,UDP从不用于发送诸如网页,数据库信息等重要数据。流式媒体例如视频,音频和其他使用UDP因为它提供速度。
UDP的特性
端到端。UDP可以识别在计算机上运行的特定进程。
不可靠,无连接传递(例如USPS:UDP使用无连接通信设置。在这个UDP中不需要在发送数据之前建立连接。通信仅由数据段本身组成)。
与IP相同的尽力语义
无ack,无序列,无流量控制
丢失,复制,延迟,无序或丢失连接
快速,低开销
因为以上特性udp更适合:
- 适合可靠的本地网络
- RTP(实时传输协议
摘要
UDP是传输层协议。UDP是一种无连接和不可靠的协议。UDP不做流量控制,错误控制或重传坏段。UDP比TCP快。UDP通常用于流音频和视频。UDP从未用于重要的文档,如网页,数据库信息等。UDP传输由8字节头组成的段。它包含源端口,目标端口,UDP长度和校验和。UDP校验和用于检测传输段中的“错误”。
TCP VS UDP
用户数据报协议(UDP)和传输控制协议(TCP)是TCP / IP协议组中传输层的“同级”。它们执行相同的角色,提供应用程序和Internet协议(IP)的数据移动功能之间的接口,但是它们以非常不同的方式实现。因此,这两种协议为高层协议提供了选择,允许每个协议根据其需要选择适当的协议。
有助于说明这两种协议的最重要的基本属性以及它们如何彼此对比的表: