网络工作原理3
传输层
传输层的基本服务
核心任务: 是为应用进程之间提供端到端的逻辑通信服务
主要功能包括:
1 传输层寻址
2 应用报文的分段(发送端)和重组(接收端)
3 报文的差错检测
4 进程间的端到端可靠的数据数据传输
5 面向应用层实现复用和分解
6 端到端的流量控制
7 拥塞控制
传输层的功能
传输层协议提供端到端的逻辑通信服务,协议只需要在端系统种实现,通信的真正端点不是主机,而是主机的应用程序
传输层提供2种服务:
1 无连接的服务:
数据传输之前不需要与对端进行任何信息交换(即握手)直接构造传输层报文并
且向接收端发送
2 面向连接的服务:
在数据传输之前,需要双方交换控制信息建立逻辑连接,然后在传输数据,数据
传输完毕之后,还要将连接断开
传输层的服用与分解
多路用与多路分解:是传输层的一项基本功能,持久众多应用进程共用一个传输层协议,并且能够将接收到数据准确的交付到
不同的应用进程
UDP
TCP
依据这4个值来将报文分解得到相应的套接字来实现
停-等协议与滑动窗口协议
可靠传输的基本原理:
1 差错检测:利用差错编码来实现数据包传输过程种比特差错检测
2 确认:接收反馈接收的状态(比如状态码)
3 重传:发送方重新发送接收方没有正确的接收的数据
4 序号:确保数据按序提交的
5 计时器: 解决数据丢失问题(在一定时间内没接收到数据,就会通知发送方重新传递数据)
停-等协议
特点:每发送一个报文就停下来等待接收方反馈接收信息
基本过程:
1 发送方发送经过差错确认码和编号的报文,等待接收方收到确认(发送并且等待)
2 接收方如果正确的接收到了报文,即差错检测没有问题和编码也是正确的,则接收报文返回ACK信息,
不然丢弃报文发送NAK信息
3 如果发送方收到了ACK信息则继续报送之后的报文,否则重新发送刚才发送的报文
性能问题: 由于每发送一次报文,都要等待信息反馈,降低了信道的效率
解决方式:
1 使用流水协议或者管道协议
2 改进流水线协议:
1 增加分组的序号范围(比如一组里面有3个报文,我现在加成6个)
2 发送方或者接收方缓存多个分组(理解为发送方将要发送的一组的每一个报文
保存起来,接收方也将接收到的报文进行保存,如果出错了,只需要将错的那个报文
进行传输,而不需要将整个一组重新传输,大大提升了效率)
典型的流水线协议:滑动窗口协议
滑动窗口协议
有2种协议:
1 回退N步(GBN)协议:
接收方的窗口大小只为1,只能接收一个按序到达的分组,未按序到达(本来是1组先到,2组却
先到了)或者差错检测检测到了错误就会引发重发
2 选择重发(SR)协议:
增加了接收方的缓存大小(>1),缓存正确到达但失序的分组,仅要求发送方重传未被接
收正确的分组,等这个分组到了之后,一并按序提交给上层(就比如此时收到了1 3 4 5 没
收到2,那就等2来了之后 按照 1 2 3 4 5 的顺序在一并提交给上层)
传输控制协议(TCP)
建立连接
首先要理解基本流程:
1 SYN请求(同步请求)
2 SYNACK(同步确认)
3 ACK(客服端在一次确认)
详细流程:
1 客户端发送一个SYN请求,里面携带一个客户的初始序号(序号是之后传输的重要依据)假设为X
2 服务端收到SYN请求之后,如果成功建立会返回ACK的确认信息并把自己的初始序号假设为Y,和下一次发送请求希望
接收到的确认号(这里的确认号指的是发送方发送数据的序号)假设就为x+1
3 客户端收到ACK信息之后,会将x+1序号的数据发送给服务端,并且携带上希望接收到的数据的序号
(这里需要就要对应之前服务端希望客户端发送请求数据的序号,2者相互对应这样保证数据的可靠传输)
假设为y+1,发送给服务端
此时代表握手完成,序号的对应和SYN请求表示双方同时都有时间,那么之后数据的接收和发送由这个确认号来对应如果
出现不一样的确认号,代表数据错误,就会引起重发
断开连接
详细流程:
1 首先客户端会发送FIN(断开连接)请求给服务端,也会携带上自己的初始序号假设为x
2 客户端收到之后收到请求之后,返回ACK确认信息,会把自己的初始序号假设为y,和希望得到确认号假设为x+1
发送给客户端
此时为半断开状态,因为此时客户端确实没有请求给服务端了,但是并不代表服务端没有数据给客户端了,当服务端
也没有数据返回给服务端时 进入第3步
3 由服务发送FIN请求给客户端,携带初始序号和确认号假设确认号为D+1
4 客户端收到之后返回ACK,并把D+1的数据和确认号假设为W+1给到服务端,服务端收到之后会立即断开连接,
而客户端会等待一段时间确认W+1确认号数据服务端没有返回回来之后在断开
总结
TCP之所以被称为可靠传输就是基于:
1 差错检测
2 确认
3 重发
3 序号
4 计时器
结合了停-等协议和滑动窗口协议的特点保证了数据的可靠传输,具体如何实现参考上面3个协议的流程