-
3.1 概述和传输层服务
- 概述
- 逻辑通信:不用考虑底层细节,主机间仿佛直接相连
- 传输层为不同主机的进程间提供逻辑通信
- 网络层为主机之间提供逻辑通信
- 传输层概述
- 传输层分组名:报文段segment
- 传输层协议的实现地点:端系统
- TCP/IP协议栈中有两种传输层协议:TCP和UDP
- 逻辑通信:不用考虑底层细节,主机间仿佛直接相连
-
- 传输层服务与网络层服务的关系
- 受到限制
- 网络层不能提供时延和吞吐量服务
- 传输层也不能提供此服务
- 增加服务
- 网络层不能保证信息的机密性
- 传输层可加密确保机密性
- 2.因特网运输层概述
-
IP网际协议
- 尽力而为交付best-effort delivery service
- 含义:做最大努力交付信息却不做任何确保
- IP是不可靠服务
- 尽力而为交付best-effort delivery service
-
UDP和TCP最基本的责任:扩展交付服务,将端系统间扩展为端系统上进程之间。这种交付扩展被称为:运输层的多路复用和多路分解
-
TCP提供的几种服务
可靠数据传输
拥塞控制
-
- 概述
-
3.2 多路复用与多路分解
- 概念
- 多路复用:多个进程的消息汇聚在一起交给网络层
- 多路分解:网络层的消息分向多个进程
- 通过套接字完成
- 端口号
- 大小:16bit
- 范围:0~65535
- 周知端口号:0~1023
- 留给如HTTP和FTP等应用层协议
- 套接字占用两段内存空间,发送缓存和接收缓存,这两段缓存通过套接字变量名来标识
- 多路复用的要求
- 套接字有唯一标识符
- 每个报文有能与套接字一一对应的字段
- 1.无连接的多路复用与多路分解(UDP)
- UDP套接字的组成:二元组
- 目的IP地址
- 目的端口号
- (无源IP地址)
- (无源端口号)
- 源端口号的作用:作为“返回地址”的一部分
- UDP套接字的组成:二元组
- 2.面向连接的多路复用与多路分解(TCP)
- TCP套接字的组成:四元组
- 目的IP地址
- 目的端口号
- 源IP地址
- 源端口号
- 来自不同的主机的不同套接字可能源端口是相同的
- TCP套接字的组成:四元组
-
- Web 服务器与TCP
- 套接字与进程之间并非总是一一对应的关系,如今可能是和线程一一对应
- 概念
-
3.3 5UDP
- 概述
- UDP对IP增加的功能
- 多路复用/多路分解
- (少量的)差错检验
- 无连接:发送报文之前发送方与接收方没有握手
- 使用UDP的好处
- 更精确地控制数据发送内容和发送时间
- 无需建立连接,无建立连接的时延
- 无连接状态
- 不用维护连接状态
- 不用跟踪连接时的参数
- 分组首部开销小
- 避免时延
- 可通过应用层建立可靠数据传输
- 如谷歌Chrome的QUIC协议
- UDP对IP增加的功能
-
- UDP 报文段结构
- 结构
- 首部
- 源端口号:用于多路分解
- 目的端口号:用于多路分解
- 长度:表明整个报文段长度
- 检验和/校验和:检验是否出差错
- 报文
- 首部
- 长度
- 首部长度:8byte
- 每个字段长度:2byte
-
- 校验和/检验和
- UDP校验和的实现
- (理解内容)
- 端到端原则:在与较高级别提供的功能的代价相比,在较低级别设置的功能可能是冗余或几乎没有价值的
- UDP无法进行差错恢复
- 数据出现差错,UDP的两种处理方式
- 丢弃该报文段
- 将差错报文段交给应用程序并给出警告
- 概述
-
3.4 可靠数据传输的原理
- 1.完全可靠信道上的可靠数据传输:rdt1.0
- 2.具有比特差错信道上的可靠数据传输:rdt2.0
- 3.具有比特差错的丢包信道上的可靠数据传输:rdt3.0
-
- 流水线可靠数据传输协议
-
3.5 TCP
-
- TCP 连接
- 特点
- 全双工
- 点对点
- 逻辑连接:中间的网络元素不会维持连接状态
- 过程
- 先把数据放入发送缓存中
- 从缓存中取出并放入报文段中的数据量受限于最大报文长度MSS
- MSS通常由最大链路层帧长度决定
- MSS的典型值为1460byte
- 以太网和PPP链路层协议都有1500字节的MTU
- TCP/IP首部长度40字节
- 最大报文段长度MSS
- Maximum Segment Size
- 指报文段中应用数据的最大长度,而不是指包括首部的TCP报文段的最大长度
- 最大传输单元MTU
- Maximum Transmission Unit
- 注MTU≠MSS,概念不同极易混淆
- 2 报文段结构
- MSS限制了报文段数据字段的最大长度,因为当TCP发送一个大文件时,文件数据会被划分成若干个长为MSS的数据块
- 结构(每排4字节)
- 源端口号、目的端口号
- 序号
- 确认号
- 首部长度字段(4比特)、标志字段、接收窗口字段(2字节)
- 校验和、紧急数据指针
- 选项(0~40字节)
- 数据
- 各字段的含义
- 源端口号、目的端口号:用于多路分解、多路复用
- 序号、确认号:用于实现可靠数据传输
- 首部长度字段:表明TCP首部长度,以4字节为单位
- 选项字段常为空,因此TCP通常为20字节
- 标志字段
- ACK:用于对接收报文段的确认
- RST、SYN、FIN:用于连接的建立与拆除
- PSH:置1时表明需立即交付上层(并没有被使用)
- URG:紧急(并没有被使用)
- 接收窗口:用于流量控制
- 校验和:用于检验差错
- 紧急数据指针:需立即通知上层(并没有被使用)
- 字节流
- TCP把数据看做一个无结构、有序的字节流
- 序号是字节流的编号,而不是建立在报文段的序列之上
- 确认号是期望对方主机发送的下一字节的序号
-
- 往返时延的估计与超时
- TCP估计发送方与接收方之间的往返是通过采集报文段的样本RTT实现的
-
- 可信数据传输
-
- 流量控制
-
- TCP 连接管理
-
-
3.6 拥塞控制原理
-
- 拥塞原因与开销
-
- 拥塞控制方法
-
-
3.7 TCP 拥塞控制
-
- 加性增、乘性减
- 2.慢启动
- 3.对超时事件作出反应
-