运输层

运输层

运输层解决的问题

  • 将网络层的在两个端系统之间的交付服务扩展到运行在两个不同端系统上的应用层进程之间的交付服务

  • 控制运输层实体的传输速率以避免网络中的拥塞,或从拥塞中恢复过来

运输层服务

  • 为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication
  • 在端系统中而不是在路由器中实现的
    • 发送端:将应用程序的信息分组成报文段,传送到网络层
    • 接收端:重新组装网络层的报文段,并传送到应用层

运输层与网络层的关系

  • 运输层:进程之间的逻辑通信,依赖于网络层,但是可以提供可靠性和机密性
  • 网络层:主机之间的逻辑通信,可以提供实时性

因特网运输层协议

  • 可靠的,面向连接的TCP 协议:

    • 拥塞控制
    • 序号,确认和定时器
    • 流量控制
  • 不可靠的,无连接的 UDP协议:

    • 尽最大努力交付报文
  • 不提供的服务

    • 时延保证
    • 带宽保证

多路复用和多路分解

  • 多路复用:在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息,从而生成报文段,然后将报文段传递到网络层

  • 多路分解:将运输层报文段中的数据交付到正确的套接字的工作

工作要求

  • 主机接收 IP 数据报

    • 每个数据报有一个源 IP 地址,目标 IP 地址
    • 每个数据报携带一个运输层报文段
    • 每个报文段含有源端口号和目的端口号
  • 主机利用 IP 地址和端口号将报文段交付到适当的 socket

UDP 的多路分解与多路复用

  • UDP 套接字由一个二元组标识,含有目的 IP 地址和目的端口号
  • 如果两个 UDP 报文拥有不同的 IP 源地址或源端口号,只要拥有相同的目的 IP 地址和目的端口号,这两个报文段会通过相同的 socket 定向到相同的进程

TCP 的多路复用和多路分解

  • TCP socket 由一个四元组标记:源端口号,源 IP 地址,目的端口号,目的 IP 地址
  • 两个具有不同的 IP 源地址或源端口号的到达 TCP 报文段会被定向到两个不同的 socket ,除非 TCP 报文段携带了初始创建连接的请求

无连接运输:UDP

  • UDP 从应用进程获得数据,附加上用于多路复用和多路分解的源和目的端口号字段,以及两个其它的小字段,然后把形成的报文段交给网络层。网络层将该运输层报文段封装到一个 IP 数据包中,然后尽力而为地尝试将此报文段交付给接收主机

  • UDP 被称为无连接的

  • 使用 UDP 的原因:

    • 关于何时,发送什么数据的应用层控制更为精细。
    • 无需连接建立
    • 无连接状态
    • 分组首部开销小。UDP 8个字节, TCP 20字节
  • UDP 多用于实时性强的,可以容忍少量数据丢失的应用上

  • UDP 可能会造成网络拥塞
  • 可以使用应用程序让 UDP 实现可靠传输和拥塞控制。

UDP报文段结构

UDP 首部有四个字段,每个字段由两个字节组成,接收方使用检验和检查该报文段是否出现了差错

UDP校验和

发送方的 UDP 对报文段中的所有16比特字的和进行反码运算,求和时遇到的任何溢出都被回卷,得到的结果被放在 UDP 报文段的检验和字段。

在接收方,全部的4个16比特字(包括校验和)加在一起,如果该分组中没有引入差错,那么校验和肯定是 1111111111111111。如果有一个比特是0,说明传输过程出错了

提供校验和原因:
- 无法保证所有链路都提供差错检测;
- 存储在内存如路由器内存中时引入比特差错。这样符合端到端原则。

端对端原则(end-end principle):与在较高级别提供这些功能的代价相比,在较低级别上设置的功能可能是冗余的或几乎没有价值的

可靠数据传输原理

  • 运输层,链路层以及应用层都会出现可靠数据传输的问题

  • 可靠数据传输的框架:数据可以通过一条可靠的信道进行传输,通过这信道,传输数据比特就不会受到损坏(由0到1,或者相反)或丢失,而且所有数据都是按序交付的

  • 可靠数据传输机制

面向连接的传输:TCP

  • TCP 是面向连接可靠的运输协议,在发送数据之前,必须先互相“握手”
  • TCP 运行在端系统中,连接状态完全保留在端系统中。
  • TCP 连接提供全双工服务(full-duplex service):数据可以从进程A流向进程B的同时,从B流向A。也是点对点(point-to-point)的,多播对TCP不可能

  • 客户进程通过套接字将数据传送到发送缓存(send buffer),TCP在在他方便的时候从缓存中取出数据并放入报文段。数据长度受限于最大报文长度(Maximum Segment Size, MSS),MSS由链路层的最大传输单元(Maximum Transmission)设置,MSS一般为1460字节

  • TCP连接的组成:主机上的缓存,变量和与进程连接的 socket

TCP连接

客户首先发送一个特殊的 TCP 报文端,服务器用另一个特殊的 TCP 报文段来响应,最后,客户再用第三个特殊报文段作为响应。前两个报文不包含应用层数据;第三个报文承载有效数据。这种建立过程称为三次握手

TCP报文段结构

  • 序号:一个报文端的序号是该报文端首字节的字节流编号

  • 主机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号

往返时间估计与重传

  • 在某个时刻测试往返时间 SampleRTT(报文段的样本RTT),TCP不会测试重传之后的报文段 SampleRTT

  • TCP 维护 SampleRTT 平均值 EstimatedRTT,α 一般取值为0.125

    EstimatedRTT=(1-α)*EstimatedRTT+α*SampleRTT
    
  • RTT偏差量DevRTTDevRTT 为介于 SampleRTTEstimatedRTT 之间的差值, β典型值为0.25

    DevRTT=(1-β)*DevRTT+β*|SampleRTT-EstimatedRTT| 
    
  • TCP 超时重传间隔 TimeoutInterval ,初始值为1s,之后使用公式计算

    TimeoutInterval=EstimatedRTT+4*DevRTT。 
    

可靠数据传输

  • 超时重传的三种情况

  • 超时间隔加倍

    每当超时事件发生时,每次 TCP 重传时都会将下一次的超时间隔设为先前值的两倍

  • 快速重传

    • 冗余 ACK 就是在再次确认某个报文端的 ACK,而发送方先前已经收到对该报文的确认
    • 如果 TCP 发送方接收到对相同数据的3个冗余 ACK,就会认为跟在这个已被确认过3次的报文段之后的报文端已经丢失,然后执行快速重传

  • 是回退 N 步还是选择重传

    • TCP 发送方维护SendBase,NextSeqNum,CWND,RWND,
    • TCP接收方维护ExpectedSeqNum
    • 当丢失某分组时,TCPGBN的差异,TCP最多重传一个报文
    • 另一种修改意见,选择确认,选择重传这样就像SR

流量控制

  • TCP提供流量控制(flow-control service)消除发送方使接收方缓存溢出的可能性。
  • 发送方维护接收窗口(receive window,rwnd),表示接收方还有多少可用的缓存,控制已发送但未被确认的数据小于接收窗口,从而提供流量控制。

  • B接收缓存已满,rwnd=0,B没有数据发送给A。当rwnd=0时,A继续发送只有一个字节数据的报文段。这些报文段会被接收方确认,最终缓存开始清空时,确认报文里包含一个非0的 rwnd

TCP连接管理

  • TCP 建立的连接–三次握手

    • C 向 S 发送连接请求,SYN=1的报文,客户端选择初始序号 client_isn。报文称为TCP SYN报文。
    • S连接允许,SYN=1,初始序号server_isn。分配服务器TCP的缓存和变量。报文称为SYNACK报文。
    • 收到SYNACK后,客户端分配 TCP 缓存和变量。发送确认报文,可携带数据。
  • 三次握手的必要性

    • 第一个报文知道发送端可以发
    • 第二个报文知道接收端能发能收
    • 第三个报文知道发送端能收
  • TCP连接的关闭–四次挥手

    • C 向 S 发送连接请求,FIN=1的报文
    • S 确认 C 已断开
    • S 向 C 发送连接请求,FIN=1的报文
    • C 确认 S 已断开

  • 四次挥手的必要性

    • 前两次挥手确认双方都知道客户机断开连接
    • 后两次挥手确认双方都知道服务器断开连接
  • TCP 的一个生命周期

    • 客户机端
    • 服务器端
  • SYN 洪泛攻击及其防护

拥塞控制(以后完善)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值