计算机网络——运输层基础

目录

  • 一、运输层提供的服务
    • 1.UDP与TCP的区别
    • 2.端口
    • 3.实现复用分用和差错检测
      • 端口的复用和分用
      • 差错检测,运输层和数据链路层区别
  • 二、UDP协议 8B固定首部
    • 1.首部格式
    • 2.伪首部——用于计算校验和 (12B)
    • 3.UDP校验
  • 三、TCP协议 20B固定首部
    • 1.面向字节流
    • 2.首部格式
      • 序号seq 重要
      • 确认号ack 重要
      • 数据偏移(首部长度) 4B为单位
      • 6个控制位
      • 窗口
      • 检验和
      • 紧急指针
      • 选项
    • 3.TCP的可靠传输
      • 校验
      • 滑动窗口
      • 重传
    • 4.TCP的连接管理
      • TCP的连接建立(三次握手
      • SYN洪范攻击
      • TCP的连接释放(四次挥手
    • 5.TCP的流量控制
      • 停止等待协议(性能差,信道利用率低
      • 滑动窗口协议(性能好,流水线技术
        • 后退N帧协议(GBN)
        • 选择重传协议(SR)
    • 6.TCP的拥塞控制
      • 接收窗口和拥塞窗口
      • 拥塞控制算法
        • 慢开始和拥塞避免
        • 快重传和快恢复


一、运输层提供的服务

运输层的单位是报文段
(应用层:报文 、网络层:数据报、数据链路层:帧、物理层:比特)

1.UDP与TCP的区别

用户数据报协议UDP (User Datagram Protocol):

  • 无连接,不可靠,但是首部小
  • 尽力交付,无流量控制拥塞控制,所以多用于实时应用
  • 面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)
  • 支持一对一、一对多、多对多

传输控制协议 TCP(Transmission Control Protocol):

  • 面向连接,可靠(流量控制、拥塞控制)
  • 全双工,只支持点对点通信
  • 面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块)

2.端口

端口用来标识主机中的应用进程,只有本地意义,长度16bit,最多表示2^16=65536个端口
端口号:

使用环境 端口号
服务端 熟知端口号(0-1023):给TCP/IP最重要的应用程序,如FTP 21 HTTP 80等
服务端 登记端口号(1024-49151):给不是熟知端口号的应用程序用,如mc服务器 25565等
客户端 端口号(49152-65535):客户进程运行时动态选择

套接字Socket:IP+端口号,唯一标识了网络中的一台主机和运行在主机上的某个进程。

3.实现复用分用和差错检测

端口的复用和分用

计算机网络——运输层基础_第1张图片

差错检测,运输层和数据链路层区别

  • 运输层的差错检测的目的是无传输差错。即丢失乱序重复。
  • 数据链路层的差错检测的目的是无比特差错。即多0少1这种,信号干扰导致的问题。

二、UDP协议 8B固定首部

UDP本身实现了很少的功能(复用分用和差错检测),可以理解成原封不动把报文交给了网络层

1.首部格式

计算机网络——运输层基础_第2张图片

2.伪首部——用于计算校验和 (12B)

伪首部只在计算校验和的时候出现,不向上向下传送
伪首部组成:
源IP,目的IP,全0,协议(TCP为6 UDP为17),UDP长度,如下图
计算机网络——运输层基础_第3张图片

3.UDP校验

计算机网络——运输层基础_第4张图片


三、TCP协议 20B固定首部

TCP因为要求可靠,所以需要流量控制和拥塞控制(重点)
TCP面向字节流,他会把应用层给的数据看成一个一个的字节

1.面向字节流

计算机网络——运输层基础_第5张图片

2.首部格式

计算机网络——运输层基础_第6张图片

序号seq 重要

表示当前报文段所发送数据的第一个字节的序号
tcp传送的字节流的每一个字节都是按顺序有序号编号的,这样就能确保数据的有序传输

确认号ack 重要

表示期望收到的下一个报文段的第一个字节的序号
如果确认号为N,那么就可以代表已经正确收到N-1为止的所有数据

数据偏移(首部长度) 4B为单位

占四位,最长四个1,即15*4B=60B。也就是代表TCP首部最长60字节

再复习一下IPv4的记忆口诀:一种八片的首饰
总长度单位:1B 片偏移:8B 首部长度:4B
IPv4首部固定20B (填充字段保证4B整数倍)

6个控制位

  • URG:紧急位,表示高优先级的数据,不在缓存里排队,配合紧急指针使用
  • ACK:确认位,用于表示确认号ack有效
  • PSH:推送位,在接收方体现,高优先级数据赶紧交付给应用层
  • RST:复位,表明TCP连接中出现严重差错,必须释放连接,再重新建立传输连接
  • SYN:同步位,表示当前是一个连接请求/接受报文
  • FIN:终止位,表示发送方数据发完,但仍然可以接收数据(半关闭状态)

窗口

指本报文段发送方可容纳的字节流,也就是允许对方发送的数据量

检验和

和UDP一样,加一个12B的伪首部,协议字段为6(代表TCP)

紧急指针

在控制位URG为1时有效,代表紧急数据的长度(紧急数据已经在缓存队列的头部了,所以只需要大小就能判断数据长度

选项

最大报文段长度MSS(拥塞窗口的单位)、窗口扩大、时间戳等等


3.TCP的可靠传输

保证接收的和发送的是一样的。

校验

与UDP一样加一个伪首部

滑动窗口

重传

  • 超时重传:TCP采取自适应的算法,动态改变重传时间RTTs(加权平均往返时间)重传计时器
  • 快速重传(冗余ACK)

4.TCP的连接管理

TCP的连接建立(三次握手

计算机网络——运输层基础_第7张图片

SYN洪范攻击

攻击者大量发送第一次握手(连接请求报文段)给服务器后,服务器发送ACK后攻击者不再确认,导致服务器一直处于挂起半连接状态,然后服务器还会持续发送ACK给攻击者,导致持续浪费服务器资源。可能导致无法对正常用户进行响应。
解决办法:SYN Cookie等

TCP的连接释放(四次挥手

计算机网络——运输层基础_第8张图片

等待2MSL的原因:时间等待计时器
①如果最后一次释放确认服务器没收到,那么服务器会重传一次Round3,保证客户发的最后一次ACK报文段能够到达服务器
②可以使本连接持续时间内产生的所有报文段消失,防止“已失效的连接请求报文段”


5.TCP的流量控制

TCP利用滑动窗口来进行流量控制

停止等待协议(性能差,信道利用率低

发送完一个数据报就停止发送,等待对方的确认,在收到确认后再发送下一个数据报。
重传计时器:每次发送一个数据报就启动一个计时器。

差错情况:

  1. 数据帧丢失或检测到帧出错
  2. ACK丢失
  3. ACK迟到

滑动窗口协议(性能好,流水线技术

后退N帧协议(GBN)

计算机网络——运输层基础_第9张图片
计算机网络——运输层基础_第10张图片

GBN在重传时必须把原来已经正确传送的数据帧重传,使传送效率降低,故此有了选择重传协议

选择重传协议(SR)

计算机网络——运输层基础_第11张图片计算机网络——运输层基础_第12张图片


6.TCP的拥塞控制

防止过多的数据注入到网络中

拥塞控制和流量控制的区别:

  • 拥塞控制:全局
  • 传输层流量控制:端到端,给发送端一个窗口公告
  • 链路层流量控制:点到点,收不下就不回复确认

接收窗口和拥塞窗口

接收窗口(rwind):接收方根据接收缓存设置的值,并告知给发送方,反映接收方容量
拥塞窗口(cwind):发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量
发送窗口:min{接收窗口,拥塞窗口}

拥塞控制算法

传输轮次 :发送一批报文段并收到它们确认的时间 RTT
慢启动阈值(ssthresh) : 到了这个阈值就加法增大来拥塞避免,到了网络拥塞时,更新ssthresh为当前拥塞窗口大小的1/2
最大报文段(MSS) :拥塞窗口的单位

慢开始和拥塞避免

计算机网络——运输层基础_第13张图片

快重传和快恢复

计算机网络——运输层基础_第14张图片


你可能感兴趣的:(计算机网络,计算机网络)