运输层

运输层概述

  1. 运输层协议是端到端协议

  2. 主要的两个协议

    UDP/TCP

运输层端口号,复用和分用的概念

  1. 由于运行在电脑的进程的标识符是PID,在网络上的是不同的操作系统,使用不同格式的进程标识符

  2. TCP/IP使用端口号进行区分不同的应用进程

  3. 端口号是16比特

    0~65535

  4. DNS服务器

使用UDP协议的方式进行访问

image-20231125114137916

TCP和UDP之间关系

image-20231125115907559

  1. UDP是不负责的,但是TCP是负责的

    也就是说TCP是可靠的传输

  2. UDP可以单播,多播,广播

    但是TCP仅支持单播

  3. TCP是全双工通信

  4. 当传输的过程中出现了误码,UDP接受方只会识别出错误,但是不会对错误做任何事情

image-20231125120619023

TCP的流量控制

下面是一个接收方对发送方进行流量控制的案例

image-20231125121105636

最开始滑动窗口是300字节,也就是1~100,101~200,201~300分别是3个TCP数据包

从第一个开始发送 ,当发送到seq(数据的下标)=201,数据丢失,然后使用这个时候接收方,发送

ACK=1 这个代表使用TCP接受信息

ack=201 这个表示该接受下表为201开始的数据了

rwnd=300 这个表示自己的滑动窗口是300,修改发送方的滑动窗口,这个时候就达到了控制流量的目的

接收方接受到这个消息过后,会删除1~200的缓存

当超时的时候就会重新发送201~300的数据包

零窗口通知

为了防止零窗口的出现,导致两方都再等对方发信息,这个时候使用零窗口通知 的方式,防止相互的等待防止死锁

发送窗口的选择

image-20231125123800879

TCP拥塞控制

image-20231125135116386

接下来我们讨论,拥塞处理的算法

image-20231125135229152

慢开始 拥塞避免

image-20231125135415060

这个的意思就是说,发送方维护了一个拥塞窗口,拥塞窗口的大小取决于网络的好坏

当没有网络拥塞发生的时候就应该增加拥塞窗口的大小

需要设定一个满开始门限的初始值,用于判断使用什么算法,将其与发送窗口发小作对比。但是这个的结果只有两种一种是慢开始算法,另一种是拥塞避免

拥塞窗口是几就可以发送几个

image-20231125140634448

下面是对拥塞控制的算法解释

先是使用慢开始算法,使其成指数增加,但是由于到达了门限值,使用拥塞避免算法,让其线性增加。当发现网络拥堵的时候,就将门限值,设置为当时滑动窗口大小的一半,让滑动窗口的大小变成一

快重传

image-20231125141215048

当发送方接收到了三个连续的对第二个的重复确认,这个时候该使用快重传,也就是重发3号数据段。这种情况下,就是提前发送了数据

快恢复

image-20231125141921096

四种算法的总结

image-20231125141842618

TCP超时重传时间的选择

image-20231125142845935

TCP可靠传输的实现

TCP基于以字节为单位的滑动窗口

发送窗口

image-20231126100633800

  1. 请注意前沿和后沿的位置

  2. 后沿移动的两种状态

    • 向前移动

      接收到了确认消息

    • 不动

      没有接收到确认信息

  3. 前沿的移动情况

    • 通常是向前移动的

      接受到了确认西信息,而且没有改变滑动窗口的大小,或者滑动窗口的大小变大了,或者虽然变小了,但是还是往前移动了、

    • 不动

      没有接受到新的信息

      接收了新的信息,发送窗口缩小了,也就是发送窗口正好没有动

    • 向后收缩

      不太赞成这样做

  4. 代码的编写

    使用三个指针

    image-20231126101257851

接收窗口

总结

image-20231126101659646

TCP的运输连接管理

TCP连接

TCP三报文握手建立连接

image-20231126102441881

  1. 为什么不是两报文握手?

    注意下面这种情况

    image-20231126102612923

TCP连接释放

image-20231126104238075

保活计时器

作用

就是为了防止TCP客户端出现错误之后,服务端一直等待

image-20231126104712837

首部格式

image-20231126104818299

源端口

用于标识发送该TCP报文的应用进程

目的的端口号

用来标志接受TCP的报文段的应用进程

序号字段

image-20231126105115130

确认号

image-20231126105142053

窗口

image-20231126105335001

应该从接受窗口中和发送窗口中取小者


运输层
https://tsy244.github.io/2023/11/18/计算机网络/运输层/
Author
August Rosenberg
Posted on
November 18, 2023
Licensed under