自学笔记

195 阅读6分钟

网络工作原理3

传输层

传输层的基本服务

 核心任务: 是为应用进程之间提供端到端的逻辑通信服务
 主要功能包括:
             1 传输层寻址
             2 应用报文的分段(发送端)和重组(接收端)
             3 报文的差错检测
             4 进程间的端到端可靠的数据数据传输
             5 面向应用层实现复用和分解
             6 端到端的流量控制
             7 拥塞控制

传输层的功能

  传输层协议提供端到端的逻辑通信服务,协议只需要在端系统种实现,通信的真正端点不是主机,而是主机的应用程序
  
  
  传输层提供2种服务:
                  1 无连接的服务:
                                数据传输之前不需要与对端进行任何信息交换(即握手)直接构造传输层报文并
                                且向接收端发送 ----》这种称为UDP传输方式(不太可靠,但是时效和速度快)
                  2 面向连接的服务:
                                 在数据传输之前,需要双方交换控制信息建立逻辑连接,然后在传输数据,数据
                                 传输完毕之后,还要将连接断开 ----》这种称为TCP连接

传输层的服用与分解

 多路用与多路分解:是传输层的一项基本功能,持久众多应用进程共用一个传输层协议,并且能够将接收到数据准确的交付到
                 不同的应用进程
 UDP ---》 套接字的端口号是UDP实现复用与分解的重要依据
 TCP----》 通过源IP地址,源端口号,目标的IP地址,目标的端口号, 当一个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请求表示双方同时都有时间,那么之后数据的接收和发送由这个确认号来对应如果
          出现不一样的确认号,代表数据错误,就会引起重发


  断开连接 ---- 4次挥手
  
    详细流程:
            1 首先客户端会发送FIN(断开连接)请求给服务端,也会携带上自己的初始序号假设为x
            2 客户端收到之后收到请求之后,返回ACK确认信息,会把自己的初始序号假设为y,和希望得到确认号假设为x+1
            发送给客户端
            此时为半断开状态,因为此时客户端确实没有请求给服务端了,但是并不代表服务端没有数据给客户端了,当服务端
            也没有数据返回给服务端时 进入第33 由服务发送FIN请求给客户端,携带初始序号和确认号假设确认号为D+1
            4 客户端收到之后返回ACK,并把D+1的数据和确认号假设为W+1给到服务端,服务端收到之后会立即断开连接,
            而客户端会等待一段时间确认W+1确认号数据服务端没有返回回来之后在断开
            
           

总结

TCP之所以被称为可靠传输就是基于:
                             1 差错检测
                             2 确认
                             3 重发
                             3 序号
                             4 计时器
      结合了停-等协议和滑动窗口协议的特点保证了数据的可靠传输,具体如何实现参考上面3个协议的流程