计算机网络(谢希仁 第八版)课程笔记(五)——第五章运输层
运输层实现端对端的通信是应用进程之间的通信区别:网络层为*主机之间的通信*提供服务运输层则在网络层的基础上,*为应用进程之间*提供服务还有就是*差错检测*
第五章 运输层

任务:负责向两台主机中的进程之间的通信提供通用的数据传输服务
一、协议概述
1、进程之间的通信
端对端的通信是应用进程之间的通信
区别:
网络层为主机之间的通信提供服务
运输层则在网络层的基础上,为应用进程之间提供服务
还有就是差错检测
2、两个主要协议
- 用户数据报协议UDP(无连接)
- 传输控制协议TCP(面向连接)

TCP传送的数据单位协议是TCP报文段
UDP传送的是UDP报文或用户数据报
UDP传送之前不需要先建立连接,目的主机收到UDP报文,也不需要给出确认,提供不可靠连接,简单
TCP提供面向连接的服务,传送之前必须要先建立连接,结束要释放连接,不提供广播和多播,提供可靠的连接

3、端口

复用类似一个收发室,大家通过这个发信息
分用类似一个派发员,把收到的东西分发给大家
端口就是对应主机的应用进程
通信不仅需要知道端口号还需要知道IP地址
服务器端使用的端口号
- 熟知的端口号:

- 登记的端口号:1024-49151
- 客户端使用的端口号:49152-65535
二、用户数据报协议UDP
在IP数据报的基础上添加了复用和分用、差错检测
1、UDP概述
主要特点:
- 无连接:发送之前不需要建立连接
- 使用尽最大努力交付:不保证可靠交付
- 面向报文:一次传送完整的报文
- 没有拥塞控制:网络拥塞不会使主机发送降低
- 支持一对一、一对多、多对一、多对多
- 首部开销小,只有8个字节
就添加一个首部

2、UDP首部格式

- 源端口
- 目的端口
- 长度:用户数据报的长度
- 检验和:检验用户数据报在传输过程有没有问题
检验和:
首先UDP有一个伪首部,这个是IP的信息
检验和一开始为0
然后,每16位(包括伪首部、首部、用户数据报,分成一份份16位)按二进制反码运算求和
先求和,如果最高位有进位,就移到最低位运算
最后再取反
然后接受方,无差错就是相加结果为全1,否则就是有差错

三、TCP传输控制协议
1、主要特点
- 面向连接:在传输之前要先建立连接
- 每一条TCP连接两个端点,点对点(一对一)
- 提供可靠交付
- 全双工通信
- 面向字节流


TCP不关心应用进程一次把多长的报文发送给TCP缓存
TCP根据窗口值和网络拥塞程度,决定报文段包含多少字节
2、TCP的连接
TCP连接通过套接字socket

TCP连接就是两个套接字
四、可靠传输的工作原理
理想传输的两个特点:
- 传输不出差错
- 接收方来得及处理数据
应对方式:
- 出差错,重发送
- 来不及就降低发送速率
1、停止等待协议
全双工通信,双方都是发送方也是接收方
就是每发送完一个分组就停止发送,等待对方确认
(1)无差错情况
A发送了数据,收到B的确认返回
(2)出现差错
A没有收到确认,超过一段时间依然没有收到确认,就认为刚才发送的丢失了,重新发送
这就是超时重传
三点:
- A发送完,要保存副本
- 分组和确认分组要进行编号
- 超时重传时间比平均往返时间长一点
(3)确认丢失和确认迟到
确认丢失,就是B发送的确认信息,丢失了
处理:
- B丢失A重复发来的分组
- 继续向A发送确认
确认迟到
就是B的确定来迟了,A超时重发了
处理:
- A丢弃这个确认
- B丢弃重复数据
(4)信道利用率
等于发送时间除于(发送时间+往返时间+B的发送时间)
停止等待的信道利用率太低了

流水线就是发送多个
2、连续ARQ协议
维持一个发送窗口,位于发送窗口的分组都可以连续发送,不需要等待对方的确定
每收到一个确认,就把发送窗口向前滑动一个分组的位置


五、TCP报文段首部格式
分成:首部+数据
功能实现体现在首部
首部固定20字节,后面还有4n字节根据需要而添加

-
序号:每一个字节的序号,指的是本报文段所发送的数据的第一个字节的序号
-
确认号:期望收到对方的下一个报文段的数据的第一个字节的序号

-
数据偏移:指出数据起始处距离TCP报文段的起始处有多远
-
保留:保留为今后使用
-
紧急URG:表明紧急指针字段有效
-
确认ACK:当ACK=1时确认段才有效
-
推送PSH:PSH=1表明要尽快交付接收
-
复位RST:RST=1出现严重差错
-
同步SYN,表示一个连接请求或连接接受报文

-
终止FIN:释放一个连接,等于1表示发送完毕
-
窗口:从确认号起,允许对方发送的数据量
-
检验和:和UDP的计算方式一样,第4字段改为6
-
紧急指针
-
选项


六、可靠传输实现
1、以字节为单位的滑动窗口

窗口越大,表明发送发可以在收到对方确认之前连续发送更多的数据,获得更高的传输效率


2、超时重传时间的选择
TCP采用一种自适应算法
几个关键数据

最后的超时重传时间RTO计算
karn算法:减低重传数据对RTT计算的影响
在计算评价往返时间RTT时,只要报文段重传,就不采用其往返时间样本
3、选择确认SACK
解决重传只缺少的数据

七、TCP的流量控制
1、利用滑动窗口实现流量控制
流量控制:让发送方的发送速率不要太快,使得接收方来得及接收
解决问题:
持续计时器
只要TCP连接的一方收到对方的零窗口通知(不可以再发送了),就启动持续计时器,时间到了,就发送一个探测报文段,对方确认这个探测报文段给出现在的窗口值。
如果窗口不为0,就发送,为0继续持续计时器
2、传输效率
如何开工至TCP发送报文段的时机
糊涂窗口综合征:每次仅发送一个字节或很少字节的数据,导致数据传输效率变低的现象

加一个缓冲
八、TCP的拥塞控制
1、拥塞控制的一般原理
资源需求超过资源可用部分,网络性能明显变坏



方法
开环控制:事先考虑周全,避免发生拥塞
闭环控制:发生拥塞后,采用措施控制,消除拥塞

2、拥塞控制方法
四种
- 慢开始
- 拥塞避免
- 快重传
- 快恢复
拥塞窗口的大小取决网络的拥塞程度,是动态变换

只要网络没有出现拥塞,拥塞窗口可以增大一点
出现拥塞,拥塞窗口变小一点
(1)慢开始


(2)拥塞避免

拥塞避免是线性增加的
(3)快重传

(4)块恢复

3、主动队列管理AQM
就是不要等到队列到达最大值才不得不丢弃后面的分组,而是当达到某个警惕的数值就开始主动丢弃到达的分组
实现方法:
随机早期检测
最小门限、最大门限

九、TCP的运输连接管理
TCP是面向连接的,用来传送报文

建立连接的过程叫做握手


第三次是通知B建立连接了
2、连接释放




必须等待2MSL的时间:
- 保证发送的最后一个ACK报文段能够到达B
- 防止已失效的连接请求报文段出现在本连接中
3、有限状态机
更好显示TCP连接的各种状态之间的关系
更多推荐
所有评论(0)