传输层

传输层

概述

  • 传输的信息称为TPDU,也称数据段segment
  • 传输层利用网络层的服务,为它的上层应用层提供服务
  • 传输层提供的是高效的,可靠的数据传输技术
  • 网络层是将数据从主机传递到主机,而传输层则是将数据送到具体的应用进程,为端点到端点,通过端口号定位到具体的进程
    • 一个端点为一个套接字,用(IP地址,端口号)的二元组,端口号用16位二进制表示
  • 主要包含两个协议:UDP和TCP

通信五元组

  • 源IP
  • 源端口
  • TCP或UDP等传输协议
  • 目的IP
  • 目的端口

用户数据包协议UDP

  • 无连接的传输协议,无需建立连接
  • 传输的是数据段
  • 不是可靠的数据传输,不提供差错控制和可靠传输;但简洁高效
  • DNS使用的是UDP

UDP数据段:8字节的头部+数据

  • 比IP好的地方在于使用了源端口和目的端口
  • 在计算时,需要用到IP地址,破坏了分层的原则
  • UDP数据段头
    • source port:源端口,16位
    • destination port:目的端口,16位
    • UDP length:长度字段,头部和数据有多少字节
    • checksum:校验和,若不计算校验和,则该字段设为0

img

  • 校验和计算:如果收方的校验和为全1,则传输无错

img

  • IP伪头部计算

img

TCP

  • 提供可靠的数据流传输
  • 面向连接的
  • 数据段的形式交换数据

TPU数据段:20字节头部+数据

  • 源端口+目的端口
  • 序列号:32位序列号;初始序列号随机产生;为每个字节编号
  • 确认号:32位,期望接收的字节号;保证TCP的可靠传输;ack=500,则下次从501开始发数据(累计确认技术)
  • TCP段头长度
  • 控制比特:1位进行表示
    • URG:紧急指针有效,必须立即处理,如ctrl+C
    • ACK:1表示确认号有效,0表示确认号无效
    • PSH:表示带有PUSH标志的数据,直接送到上层,不需要缓存
    • RST:重置一个混乱的连接
    • SYN:用于连接建立的过程,与ACK配合使用;SYN=1,ACK=0表示连接建立请求;SYN=1,ACK=1表示接受连接请求
    • FIN:用于释放连接,表示发送方已经没有数据要传输了,但是可以继续接受数据
  • 窗口尺寸:表示对方可以发送的数据字节数(从确认字节号开始,连续发送的字节总数),用于TCP的流量控制
  • 校验和:类似UDP协议,只是IP伪头部计算稍有不同
  • 紧急指针:与URG配合使用

img

TCP三次握手建立连接

更加详细的TCP/IP介绍

  • server被动等待一个连接请求,client发送连接请求
  • 服务器方回发确认应答
  • 应答到达请求方,请求方最后确认,连接建立
  • 三次握手是同步的过程,双方可以互相收发数据双方交换初始序列号,保证后序的每一个字节的可靠传输

img

img

TCP连接释放:四次挥手

  • 一方发送连接释放请求DR(disconnect request),且期待对方的ACK
  • DR到达接收端,它回发ACK,并且另外发送一个DR
  • 当ACK到达发送端时,连接释放;同时它回发确认ACK,当这个ACK到达接收端,反方向的连接也释放了
  • 为避免DR和ACK丢失而引发的问题,采用了定时器:任何时候在发出DR的同时,启动一个定时器,如果超期未收到应答则释放连接,另一方最终会注意到连接的对方已经不在了,超时后连接释放
  • 当初始DR和重传都丢了,发送者会释放连接,但另一端却不会,仍处于活跃状态,导致半开放连接
  • 杀死半开放连接:如果在一定时间内没有TPDU到达的话,连接自动释放;在发送一个TDPU时也启动定时器,当定时器超期,则发动一个哑TPDU,以避免被断掉

TCP传输策略

  • 通过window字段进行流量控制
  • 当window=0时,说明接收方缓存已满,不能够继续收数据了;除非为URGENT信号,或者发送一个字节的数据段,以便让接收者再次发送窗口号,避免死锁

img

  • 优化接收端:延迟回复,将多个回复信息放入一个数据段中;clark方案避免接收方缓存一直处于满的状态(即接收方的缓存有一定的空余时,才发送窗口更新数据)

img

  • 优化发送端nagle算法:在第一个数据段先发送第一个字节,然后缓存剩下多个字节到下一个数据段,依次执行;而不是一个字节一个字节发一个数据段

img

TCP拥塞控制

拥塞的根源:网络的容量(拥塞窗口表示)、接收者容量(接收者窗口表示)

  • 接收者窗口:接收者的瓶颈
  • 拥塞窗口:网络中的瓶颈,通过慢启动算法确定(逐次加倍数据段大小,直到超时)
  • 阈值:当拥塞窗口超过阈值时,不再按指数增长,而是线性增长;当超时时,将阈值设为当前拥塞窗口的一半,重新从1开始增大拥塞窗口或者从阈值大小开始线性增长

img

TCP定时器

  • 重传计时器:当计时器超时,认为包丢失,重新发送
  • 持续定时器:接收方发送更新窗口的数据段丢失,产生了死锁,两者互相等待;使用持续定时器定时发送探索数据段,避免死锁

img

  • 保活定时器:用来检查连接是否存活,超期则杀掉连接

TCP与UDP的选择

img

img

posted @ 2020-07-12 16:56  happy_fan  阅读(470)  评论(0编辑  收藏  举报