概述和传输层服务

本章学习的重点:

  1. 理解传输层的工作原理
    1. 多路复用/解复用
    2. 可靠数据传输
    3. 流量控制 (发送方和接收方的问题)
    4. 拥塞控制
  2. 学习Internet的传输层协议
    1. UDP:无连接传输
    2. TCP:面向连接的可靠传输
    3. TCP的拥塞控制

传输服务和相关协议

** 为运行在不同主机上的应 用进程提供逻辑通信 **
** 传输协议运行在端系统 **

  • 发送方:将应用层的报 文分成报文段,然后传 递给网络层
  • 接收方:将报文段重组 成报文,然后传递给应 用层

** 有多个传输层协议可供应 用选择 **

  1. Internet: TCP 和 UDP

传输层和网络层比较

  1. 网络层服务: 主机之间的逻辑通信
  2. 传输层服务: 进程之间的逻辑通信
  • 依赖于网络层的服务
  • 并对网络层的服务进行 增强

Internet传输层协议

image.png

传输层向上层应用进程提供逻辑的通信服务
在物理上就是通过层间接口传给传输层,由传输层之间的相互配合 将massage 传输给对方的应用进程。

三个协议

  1. ** 可靠的、保序的传输: TCP **

原理 :

  • 多路复用、解复用
  • 拥塞控制
  • 流量控制
  • 建立连接
  1. ** 不可靠、不保序的传输:UDP **

多路复用、解复用

没有为尽力而为的IP服务添加更 多的其它额外服务

  1. **都不提供的服务: **
  • 延迟保证(主机之间的延迟上层无法加强)
  • 带宽保证(ip主机上的带宽无法加强)

多路解复用的工作原理(TCP和UDP不同)

TCP复用解复用

  1. 每个数据报有源IP地址和目标地 址
  2. 每个数据报承载一个传输层报 文段
  3. 每个报文段有一个源端口号和 目标端口号 (特定应用有著名的端口号)

ip之间的传输说的是主机之间的信息传输, 如果想要实现进程之间的信息传输就需要加上端口号(port)

img

TCP绑定的是四元组的信息。

通过层间接口向下传输的是四元组 ,和 massage 。

Server端将数据报发出之后, 对方的IP就会接收到这个数据报开始解析, 在TCP部分就会解析TCP的头部,等等信息 。然后在向上传输

主机联合使用IP地址和端口号将报 文段发送给合适的套接字

例子:

1.

img

1.

img

3, 多线程的场景举例 :

img

UDP多路解复用

Server端:

  1. 服务端通过APP的线程, 里面封装了要传输的massage 、 serverSocket 、对方的ip和udp端口的捆绑关系所在的结构体的指针(PID)
  2. 将上述的信息传输给UDP,UDP再往下就是将udp的datagram 、ip地址

Client端:

  1. client接收到对方的ip打包传输过来的信息后, 先检查报文段的目标端口号 , 然后 用该端口号将报文段定位给 套接字
  2. IP解析之后向上交的是 UDP datagram、源ip和目标ip等信息
  3. udp 的datagram中 有源port 目标port ,通过这两个端口信息, 我们就可以将进程的对应关系找到了

如果两个不同源IP地址/源端 口号的数据报,但是有相同的 目标IP地址和端口号,则被定 位到相同的套接字

img

无连接传输:UDP

UDP: User Datagram Protocol (用户数据报协议)

它只是增加了多了复用解复用, 除此之外, 并没有增加其他的

  1. 尽力而为”的服务,报文段可能

丢失 、送到应用进程的报文 段乱序

  1. 无连接:

    1. UDP发送端和接收端 之间没有握手
    2. 每个UD报文段都被 独立地处理
  2. UDP经常被用于 :

流媒体(丢失不敏感, 速率敏感、应用可控制 传输速率)

DNS

SNMP

UDP:用户数据报协议

为什么要有UDP?

  1. 不建立连接 (会增加延时 )

  2. 简单:在发送端和接收端没 有连接状态

  3. 报文段的头部很小(开销小)

  4. 无拥塞控制和流量控制: UDP可以尽可能快的发送报 文段

    1. 应用->传输的速率= 主机->网 络的速率

一个UDP数据报文段格式:

img

UDP校验和

目标: 检测在被传输报文段中的差错 (如比特反转) , 如果出现差错, 那么就直接丢失。

发送方:

  1. 将报文段的内容视为16 比特的整数
  2. 校验和:报文段的加法 和 (1的补运算)
  3. 发送方将校验和放在 UDP的校验和字段

接收方:

  1. 计算接收到的报文段的校验 和
  2. 检查计算出的校验和与校验 和字段的内容是否相等:
  • 不相等––检测到差错
  • 相等––没有检测到差错 ,但也许还是

Such as(不太懂)

注意:当数字相加时,在最高位的进位要回卷,再加 到结果上

img

目标端:校验范围+校验和=1111111111111111 通过校验

否则没有通过校验

注:求和时,必须将进位回卷到结果上

要有进位回滚

回卷 和 校验和之间的和 就是仅为回滚的和。

可靠数据传输的原理

传送门: https://wclspace.xyz/post/84f702e5.html

面向连接的传输: TCP

段结构

可靠数据传输

流量控制

连接管理

拥塞控制原理

TCP 拥塞控制