计网-传输层

493 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在这里插入图片描述

概述和传输层服务

传输服务和协议

为运行在不同主机上的应用进程提供==逻辑通信==

传输协议运行在端系统:

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

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

  • Internet: TCP和UDP

传输层vs网络层

网络层服务:主机之间的逻辑通信

传输层服务:进程间的逻辑通信

  • 依赖于网络层的服务。延时、带宽
  • 并对网络层的服务进行增强。数据丢失、顺序混乱、 加密

有些服务是可以加强的:不可靠一>可靠、安全

但有些服务是不可以被加强的:带宽,延迟

传输层协议

  • 可靠的、保序的传输:TCP 。多路复用、解复用 。拥塞控制 。流量控制 。建立连接 。字节流

  • 不可靠、不保序的传输:UDP 。多路复用、解复用 。没有为尽力而为的IP服务添加更多的其它额外服务 。数据报

  • 都不提供的服务: 。延时保证 。带宽保证

多路复用和解复用

  • 在发送方主机==多路复用== 从多个套接字接收来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装(该头部信息用于以后的解复用)
  • 在接收方主机多路解复用 根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)

多路解复用工作原理

在这里插入图片描述

无连接(UDP)的多路解复用

UDP socket 由二元组确定:目的 IP 地址, 目的端口号

当主机接收 UDP 段:

  • 检测段中的目的端口号
  • 引导 UDP 段到具有该端口号的 socket

具有不同源IP及/或源端口号的IP 数据报被引导到同一个 socket 在这里插入图片描述

无连接的多路解复用

当主机接收到UDP段时:

  • 检查UDP段中的目标端口号
  • 将UDP段交给具备那个端口号的套接字

具备相同==目标IP地址和目标端口号==,即使是==源IP地址==或/且==源端口号==的IP数据报,将会被传到相同的目标UDP套接字上

UDP多路复用的例子

在这里插入图片描述

面向连接(TCP)的多路复用

TCP socket 由四元组确定:

  • ==源 IP==
  • ==源端口==
  • ==目的 IP==
  • ==目的端口==

==解复用==:接收主机使用这四个值,将报文段引导至适当的 socket

服务器主机可以支持多个并发的 TCP socket:

  • 每个 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