运输层服务、Internet层的复用与分解
理解运输层服务依据的原理:
复用/分解
可靠数据传输
流量控制(端到端)
拥塞控制(全局性)
学习因特网中的运输层协议:
UDP:无连接传输
TCP:面向连接传输
TCP:拥塞控制
运输层服务
是整个网络体系结构中关键的一层,只有主机的协议栈(端系统)才有运输层
计算机网络本质:实现分布在不同地理位置的联网主机之间的进程通信,
运输层为相互通信的应用进程提供了逻辑通信:
运输层服务:
- 为运行在不同主机上的应用进程之间提供逻辑通信
- 运输协议运行在端系统中
- 发送方:将应用报文划分为段,传向网络层
- 接收方:将段重新装配为报文,传向应用层
- 应用可供使用的运输协议不止一个
- 因特网:TCP和UDP
运输层协议数据封装
为什么需要数据分段:
- TCP具有最大报文长度(有长度限制)
- UDP数据报不会自己进行分析,因此当长度超过了MTU时,会在网络层进行IP分片
1460字节,以太网最大传输单元
数据封装过程
最大传输单元(MTU)——最大链路层帧长度
运输层vs网络层
- 网络层:主机间的逻辑通信
- 运输层:进程间的逻辑通信
以来、强化网络层服务
家庭类比:
12个孩子向12个孩子发信
- 进程 = 孩子
- 应用报文 = 信封中的新
- 主机 = 家庭
- 运输协议 = Ann和Bill
- 网络层协议 = 邮政服务
注意:
- 运输层
运输层协议和网络层协议的主要区别:
因特网运输层协议
- 可靠的、按序交付(TCP):
- 拥塞控制
- 流量控制
- 连接建立
- 不可靠、不按序交付(UDP):
- 尽力而为 IP协议基础上不提供不必要服务的拓展
- 不可用的服务
- 时延保证
- 带宽保证
Internet层的复用与分解
多路奋勇与多路分解将由网络层提供的主机到主机的交付服务延伸到进程到进程的交付服务
复用/分解:
分解工作过程
- 主机接收IP数据
- 每个段具有源、目的端口号(端口号16bit,0~1023周知端口)
- 每个数据报承载1个运输层报文段
- 主机使用IP地址&端口号将报文段定向到适当的套接字
无连接(UDP)的复用和分解
- 生成具有端口号的套接字
- 新建数据报文
- 发送数据
- 接收数据
- UDP套接字由二元组标识(目的地IP地址,目的地端口号)
- 在段中检查目的端口号
- 将UDP段定向到具有该端口号的套接字
问题1:具有不同源IP地址和/或源端口号的IP数据报可能定向到相同的套接字吗?
可能的;来自不同源IP地址和/或源端口号的IP数据包被导向同一个Socket,许多客户进程对应同一个进程(套接字)。
问题2:
面向连接(TCP)分解
- TCP套接字由四元组标识
- 源IP地址
- 源端口号
- 目的IP地址
- 目的端口号
- 接收主机使用这四个值来将段定向到适当的套接字
- 服务器主机可能支持许多并行的TCP套接字
- 每个套接字由其自己的四元组标识
- Web服务器对每个连接的客户机具有不同的套接字
- 非持久HTTP将为每个请求提供不同的套接字
问题:
- 非持久HTTP将为每个请求提供不同的套接字
面向连接分解:多线程Web服务器
连接套接字与进程之间并非一一对应的关系
当今高性能Web服务器通常只使用一个进程,但为每个心得客户连接创建一个具有新连接套接字的新线程
持续HTTP和非持续HTTP