计算机网络系列--运输层

本文深入探讨了计算机网络中的运输层,主要关注TCP和UDP协议。介绍了TCP的面向连接、可靠传输机制,包括超时重传、滑动窗口、流量控制和拥塞控制等。同时对比了UDP的无连接、不可靠特性,及其在效率和开销上的优势。文章还讲解了运输层的端口和连接管理,总结了运输层在确保数据传输可靠性与效率中的关键作用。
摘要由CSDN通过智能技术生成

计算机网络 – 运输层

运输层协议概述

进程之间的通信

  1. 什么是运输层?

    网络层是解决主机与主机之间的通信,例如我的手机和你的手机之间的数据连通。但是手机中有微信,qq,王者荣耀,你一边更新王者荣耀一遍发微信,你的手机同时接收的数据包,怎么知道这些包是微信的还是王者的呢?这就是运输层做的事情:提供进程之间的通信。

  2. 和网络层以及应用层的关系?

    运输层是提供一条进程之间的逻辑线路,让进程之间去通信,是比网络层更上层的协议。在路由转发中只涉及到网络层。同时运输层也是用户感知的最底层,他是直接和应用层进行连接。

运输层两个重要协议

  1. 概述

    两个比较重要的协议。但是要注意和网络层的协议区分开。这里的协议指的是端对端的,是应用和主机端口之间的通信协议,而不是在路由转发中的协议。

  2. UDP

    用户数据报协议。无连接而且不可靠,因为受到数据报不需要回复。但是优点是开销小。

  3. TCP

    传输控制协议。面向连接且可靠的,但是缺点是开销比较大。而且连接的特性决定了不能进行广播和多播。

运输层的端口

  1. 什么是端口?

    这个其实很好理解。因为运输层是应用程序和主机之间的逻辑通信,所以每个应用程序应该有一个标识,就像IP地址一样,不然怎么知道数据报给哪个应用呢。所以主机拿到数据报,解析一下端口号,例如80,然后就把数据给80这个端口,然后使用这个端口的应用程序就可以拿到数据了。但是有一个点是要注意的:端口是固定的但是应用程序是动态的,所以也就保证了应用程序不断切换,例如后台杀死重建啊什么的,但是依然可以接收到数据。只要使用同一个端口即可。

  2. 运输层端口和链路层的端口有什么区别?

    运输层的端口是只有本都意义的,在互联网上没有任何意义。而链路层的路由器上面的端口是硬件端口,是不同设备之间的连接。而运输层的端口只是为了标识应用程序。

  3. 两大类端口

    • 服务端使用的端口:服务端嘛,就是要稳定,不然一直换端口别人就受不了了。所以服务端的端口特点就是稳定,数值也比较少。
    • 客户端的端口:数值比较大,但是不稳定,所以数量多。

用户数据报协议UDP

概述

  1. UDP有什么作用:

    UDP十分简单。我们知道,应用程序把数据报给到传输层,而UDP只是吧应用程序给的数据报加个头部就给网络层去转发了。头部主要是标记源端口和目的端口,以及检验正确性。

  2. UDP的特点:

    • 他是不可靠的。因为只是把数据加个头就发过去,也没有错误重发什么的。所以只是尽量交付,而不是可靠交付。
    • UDP是无连接的。这个从他的工作原理可以看出来。
    • UDP是面向报文的。UDP主要就是处理报文然后给网络层去转发。
    • UDP没有拥塞控制。因为没有重发,也就不需要拥塞控制了。

    但是

    • UDP开销比较小。因为没有花里胡哨的工作。
    • UDP的速度比较快,不用去创建连接直接就可以用了。
    • UDP支持一对多或者多对多。

UDP头部

  1. 组成:三部分:源端口目的端口,长度和校验码
  2. 伪头部:用于创建检验码用的,伪头部主要是源IP地址,目的IP地址,协议字段值以及UDP的长度。

传输控制协议TCP概述

什么是TCP

这里只简单讲一下关于TCP的一些特点,具体的实现原理后面还有好多好多节去学习。简单来说,TCP是一个运输层的协议,他是面向连接的,和UDP不一样。TCP是建立一个连接,然后源源不断地发送数据过去。要注意的是这个连接是虚拟的,不是真实的物理连接。

TCP的特点

  1. 他是面向连接的
  2. 他是点对点的,不能一对多或者多对多等
  3. 他可以提供可靠交付
  4. 提供全双工通信(两边都可以互发信息)
  5. 面向字节流

什么是面向字节流

这个是TCP工作原理的重点,虽然不难,但是一定要懂。

TCP不是像UDP那样从用户那里拿数据报然后一个个发送,TCP是把这些数据看成流,在缓冲区合成一整块,然后根据网络状况,分割后加上TCP头部发送。所以说TCP是面向字节流的,因为他没有数据包的概念,用户的数据都看成流。这样的好处是TCP可以根据网络情况进行恰当地切割,防止拥塞。

TCP的连接

  1. TCP不是和UDP一样用端口作为点对象,而是使用socket也就是套接字为端点。套接字是什么?这个也很好理解,就是 IP+端口号。这个就可以唯一标识一个TCP连接了。
  2. TCP的连接是由软件所提供的一种抽象,不是真正真正真正的连接。

可靠传输的工作原理

怎样才是可靠的?

前面讲到TCP是可靠的,但是为什么TCP是可靠的?原理是什么?这一小节就比较详细地展开。这里要讲一个点,都说可靠可靠,那到底满足什么样的条件才是可靠的?

  1. 在网络传输的过程中不会出现数据的损坏或者丢失。
  2. 无论发送方用怎么样的速率去传输,接收方始终可以一直接受。

满足上述两个条件就可以实现可靠运输了。但是这两个条件和让你拿着一把刀去抢劫银行一样,看似好像很微妙,事实上就是吃太多作业太少成天幻想。所以我们要做的就是如何用协议去实现这样的特性,把不可靠的网络环境,实现可靠的数据传输。

停止等待协议

是什么?
  1. TCP对应用程序来的数据缓存后进行切割后,分成一个个数据报进行转发,每一个数据报转发给对方后就停下来,对方收到后就发送ACK告诉自己收到了,这个时候就可以发送第二个了。
  2. 如果发送的数据损坏了,或者数据在传输的时候人间蒸发了,这个时候对方什么也不做。自己就会等,等到一点时间没回复再继续发送一次,这就是超时重传。
  3. 如果对方给自己的确认ACK丢失或者迟到了了怎么办?自己还是按照超时重传再发一份,如果收到重复的数据就丢弃就行。对方收到重复的数据包也是直接丢弃。
  4. 当网络情况不好的时候,那么就会一直重发,达到一定的次数就说明当前网络不可用,停止发送。

自动重传请求:上述步骤自动完成就是ARQ自动重传请求。ARQ实现了在不可靠的网络上进行可靠的数据传输。

缺点

信道利用率很低。每次都要等,特别是网络状况不好的时候,效率会变得极低。

连续ARQ协议

为什么有这个协议?

我们可以发现就是前面的停止等待协议效率太慢了,傻傻的。一个发送出去了,没收到回复就是什么都不做,干等,所以我们可以改善这个情况。这里就要

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值