运输层TCP/IP体系协议(TCP|UDP)(二)

用户数据报协议UDP概述

UDP数据报的主要特点:

(1)UDP是无连接的,即发送数据前不需要建立连接。

(2)UDP使用尽最大努力交付,即不保证可靠交付

(3)UDP是面向报文的,发送方的UDP最应用程序叫下来的报文,在添加首部后节向下交付给IP层,既不合并也不拆分。而是保留这些报文的边界,应用层交给UDP多长的报文UDP都会照样发送,一次发送一个报文。接受方的udp在接受到IP层交上来的报文也会在取出首部后原封不动的交给应用层,一次交付一个报文。

(4)UDP没有拥塞控制,因此在网络出现的拥塞并不会是发送放发送报文的速率降低。这对某些实时通信的应用很重要。

(5)UDP支持一对一,一对多么多对一 和多对多的交互通信。

(6)UDP首部开销小。只有8个字节。比TCP的首部20字节要端很多。

UDP的首部格式:

用户数据报的首部只有两个字段:数据字段个首部字段。首部字段很简单,只有8字节,它有4个字段组成,每个字段的长度都为两个字节。各字段意义如下:

  1. 源端口       源端口号,在需要对方回信时候用,不需要时可全0
  2. 目的端口    目的端口号,在终点交付报文是必须要使用到。
  3. 长度           UDP用户数据报的长度,最小值是8,代表着仅有首部
  4. 检验和        检测UDP用户数据报在传输中是否有错,有错就丢弃

 

传输控制协议TCP概述

TCP的主要特点:

  1. TCP是面向连接的运输层协议。也就是说在使用TCP协议之前,必须先建立TCP连接,
  2. 每一条TCP连接只能有两个端点
  3. TCP提供可靠交付的服务,(通过TCP连接传送的服务,无差错,不丢失,不重复,并且按时到达)
  4. TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据,在发送数据时,应用程序把数据传送给TCP的缓存之后就可以做别的事去了,而TCP在格式的时候吧数据发送出去,在接受数据时,TCP把数据放进缓存,上层的应用进程在合适的时候读取缓存中的数据
  5. 面向字节流。TCP中的“流”指的是刘若英到进程或从进程流出的字节序列。TCP把程序交付下来的数据看成仅仅是一连串的无结构字节流。不知道字节流的含义,不保证接收方应用程序锁接受到的数据块和发送放应用程序锁发送的数据块大小相等。(发送放应用程序交给TCP10个应用数据块,有可能接受放的TCP只用了四个就交给上层应用程序了)但接收方的字节流必须和发送方收到的字节流完全一样。

TCP的连接:

每条TCP连接都有两个端点。这个端点叫做套接字(socket)或者插口。套接字的表示方法是点分十进制的ip地址,后面写上端口号,中间用冒号或者逗号隔开。(例如   128.3.5.7:8081)

可靠传输的原理 

停止等待协议:

假设A是发送数据的发送方,是接受数据的接收方,传送的数据叫做分组,下面有三种情况:

     1.无差错情况

       A发送分组M1,发送完等待,等待B确认。B收到了就想A发送确认。A在收到了B的确认后继续发送下一个分组M2,循环往复。

     2. 出现差错情况

       B在接受M1时因为分组在网络传输过程中丢失,或者收到的分组出现了差错,丢弃M1。这两种情况下B都不会发送任何信息。A在超过了一段时间没有收到确认,就认为刚才发送的分组丢失了,并且重新发送分组,这就叫超时重传 ,当然通过一个超时计时器来设定超时重传的时间。

  注意:一、A在发送完分组后,必须暂时保留已发送分组的副本,只有在接受到确认后才能删除该副本。

            二、分组都必须必须编号,来确定发送还是没法送过。

            三、超时重传计时器的重传时间应该比分组传输的往返时间更长一些。

    3.确认丢失和确认迟到

       假设B在超时重传时间过后才收到分组或者B对A的确认迟到了,应该 一、丢弃该分组 而、向A发送确认。

4.信道利用率  

      信道利用率  = 分组发送时间/分组发送时间+分组在网络上的往返时间+接受分组时间

猜你喜欢

转载自blog.csdn.net/qq_35368651/article/details/81676995