tcp和udp网络协议

简介

TCP和UDP协议是IP网络中不一样终端间通信的两种传输协议。
在OSI模型中,TCP、UDP是传输层协议,其中TCP是面向链接的协议,UDP是无链接的协议。算法

TCP

什么是TCP

  • 是传输层的一种面向链接的协议
  • 处理下层的不可靠数据使之变得可靠(肯定经过网络发送的数据报的状态而且若是部分已被丢弃则处理信息的重发的任务并按正确的顺序从新组合成消息以提供可靠性)
  • TCP驻留在传输层中,并仅驻留在实际处理数据报的机器上,确保数据报已从源机器到目标机器;它不驻留在简单路由数据报的设备上,所以网关中没有TCP层。
    tcp协议留驻在传输层示意图
    tcp协议留驻在传输层示意图

TCP的特色

  • 单播协议:
    TCP基于单播网络模型,支持两方之间的数据交换。它不支持广播或多播网络模型。数据库

  • 链接状态:
    TCP使用两个端点之间的同步状态,而不是在网络内强加一个状态来支持链接。
    该同步状态被设置为初始链接过程的一部分,所以TCP能够被认为是面向链接的协议。
    许多协议设计旨在确保每一个本地状态转换被传送到远程方并由其确认。安全

  • 可靠性:bash

    可靠性意味着在链接的一端传递给TCP驱动程序的八位字节流将经过网络传输,使得流做为相同的八位字节序列呈现给远程进程,顺序与生成的由发送方。这意味着协议检测数据流的分段什么时候已被网络丢弃,从新排序,复制或损坏。
    在必要的状况下,发送器将重传损坏的段,以便容许接收器重建原始数据流。
    这意味着TCP发送方必须保持全部发送数据的本地副本,直到它接收到接收方已经完成数据的准确传送的指示为止。服务器

  • 全双工:网络

    TCP是全双工协议; 它容许双方在单个TCP链接的上下文内发送和接收数据。并发

  • 流:tcp

    虽然TCP使用分组结构用于网络传输,但TCP是真正的流传输协议,而且应用级网络操做不透明。一些协议明确地封装每一个应用事务;
    对于每一次写,都必须有一个匹配的读。以这种方式,在网络上保留数据流到逻辑记录结构的应用派生分段。
    TCP不保留施加在数据流上的这种隐式结构,使得在网络协议内的写和读操做之间不存在配对。
    例如,TCP应用能够将三个数据块按顺序写入网络链接,其能够由远程读取器在单个读取操做中收集。TCP会话中使用的数据块(段)的大小在会话开始时协商。
    发送器尝试在接收器的最大段大小,配置的发送器的最大段大小和最大可支持的非分段分组大小的限制内使用它能够用于数据传输的最大段大小网络路径(路径最大传输单元[MTU])。
    路径MTU周期性地刷新以适应在TCP链接活动时可能发生在网络内的任何改变。spa

  • 速率适配:设计

    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传输图

    TCP数据传输服务实际上体现了六个不一样的子服务:

    • 全双工:使链接的两端在任什么时候间,甚至同时发送。

    • 及时性:使用计时器可确保在合理的时间内传输数据。

    • 有序:从一个应用程序发送的数据将在另外一端以相同的顺序接收。这发生,尽管事实上数据报可能经过IP被无序地接收,由于TCP在将消息传递到较高层以前以正确的顺序从新组装消息。

    • 标签:全部链接具备商定的优先级和安全值。

    • 受控流:TCP能够经过使用缓冲区和窗口限制来调节信息流。

    • 错误校订:校验和确保数据没有错误(在校验和算法的限制内)。

  • 关闭链接
    为了关闭链接,TCP之一从ULP接收关闭原语并发出具备设置为开的FIN标志的消息。

    tcp关闭链接示意图
    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)的数据移动功能之间的接口,可是它们以很是不一样的方式实现。所以,这两种协议为高层协议提供了选择,容许每一个协议根据其须要选择适当的协议。

有助于说明这两种协议的最重要的基本属性以及它们如何彼此对比的表:

tcp&udp比较图
tcp&udp比较图
相关文章
相关标签/搜索