概述和传输层服务
本章学习的重点:
- 理解传输层的工作原理
- 多路复用/解复用
- 可靠数据传输
- 流量控制 (发送方和接收方的问题)
- 拥塞控制
- 学习Internet的传输层协议
- UDP:无连接传输
- TCP:面向连接的可靠传输
- TCP的拥塞控制
传输服务和相关协议
** 为运行在不同主机上的应 用进程提供逻辑通信 **
** 传输协议运行在端系统 **
- 发送方:将应用层的报 文分成报文段,然后传 递给网络层
- 接收方:将报文段重组 成报文,然后传递给应 用层
** 有多个传输层协议可供应 用选择 **
- Internet: TCP 和 UDP
传输层和网络层比较
- 网络层服务: 主机之间的逻辑通信
- 传输层服务: 进程之间的逻辑通信
Internet传输层协议
传输层向上层应用进程提供逻辑的通信服务
在物理上就是通过层间接口传给传输层,由传输层之间的相互配合 将massage 传输给对方的应用进程。
三个协议
- ** 可靠的、保序的传输: TCP **
原理 :
- ** 不可靠、不保序的传输:UDP **
多路复用、解复用
没有为尽力而为的IP服务添加更 多的其它额外服务
- **都不提供的服务: **
- 延迟保证(主机之间的延迟上层无法加强)
- 带宽保证(ip主机上的带宽无法加强)
多路解复用的工作原理(TCP和UDP不同)
TCP复用解复用
- 每个数据报有源IP地址和目标地 址
- 每个数据报承载一个传输层报 文段
- 每个报文段有一个源端口号和 目标端口号 (特定应用有著名的端口号)
ip之间的传输说的是主机之间的信息传输, 如果想要实现进程之间的信息传输就需要加上端口号(port)
TCP绑定的是四元组的信息。
通过层间接口向下传输的是四元组 ,和 massage 。
Server端将数据报发出之后, 对方的IP就会接收到这个数据报开始解析, 在TCP部分就会解析TCP的头部,等等信息 。然后在向上传输
主机联合使用IP地址和端口号将报 文段发送给合适的套接字
例子:
1.
1.
3, 多线程的场景举例 :
UDP多路解复用
Server端:
- 服务端通过APP的线程, 里面封装了要传输的massage 、 serverSocket 、对方的ip和udp端口的捆绑关系所在的结构体的指针(PID)
- 将上述的信息传输给UDP,UDP再往下就是将udp的datagram 、ip地址
Client端:
- client接收到对方的ip打包传输过来的信息后, 先检查报文段的目标端口号 , 然后 用该端口号将报文段定位给 套接字
- IP解析之后向上交的是 UDP datagram、源ip和目标ip等信息
- udp 的datagram中 有源port 目标port ,通过这两个端口信息, 我们就可以将进程的对应关系找到了
如果两个不同源IP地址/源端 口号的数据报,但是有相同的 目标IP地址和端口号,则被定 位到相同的套接字
无连接传输:UDP
UDP: User Datagram Protocol (用户数据报协议)
它只是增加了多了复用解复用, 除此之外, 并没有增加其他的
- 尽力而为”的服务,报文段可能
丢失 、送到应用进程的报文 段乱序
- 无连接:
- UDP发送端和接收端 之间没有握手
- 每个UD报文段都被 独立地处理
- UDP经常被用于 :
流媒体(丢失不敏感, 速率敏感、应用可控制 传输速率)
DNS
SNMP
UDP:用户数据报协议
为什么要有UDP?
- 不建立连接 (会增加延时 )
- 简单:在发送端和接收端没 有连接状态
- 报文段的头部很小(开销小)
- 无拥塞控制和流量控制: UDP可以尽可能快的发送报 文段
- 应用->传输的速率= 主机->网 络的速率
一个UDP数据报文段格式:
UDP校验和
目标: 检测在被传输报文段中的差错 (如比特反转) , 如果出现差错, 那么就直接丢失。
发送方:
- 将报文段的内容视为16 比特的整数
- 校验和:报文段的加法 和 (1的补运算)
- 发送方将校验和放在 UDP的校验和字段
接收方:
- 计算接收到的报文段的校验 和
- 检查计算出的校验和与校验 和字段的内容是否相等:
- 不相等––检测到差错
- 相等––没有检测到差错 ,但也许还是
Such as(不太懂)
注意:当数字相加时,在最高位的进位要回卷,再加 到结果上
目标端:校验范围+校验和=1111111111111111 通过校验
否则没有通过校验
注:求和时,必须将进位回卷到结果上
要有进位回滚
回卷 和 校验和之间的和 就是仅为回滚的和。
可靠数据传输的原理
传送门: https://wclspace.xyz/post/84f702e5.html
面向连接的传输: TCP
段结构
可靠数据传输
流量控制
连接管理
拥塞控制原理
TCP 拥塞控制