计算机网络运输层


运输层协议 TCP UDP
面向连接
可靠数据传输
速度

无连接运输:UDP

除了复用/ 分解功能及少量的差错检测外,它几乎没有对IP增加别的东西。UDP 从应用进程得到数据,附加上用于多路复用/分解服务的源和目的端口号字段,以及两个其他的小字段,然后将形成的报文段交给网络层。网络层将该运输层报文段封装到一个IP数据报中,然后尽力而为地尝试将此报文段交付给接收主机。该报文段到达接收主机,UDP 使用目的端口号将报文段中的数据交付给正确的应用进程


适合UDP的应用:

①实时应用

②无需连接建立(不会引入建立连接的时延)

③无连接状态(能支持更多的活跃客户)

④分组首部开销小(TCP需要20 字节的首部开销,而UDP 只需要8个字节)

DNS是一个通常使用UDP 的应用层协议


UDP的检验和提供了差错检测的功能,但是不能对差错进行恢复



TCP面向连接

TCP连接是面向连接的全双工服务,它也是点对点的,即在单个发送方与单个接收方之间的连接

TCP连接的建立:

客户首先发送一个特殊的TCP报文段,服务器用另一个特殊的TCP报文段来响应,最后,客户再用第三个特殊报文段作为响应,前两个报文段不承载“有效载荷”,也就

是不包含应用层数据;而第三个报文段可以承载有效载荷(发送了三个报文段:三次握手)

三次握手的原因:为发送大量数据做好准备。

更为详细:

  客户应用进程首先通知客户TCP,它想建立一个与服务器上的某个进程之间的连接
        
第一步:客户端的TCP首先向服务器端的TCP发送一个特殊的TCP报文段。该报文段不包含应用层数据,报文段的首部SYN 被置为 1 ,客户随机选择一个初始序号(

client_isn),并将此编号放置于该其实的TCP SYN 报文段的序号字段中。该报文段会被封装在一个IP数据报中,并发给服务器

        第二步:TCP SYN 报文段的 IP数据报到达服务器主机,服务器会从该数据报中提取出 TCP SYN 报文段,为该TCP连接分配TCP缓存和变量,并向该客户发送允许连

接的报文段(不包括应用层数据)。SYN比特置为1;TCP报文段首部的确认字段被置为 client_isn + 1 ;服务器选择自己的初始序号,并将其放置到TCP报文段首部的序号字段

中。允许连接的报文段有时被称为 SYNACK 报文段

        第三步:在收到SYNACK报文段后,客户也要为该连接分配缓存和变量,客户向服务器发送另外一个报文段——对服务器的允许连接的报文段进行了确认(通过将值

server_isn + 1 放置到TCP报文段首部的确认字段);因为连接已经建立,所以该SYN 比特被置为0.该阶段的报文段可以负载客户到服务器的数据

       客户和服务器就可以相互发送包括数据的报文段。在以后每一个报文段中,SYN比特都被置为0


客户进程向服务进程发送数据:
     
客户进程通过套接字传递数据流,数据一旦通过该门,它就由客户中运行的TCP控制了。TCP将这些数据引导到该连接的发送缓存里,接下来TCP就会不时从发送缓存里

取出一块数据,TCP为每块客户数据配上一个TCP首部,从而形成多个TCP报文段。这些报文段被下传给网络层,网络层将其分别封装在网络层IP数据报中,在TCP另一端收到一

个报文段后,该报文段的数据就被放入该TCP连接的接收缓存中。


可靠数据传输机制:
  检验和:检测传输分组中的比他是否发生错误

        ②  定时器:用于超时/重传一个分组,接收方可能会接收到一个分组的多个冗余副本

           序号:用于为发送方流向接收方的数据分组按序号编号,具有相同序号的分组可使接收方检测出一个分组的冗余副本

        ④  确认:接收方用于发送方一个分组或一组分组已经被正确接收

        ⑤  否定确认::接收方用于高速发送方某个分组未被正确的接收
         
窗口、流水线:发送方被限制仅发送那些序号落在一个指定范围内的分组

TCP传输机制恢复差错采用回退N步和快速重传的混合体



TCP拥塞控制算法:

①慢启动:
 每过一个RTT,根据接受到确认报文数,发送速率就翻番。因此,TCP发送速率起始慢,但在慢启动阶段以指数增长
何时结束这种指数增长:
          第一种方式:存在一个由超时指示的丢包事件(即拥塞),TCP发送方将cwnd设置为1并重新开始慢启动过程;还将第二个状态变量的值 ssthresh(“慢启动

阙值”的速记)设置为 cwnd/2,即当检测到拥塞时将ssthresh 置为拥塞窗口值的一半

          第二种方式:直接与ssthresh的值相关联,当检测到cwnd 的值等于ssthresh时,结束慢启动并且TCP转移到拥塞避免模式

          第三种方式:检测到3个冗余的ACK,这是TCP执行一种快速重传并进入快速恢复状态

②拥塞避免:
一旦进入拥塞避免状态,cwnd 的值大约是上次遇到拥塞时的值的一半。每个RTT 只将cwnd的值增加一个MSS( 对于TCP发送方无论何时到达一个新的确认,就

将cwnd增加一个(MSS/cwnd)字节, 如果MSS 是140字节并且cwnd是14600字节,则在一个RTT内发送10个报文段。每个到达ACK 增加 1/10MSS的拥塞窗口长度,因此在收到对所

有10个报文段的确认后,拥塞窗口的值将增加了一个MSS)
     
何时结束拥塞避免的线性增长
         
当出现超时时,TCP拥塞避免算法行为相同。与慢启动一样,cwnd的值被设置为1个MSS,当丢包时间出现时,ssthresh的值被更新为cwnd的值的一半
     
当出现有三个冗余ACK事件触发时,网络继续从发送方向接收方交付报文段:TCP将cwnd的值减半(收到的3个冗余ACK要加上3个MSS),并且当收到3个

冗余的ACK,将ssthresh的值记录为cwnd的值的一半。接下来进入快速恢复状态


③快速恢复:
在快速回复中,对于引起TCP进入快速回复状态的确实报文段,对收到的每个冗余的ACK,cwnd的值增加一个MSS。最终,当对丢失报文段的一个ACK到达时,

TCP在降低cwnd后进入拥塞避免状态。如果出现超时事件,快速回复在执行如同慢启动和拥塞避免中相同的动作后,迁移到慢启动状态:当丢包时间出现时,cwnd的值被设置

为一个MSS,并且ssthresh 的值设置为cwnd值的一半(如果阈值是8,则当到达阈值后,会出现3个冗余的ACK,当丢包事件发生是,拥塞窗口的值为12* mss,于是ssthresh的

值被设置为 0.5 * cwnd = 6MSS)



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值