概述和传输层服务
传输服务和协议
为运行在不同主机上的应用进程提供逻辑通信
传输协议运行在端系统:
- 发送方:将应用层的报文分成报文段,然后传递给网络层
- 接收方:将报文段重组成报文,然后传递给应用层
有多个传输层协议可供应用选择:
传输层vs网络层
网络层服务:主机之间的逻辑通信
传输层服务:进程间的逻辑通信
- 依赖于网络层的服务。延时、带宽
- 并对网络层的服务进行增强。数据丢失、顺序混乱、
加密
有些服务是可以加强的:不可靠一>可靠、安全
但有些服务是不可以被加强的:带宽,延迟
传输层协议
多路复用和解复用
- 在发送方主机多路复用
从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装(该头部信息用于以后的解复用) - 在接收方主机多路解复用
根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)
多路解复用工作原理
无连接(UDP)的多路解复用
UDP socket 由二元组确定:目的 IP 地址, 目的端口号
当主机接收 UDP 段:
- 检测段中的目的端口号
- 引导 UDP 段到具有该端口号的 socket
具有不同源IP及/或源端口号的IP 数据报被引导到同一个 socket
无连接的多路解复用
当主机接收到UDP段时:
- 检查UDP段中的目标端口号
- 将UDP段交给具备那个端口号的套接字
具备相同目标IP地址和目标端口号,即使是源IP地址或/且源端口号的IP数据报,将会被传到相同的目标UDP套接字上
UDP多路复用的例子
面向连接(TCP)的多路复用
TCP socket 由四元组确定:
解复用:接收主机使用这四个值,将报文段引导至适当的 socket
服务器主机可以支持多个并发的 TCP socket:
Web 服务器对每个连接的客户端,有不同的 socket
- 非持续的 HTTP 对每个请求有不同的 socket
面向连接(TCP)的解复用例子
无连接传输:UDP
UDP:User Datagram Protocol
UDP 数据段可以
无连接
- 在UDP收发双方之间, 无需握手信号
- 每个 UDP 数据段的操作都互相独立
UDP 被用于
- 流媒体(丢失不敏感,速率敏感、应用可控制传输速率)
- DNS
- SNMP
在UDP上可行可靠传输
为什么会有UDP
UDP:用户数据报协议
UDP数据报协议:
UDP校验和
目标:检测在被传输报文段中的差错
发送方:
- 将报文段的内容看作一串16比特的整数
- checksum(校验和):作段内容的加法和、反码
- 发送方将校验和放入 UDP的 checksum 字段
接收方:
- 对接收到的段内容进行和反码计算
- 检查计算结果是否与收到的校验和相等:
– NO – 查出错误 – YES – 没查出错误. 但是仍有可能存在错误
UDP校验和例子
最高位的进位回加到结果中
1
|