计算机网络 传输层
基本概念
介于通信子网和资源子网之间,对高层用户屏蔽了通信的细节
提供端到端之间的无差错保证
网络层提供的服务类型
- A型:本质上很完善,其分组丢失率、重复或篡改的概率可以忽略(局域网的服务)
- B型:具有可接受的残留差错率和不可接受的被告知的故障率
- C型:相当不可靠
OSI传输层的协议类型
- TP0:支持A型网络,实现分段和重组功能
- TP1:支持B型网络,执行分段和重组和差错恢复功能
- TP2:支持A型网络,实现分段和重组,以及单一虚拟电路上的数据流多路复用技术和解除复用技术等功能
- TP3:支持B型网络,提供差错恢复、分段和重组、以及单一虚拟电路上的数据流复用技术和解除复用技术等功能
- TP4:支持C类网络,提供差错恢复功能,实现分段和重组处理,并支持单一虚拟电路上的数据流复用技术和解除复用技术
- 前四个只适用于面向连接通信
通信进程标识:端口号
- 系统端口号/熟知端口号
- 登记端口号
- 客户端口号/短暂端口号
具体协议
UDP
- 只在IP的数据报服务之上增加端口功能和差错检测功能
- 不可靠的交付,传输的可靠性要靠应用程序来解决
- 面向报文:应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
TCP
概述
- 面向连接,点对点,连接的端点叫做套接字,套接字 socket = (IP地址: 端口号)
- 全双工通信
- 面向字节流
- 根据对方给出的窗口值和当前网络拥塞的程度,决定一个报文段应包含多少个字节
首部
可靠传输
- 每一端都设有两个窗口:发送窗口和接收窗口
- 利用字节的序号进行控制,TCP 所有的确认都是基于序号而不是基于报文段
- 发送窗口大小由接收方通告的接收窗口大小决定,接收到接收方的确认报文后,窗口后沿向前滑动,并滑动窗口前沿,使得:前沿-后沿=调整后的发送窗口大小
- 每个报文设置超时计时器
- 设置与往返时间有关
- 选择确认
- 收到和前面的字节流不连续的字节
- 序号都在接收窗口之内,则接收方先收下这些数据,并告知发送方不要重复发送
- TCP 首部的选项中要加上“允许 SACK”的选项
流量控制
- 滑动窗口机制
- 报文发送时机
- 缓存中存放的数据达到 MSS (最大报文段长度)字节时,就组装成一个 TCP 报文段发送出去
- 应用进程指明要求发送报文段
- 计时器期限到了,将当前已有的缓存数据装入报文段发送
拥塞控制
- 传输轮次:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认,约为往返时间
- 快重传
- 发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段
- 快恢复
- 发送端收到连续三个重复的确认时,就将慢开始门限 ssthresh 设置为当前拥塞窗口的一半,然后开始执行拥塞避免算法
- 发送端收到连续三个重复的确认时,就将慢开始门限 ssthresh 设置为当前拥塞窗口的一半,然后开始执行拥塞避免算法
- 传输轮次:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认,约为往返时间
连接管理
- 连接建立:三次握手
- 连接建立:三次握手
连接释放:四次挥手
- 等待2MSL:保证A最后一个 ACK 报文段能够到达B;使本连接内所产生的所有报文段都从网络中消失,下一个新的连接中不会出现旧的连接请求报文段
- 等待2MSL:保证A最后一个 ACK 报文段能够到达B;使本连接内所产生的所有报文段都从网络中消失,下一个新的连接中不会出现旧的连接请求报文段