【浅谈计算机网络】04-TCP/UDP

🎈🤺🎈🤺🎈🤺🎈🤺

① 运输层概述

之前我们说过的物理层、数据链路层和网络层实现的都是主机和主机之间的通信。但是计算机中通信的真正实体是主机的进程,如何实现进程与进程之间的通信是运输层的任务,因此运输层又叫端到端的通信。

image-20210116100113462

② 端口、分用与复用

1. 端口

运输层实现的是进程之间的逻辑通信,那我们就肯定需要某种方式来区分不同的进程。那可不可以使用PID呢?答案是不行的,因为不同OS其PID格式不同,必须使用统一的方法对计算机内的应用进程进行标识,TCP/IP体系结构使用端口号来区分不同的进程。

  • 端口号使用16比特表示,0~65536

    • 熟知端口号0~1023

      image-20210116101213657

    • 登记端口号1024~49151

    • 短暂端口号49152~65535

2. 发送方的复用及接收方的分用
image-20210116101336882

简单来说,复用就是发送端的多个进程共同使用TCP/UDP协议发送数据,分用就是接收端的TCP/UDP协议根据目的端口号把收到的报文交付给目的进程。

举个例子:输入网址baidu.com发生了什么?

  • 主机向DNS服务器发送应用报文,内容是“域名baidu.com的IP地址是什么”,源端口从短暂端口号选一个,目的端口选择53。
  • DNS服务器收到后,根据目的端口53知道它是要访问服务器的DNS转换进程,提取出报文信息后查表得知baidu.com的IP地址
  • DNS服务器向源主机发送响应报文“baidu服务器的IP地址是....”,源端口是53,目的端口是接收报文的源端口
  • 主机收到应用报文后得到baidu.com的IP地址,发送应用报文,目的端口号为80,表示这是一个HTTP请求,访问百度服务器的HTTP进程
  • 百度服务器响应

③ 用户数据报协议UDP

UDP十分简单,只在IP协议上添加了很少的内容:复用分用和差错检测

  • UDP是无连接的,发送数据之前不需要建立连接
  • UDP不提供可靠服务,尽最大努力交付。如果UDP检测出在收到的分组出错,它就丢弃这个分组,既不确认,也不通知发送端和要求重传。
  • UDP是面向报文的,对于应用层的报文仅添加UDP首部就交付给下一层,一次发送一个报文。接收端收到UDP报文后去除首部交付上层
  • UDP支持单播、广播和多播通信
1. UDP的报文格式

image-20210116104243113

UDP的检验和字段不仅检验首部,还检验数据报文。原理和IP数据报的首部检验和类似,但是需要使用一个伪首部。

2. UDP的适用范围、

UDP适用于很多的实时应用,如IP电话、直播等,它们都允许丢失部分数据,但不允许有大量时延,UDP正好适合这种要求。

④ 传输控制协议TCP

1. TCP协议的特点
  • 面向连接的传输层协议,这里的连接是“虚拟”的,逻辑上的连接。建立连接三次握手,断开连接四次挥手

  • TCP协议每次连接只能点对点,也就说仅支持单播通信

  • TCP提供可靠交付的服务,传输的数据无差错、不丢失、不重复并且按序到达

  • 全双工通信,因为有缓存机制

  • 面向字节流。TCP协议对于上层交付的数据看成一连串的字节流,发送时根据当前窗口值和网络拥塞状态对决定TCP报文的长度,也就是说会随意“分隔”应用层数据。而UDP报文的数据长度一定是上层的报文长度。

    image-20210116110903832

2. 流量控制

流量控制就是接收端来控制发送端的发送窗口大小,使发送端的发送速率不要太快,让接收方来得及接收

使用滑动窗口机制可以很简单的实现流量控制:

image-20210116143544195

image-20210116144057425

考研真题

image-20210116144313321
3. 拥塞控制

在某段时间,若对网络中的某一资源的需求超过了该资源的可用部分,网络的整体性能就要变坏,这种情况就叫做拥塞。拥塞与流量控制不同,流量控制是接收方对发送对的控制,是点对点的控制。而拥塞控制是防止网络整体出现拥塞的控制,是主机自己对自己的控制。

image-20210116144821426

TCP的拥塞控制方法:

下面讨论的算法就是基于一下两种情况:

数据是单向的、

发送端的发送窗口只由网络拥塞情况控制,即发送窗口=拥塞窗口cwnd

维护一个慢开始门限ssthresh,当拥塞窗口小于门限时使用慢开始算法,大于时使用拥塞避免算法来减少拥塞

  • 慢开始:发送端的拥塞窗口从小到达递增,速度为指数级。慢开始指的是开始很慢,但是增长很快

  • 拥塞控制:调整拥塞窗口大小为1,减低门限值,降低增长速率为线性级

    image-20210116145831313

    这是第一版的TCP拥塞控制方案,但是有时个别网络会在网络中丢失但是实际上网络并没有拥塞,此时错误执行了拥塞控制算法,降低了传输效率。可以使用快重传-->快恢复来改进:

  • 快重传:如果连续收到三个对同一报文的确认,就说明此使的报文的丢失不是因为网络拥塞,将报文段立即重传而不是等计时器超时重传,这样就不会执行拥塞避免算法

    image-20210116151049048

  • 快恢复:快重传执行后执行快恢复,调整当前的门限值和窗口大小,随后执行拥塞避免

    image-20210116151501624

image-20210116151708678

4. 超时重传时间选择
5. 可靠传输的实现(滑动窗口)
  • 停止-等待协议

  • 连续AHQ协议

  • 滑动窗口协议

    image-20210116161957348
    • 发送方

      image-20210116162134431
posted @ 2021-05-08 17:30  Virtuals  阅读(215)  评论(0编辑  收藏  举报