计算机网络 - 传输层

5 传输层

掌握传输层在计算机网络中的地位、功能、工作方式,掌握UDP、TCP 。
TCP 报文分析、流量控制、拥塞控制机制

5.1 传输层提供的服务

5.1.1 传输层的功能

提供进程之间的逻辑通信,而网络层时提供主机和主机之间的进程通信

传输层的功能:

  • 提供进程到进程(端到端)的通信
  • 复用、分用:服务用指发送方不同进程都可以使用同一个传输层协议传输数据。分用,接收方剥去报文首部后将数据正确交付给相应的进程。
  • 传输层对报文首部和数据进行差错检测,网络层只检查IP的首部
  • 提供UDP和TCP两种协议

5.1.2 传输层的地址和端口

  • 端口号用来识别进程
  • 端口号共16bits
  • 套接字,实际上是一个通信端点 Socket = (IP地址:端口号)唯一标识网络中一台主机和其上的一个应用

IP数据报和UDP数据报的区别:IP数据报被路由器存储转发,UDP数据报字传输层端到端传输,封装在IP数据报中,对路由不可见

TCP和虚电路网络的区别: TCP报文对路由器不可见,在传输层的抽象逻辑信道中传输,对路由器不可见; 虚电路所经的交换节点都保存了虚电路的状态信息。

5.2 UDP协议

  • 执行速度快,传输性能好,不需要确认
  • 主要应用 :小文件传输协议TFTP 、DNS、实时传输协议RTP、SNMP

5.2.1 UDP数据报

  • 提供复用、分用、差错检测
  • 无需建立连接
  • 首部开销小 8B
  • 支持一对一、一对多
  • UDP是面向报文的,既不合并也不拆分,一次发送一个报文,因此应用程序必须小心选择UDP长度,太长会导致交付到网络层IP数据报分片,太短性能下降。
  • 最大努力交付,不保证可靠交付
  • 无拥塞控制,适合实时应用

请添加图片描述

5.2.2 UDP 校验

在校验UDP时,要在数据包之前加入伪首部。
UDP校验和,检查首部和数据

5.3 TCP协议

5.3.1 TCP协议特点

  • 建立在不可靠的IP层之上实现的可靠数据传输协议,主要解决可靠,有序,无丢失,不重复的问题。
    ssh 、HTTP、FTP、远程登陆
    特点
  • TCP时面向连接的
  • 点对点通信
  • 提供可靠交付
  • 全双工通信,有发送缓存和接收缓存。发送缓存:1. 准备发送的数据 2.已发送未确认的数据 接收缓存:1.按序到达尚未被接受的数据 2.不按序到达的数据
  • 面向字节流
  • TCP报文长度,由接收方窗口和网络拥塞成度控制

5.3.2 TCP报文段

  • 首部20B
  • 填充:为了整个首部长度为4B整数倍

请添加图片描述

5.3.3 TCP连接管理

  • TCP连接有三个过程,建立连接,数据传送,连接释放
  • TCP连接的端口为套接字

请添加图片描述

TCP 建立连接

因为TCP要保证顺序接收,因此报文是带有序号的,保证顺序接受报文

  • 第一步: 客户机的TCP想服务器的TCP发送请求报文段。报文中的SYN置1,同时选择一个同步序号seq=x,SYN报文不能携带数据,但是要消耗掉一个序号。
  • 第二步:服务器为该TCP分配缓存和变量,再确认报文中,SYN,ACK位都置 1, 确认好 ack = x+1, 同时也为知己选择一个出视序号seq = y,确认报文不能携带数据,但也要消耗掉一个序号。
  • 第三步:客户机收到确认保温后,向服务器给出确认,为该TCP连接分配缓存和变量,确认报文端的ACK = 1,确认号 ack = y+1,序号seq = x+1.该报文段可以携带数据,若不携带数据则不消耗序号。
TCP 连接的释放

TCP 释放四次挥手

  • 客户端打算关闭连接,向TCP发送连接释放报文,并停止发送数据。终止位FIN置 1 ,序号 seq = u, FIN报文,即使不携带数据,也消耗一个序号. 客户端进入FIN-WAIT-1 (终止等待1)的状态,不再发送数据
  • 服务器收到释放连接的报文后发出确认,ack=u+1,seq=v. 服务器进入关闭等待状态 CLOSE-WAIT,TCP 连接处于半关闭转台,但是服务器若发送数据,服务器仍接受收据。
  • 服务器没有要发送的数据了,通知客户机,TCP连接释放,发出FIN=1的连接释放报文段,ACK=1,还必须重复上次的确认号 ack = u+1
  • 客户机收到释放连接报文后,发出确认,ACK=1,此时TCP连接还未释放,等待2MSL (最长报文寿命)后,客户机进入CLOSED状态

注意:ACK,FIN,SYN 什么时候等于1 ,牢记

5.3.4 TCP可靠传输

  • TCP的任务是在IP层不可靠、尽力而为的服务的基础上建立一种可靠的数据传输服务。
  • TCP提供可靠的数据传输服务保证接收方进程从缓冲区中读出的字节流 与发送方发出的字节流一至
  • TCP采用校验,序号,确认和重传等机制来达到这一个目的
1 序号
  • TCP首部的序号用来保证数据能够按序提交给应用层
  • TCP将数据视为无结构但是有序的字节流
2 确认
  • TCP 的首部的确认号,是期望收到对方下一个报文数据的第一个字节的序号
3 重传

1、超时
2、冗余ACK确认:

  • 发送方A 发送了序号为1 2 3 4 5的TCP报文段,其中2号帧半路丢失,3、4、5号帧按顺序到达B,B就对1号报文段发送冗余ACK

5.3.5 TCP流量控制

用来消除发送方,发送速率太快,是接受方缓存区溢出的可能性增加,流量控制是速度匹配服务(匹配发送方的发送速率与接收方的接受速率)

  • 接收窗口 rwnd 接收方根据缓存大小,所需诺的最新窗口值,有接收方根据放在TCP报文中首部窗口字段通知发送方。
  • 拥塞窗口 cwnd 发送方,根据自己估算的网络拥塞程度二设置窗口值,反映了当前网络的容量。只要网络未出现拥塞,将窗口值设大一点,以便将更多分组发送出去。当网络发生拥塞,将拥塞窗口减小,减少注入网络的分组数。
  • 发送方的发送窗口为 rwnd 和 cwnd 的最小值

传输层和数据链路层的流量控制区别

  • 传输层定义端到端的用户间的流量控制
  • 数据链路层定义两个中间节点的流量控制
  • 数据链路层的窗口大小不能动态变换,传输层可以

5.3.6 TCP拥塞控制

拥塞控制,是为了防止过多的数据诸如网络,保证网络中的路由器或者链路不至于过载

如和维护拥塞窗口

1 满开始和拥塞避免

(1) 慢开始算法
刚开始时,cwnd = 1,及一个最大报文段长度 MSS ,每收到一个报文确认后cwnd加1,增大一个MSS。逐步增大cwnd

请添加图片描述

  • 一个传输轮次(往返延迟RTT),每经过一个RTT,cwnd会接收到 cwnd个确认报文,因此,cwnd加倍,cwnd呈指数增长。
  • 当cwnd增长到一个门限 ssthresh ,改为拥塞避免算法

(2)拥塞避免
让拥塞窗口增长缓慢,一个RTT就把cwnd加1

(3) 网络拥塞的处理

  • 只要判断对方网络出现拥塞,就要把慢开始的门限ssthresh设置为拥塞时的发送方的cwnd值的额一半,但是不能小于2.
  • 然后cwnd 从1开始
  • 乘法减小,加法增大
  • 并不能完全避免拥塞
2 快重传和快恢复

快重传和快恢复是慢开始和拥塞避免算法的改进
(1) 快重传

  • 使用冗余ACK来检测丢包的发生
  • 当发送方连续收到桑格重复的ACK报文时,直接重传

(2) 慢开始

  • 当拥塞发生,cwnd 和 门限ssthread都设为cwnd的一半,执行拥塞避免算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值