一、概述
1.基本理论和基本机制
(1)复用/分用
(2)可靠数据传输机制
(3)流量控制机制
(4)拥塞控制机制
2.传输层 vs 网络层
(1)网络层:提供主机之间的逻辑通信机制
(2)传输层:提供应用进程之间的逻辑通信机制,依赖于网络层服务
3.TCP与UDP
(1)TCP:拥塞控制、流量控制、连接建立
(2)UDP:没有做(可靠性方面的)扩展
(3)两种服务均不保证:延迟、带宽
二、复用与分用
1.概念
(1)多路分用:把网络层发过来的数据分发给不同的进程(socket)
(2)多路复用:不同的进程(socket)的报文利用网络层发出去
2.多路分用的实现
(1)基本原理:
① 数据报中携带了源端口号和目的端口号
② 传输层协议提取IP地址和端口号信息,把段导向相应的Socket
(2)无连接分用
① UDP的Socket用二元组标识:(目的IP地址,目的端口号)
② 主机收到UDP段后
1)检查段中的目的端口号
2)将UDP段导向绑定在该端口号的Socket
(3)面向连接的分用
① TCP的Socket用四元组标识
1)源IP地址
2)源端口号
3)目的IP地址
4)目的端口号
三、UDP
1.工作内容:
(1)复用/分用
(2)简单的错误校验
2.特点
(1)易丢失
(2)非按序到达
(3)无连接
3.存在的意义
(1)无需建立连接 (减少延迟)
(2)实现简单:无需维护连接状态
(3)头部开销少
(4)没有拥塞控制: 应用可更好地控制发送时间和速率
4.应用场合
(1)流媒体应用(容忍丢失、速率敏感)
(2)DNS、SNMP
5.在UDP上实现可靠数据传输
(1)在应用层增加可靠性机制
(2)应用特定的错误恢复机制
6.UDP数据报:
7.UDP校验和
(1)将段的内容视为16-bit整数计算所有整数的和
(2)计算所有整数的和,进位加在和的后面,将得到的值按位求反,得到校验和
四、可靠传输原理
1.可靠性
(1)概念:不错、不丢、不乱
(2)实现思想:校验和 + 序列号 + ACK + 重传 + 定时控制
2.流量控制
(1)概念:单主机多组同时发,但又要处理得过来
(2)实现思想:流水线机制(多组同时发)、滑动窗口协议(最多等多少个消息)
3.拥塞控制
(1)概念:多主机同时发多数据,但又要处理的过来
(2)实现思想
① 端到端拥塞控制:端判断拥塞,若拥塞,发送端降低自己发送速率
② 网络辅助的拥塞控制:与①不同的是,判端部分由路由器完成
五、TCP概述
1.点对点
(1)一个发送方,一个接收方
2.可靠的、按序的字节流
3.流水线机制
(1)TCP拥塞控制和流量控制机制设置窗口尺寸
4.发送方/接收方缓存
5.全双工(full-duplex)
(1)同一连接中能够传输双向数据流
6.面向连接
(1)通信双方在发送数据之前必须建立连接。
(2)连接状态只在连接的两端中维护,在沿途节点中并不维护状态。 §
(3)TCP连接包括:两台主机上的缓存、连接状态变量、socket等
(4)流量控制机制
7.TCP段结构
8.序列号和ACK
(1)序列号
① 是segment中第一个字节的编号,而不是segment的编号
② 建立TCP连接时,双方随机选择序列号
(2)ACK
① 希望接收到的下一个字节的序列号
② 累计确认:该序列号之前的所有字节均已被正确接收到
六、TCP可靠数据传输
1.TCP发送方事件
(1)从应用层收到数据
① 创建Segment
② 序列号是Segment第一个字节的编号
③ 开启计时器
④ 设置超时时间(TimeoutInterval)
(2)超时
① 重传引起超时的Segment
② 重启定时器
(3)收到ACK
① 如果确认此前未确认的Segment
1)更新SendBase
2)如果窗口中还有未被确认的分组,重新启动定时器
2.超时时间
(1)TimeoutInterval = EstimatedRTT(平均) + 4*DevRTT(浮动)
3.快速重传机制
(1)在定时器超时之前即进行重传(收到对同一数据的3个ACK)
4.TCP流量控制
(1)Receiver通过在Segment的头部字段将RcvWindow 告诉Sender
(2)Sender限制自己发送的的数据不超过接收方的RcvWindow
(3)当Receiver告知Sender RcvWindow=0,Sender会定期的发送窗口探寻,时间间隔成指数上升,但当达到一定时间时,会断开连接
七、TCP连接管理
1.三次握手
(1)第一步
① client发送syn到server发起握手;
② client发送client初始序列号J
(2)第二步
① server收到syn后回复syn+ack给client;
② server分配缓存,发送server的初始序列号K
(3)第三步
① client收到syn+ack后,回复server一个ack
(4)流程图
(5)SYN攻击
① 两次握手后,不给server回复ack,
② 第二步会分配缓存资源,并保存一段时间,大量的请求,会导致缓存不足,服务器瘫痪
(6)为什么要三次握手
① 防止网络阻塞,请求重发,造成server的多次响应
2.四次挥手
(1)第一次挥手
Client发送一个FIN,Client进入FIN_WAIT_1状态。
(2)第二次挥手
Server收到FIN后,发送ACK给Client,Server进入CLOSE_WAIT状态。
(3)第三次挥手
Server发送一个FIN,Server进入LAST_ACK状态。
(4)第四次挥手:
Client收到FIN后,进入TIME_WAIT状态(等待2MSL后关闭),发送ACK给Server,Server进入CLOSED状态,完成四次挥手。
(5)流程图
(6)为什么要四次挥手?
① 因为是全双工的,主动断开的一方只是说明“我不发了”。只有当被动的一方也说明“我也不发了”,才能断开连接。
八、TCP拥塞控制
1.TCP拥塞的根源
(1)网络容量小:在路上堵住了
(2)接收者容量小:在目的地堵住
2.解决思路
(1)拥塞检测:假定超时是由拥塞
(2)拥塞控制:减慢数据率,动态维护窗口大小(滑动窗口协议)
3.具体方案
(1)慢速启动算法
① 按指数增长趋势定义拥塞窗口大小cwnd
② 拥塞窗口增长到阈值时,改为线性增长
③ 超时,阈值减为拥塞时的拥塞窗口的一般
④ 重新慢速启动或快速启动(直接从阈值开始线性增长)
(2)当收到ICMP抑制分组(网络层的拥塞控制信号),当做作超时处理
(3)拥塞控制四大机制
① 慢开始
② 拥塞避免
③ 快重传
④ 快恢复
九、C/S模型