下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

认识TCP与UDP这两个传输层协议

作者:课课家教育     来源: http://www.kokojia.com点击数:1833发布时间: 2019-02-28 09:19:06

标签: 网络安全传输层协议TCPUDP

软考,您想通过吗?一次通过才是硬道理

      在OSI模型当中,大家基本上都知道这是一个七层模型,而传输层就是这七层里其中的一层,它的作用是负责完整报文的进程到进程的交付。传输层协议包括了TCP与UDP,在这一文里,我们就来认识一下这两个传输层协议吧,看看它们揭开面纱后到底是怎样的。

  TCP(传输控制协议)

  TCP是面向连接的协议,“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接,它可以提供可靠的、全双工的、面向字节流的,端到端的服务。

  1.三次握手

  一个TCP连接必须要经过三次“握手”才能建立起来,这三个简单过程包括主要:

  第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

  第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

  第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

  其中,位码即tcp标志位,有6种标示: SYN(synchronous建立联机)、 ACK(acknowledgement 确认)、 PSH(push传送)、 FIN(finish结束) 、RST(reset重置)、 URG(urgent紧急)

  三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

  三次握手的特点:

  没有应用层的数据

  SYN这个标志位只有在TCP建产连接时才会被置1

  握手完成后SYN标志位被置0

  2.TCP报文格式

      TCP报文的格式及其与IP数据报的关系如图1所示。

认识TCP与UDP这两个传输层协议_网络安全_传输层协议_TCP_UDP_课课家 

图1 TCP报文的格式及它与IP数据报的关系

  3.TCP拥塞控制策略

  传输层的主要任务是保证端到端可靠的传输。端到端之间跨越的是若干个网络(局域网和广域网)。所以要保证网络高的传输效率,必须保证网络的畅通,不会发生拥塞现象。因为一旦网络发生拥塞,不但网络的传输速度会降低,而且还会导致数据的丢失和重传。

  所谓拥塞控制就是防止过多的数据注入网络,使网络中的链路和交换结点(路由器)的负荷不致过载而发生拥塞。TCP的拥塞控制主要有以下四种方法:慢开始、拥塞避免、快重传和快恢复。

  (1)慢开始和拥塞避免

  因为当主机开始发送数据时,如果立即将较大的发送窗口中的全部数据字节都注入到网络,由于还不清楚网络的状况,有可能引起网络拥塞。经验证明,较好的方法是试探一下,即由小到大逐渐增大发送端的拥塞窗口数值,就是所谓的慢开始算法。

  慢开始的工作过程:通常在刚酣开始发送报文段时可先将拥塞窗口cwnd 设置为一个最大报文段MSS (Maximum Segment Size) 的数值。而在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS 的数值,如图2所示。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。

      当然,在这种机制下,拥塞窗口也不会一直成指数增长,通常会设置一个慢开始门限值ssthresh ,当拥塞窗口达到此值时,就变为线性增长,执行拥塞避免算法。在整个过程中一旦出现数据传输超时,就会把拥塞窗口重新回到1,并再次开始慢开始算法。

 慢开始算法

图2 慢开始算法

  (2)快重传和快恢复

  快重传和快恢复是TCP拥塞控制机制中为了进一步提高网络性能而设置的两个算法。

      快重传算法规定,发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应立即重传丢失的报文段而不必继续等待为该报文段设置的重传计时器的超时,具体过程如图3所示。不难看出,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段,从而提高吞吐率。

快重传算法 

图3 快重传算法

  (3)随机早期检测RED

  TCP拥塞管理的另一种方法是预防性分组丢弃。使用这种方法,路由器在输出缓存完全装满之前,即网络发生拥塞之前,准确地说是检测到网络拥塞的早期征兆时(路由器的平均队列长度超过一定的门限值),就丢弃一个或多个分组,以便改进网络的性能。预防性分组丢弃的最重要的例子是随机早期检测。

  UDP协议(用户数据报协议)

  UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单、不可靠信息传送服务;UDP协议基本上是IP协议与上层协议的接口;UDP 协议适用端口分别运行在同一台设备上的多个应用程序;它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

  UDP,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

  1.UDP首部格式

       UDP用户数据报的首部格式如图4.

 UDP协议及它与IP数据报的关系

图4 UDP协议及它与IP数据报的关系

      UDP数据报中源端口和目标端口字段指定了两个16长的端口号,其中源端口字段是可选的,如果指定了该字段的值,就表示相应的数据报应发往的端口号,如果不使用,应将其设为0。长度字段表示整个UDP数据包的8位字数,包含UDP头部和数据部分。因此,该字段的值最小为8。如图5示:

 UDP数据报格式

图5 UDP数据报格式

      UDP协议位于IP协议之上,即UDP数据报是封装在IP数据报中进行传输的,如图6。

UDP数据报封装关系 

图6 UDP数据报封装关系

  2.UDP的特点

  UDP只在IP的数据报服务之上增加了很少的一点功能,即端口的功能和差错检测的功能。虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点:

  ·发送数据之前不需要建立连接:

  ·UDP 的主机不需要维持复杂的连接状态表:

  ·UDP 用户数据报只有8 个字节的首部开销:

  ·网络出现的拥塞不会使源主机的发送速率降低,这对某些实时应用是很重要的。

  缺点:

  ·不可靠,不稳定

  因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

  TCP协议和UDP协议的一些应用与比较

      TCP协议和UDP协议的一些应用如表7。

表7 TCP协议和UDP协议的应用

 TCP协议和UDP协议的应用

      TCP协议和UDP协议的比较如表8。

表8 TCP协议和UDP协议的比较

 TCP协议和UDP协议的比较

  因为UDP协议无连接,所以它的通信效率高;也正因如此,它的可靠性不如TCP协议高。

  TCP提供的是可靠的传输服务,而UDP协议提供的是不可靠的服务。UDP协议没有流量控制机制,如果发送进程发送数据报塞满了接收进程的接收缓冲区,就会丢弃数据报,而出现这种情况,UDP协议不会通知发送进程减缓数据的发送速率。TCP协议则拥有流量控制,具体机制在这里就不讲了,有兴趣的同学可以自行去搜索阅读。

      TCP提供的是面向字节流的服务。应用程序只需将要传输的数据以字节流的形式提交给TCP协议,在连接的另一段,数据以同样的字节流顺序出现在接收程序中。而UDP协议的传输单位是数据块,一个数据块只能封装在一个UDP数据包中。

      TCP和UDP这两个协议在TCP/IP协议中是很重要的协议,特别是TCP,在这里讲了它们那么多的内容,相信大家也都很清楚了。如果大家对这篇文感兴趣的话,不妨可以多读几遍,好好地去理解以及思考,相信可以给到你一定的帮助。更多的内容阅读及学习可以前往课课家教育哦。

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程