计算机网络必修课:运输层了解一下!

运输层


【1】运输层基本概念

用户应用层的下面就是运输层了,运输层是作为通信部分的最高层,也是用户功能中的最低层。只有网络边缘部分的主机协议栈有运输层,网络核心部分的主机一般只用到了下面的三层(物理层、数据链路层、网络层)

在一台主机中,经常有多个应用进程分别与另一个主机中的多个应用进程通信

运输层的重要功能: 复用(multiplex)分用(demultiplex)

(1)复用针对发送方
(2)分用针对接收方
在这里插入图片描述


【1.1】端口

从上图中可以看到,进程和TCP、UDP的通信采用端口接轨

从网络层角度: 通信的双方是主机
从运输层的角度: 通信的双方是主机中进程

端到端的通信是应用进程之间的通信

运输层作用: 处理进程之间的通信,端口对应着进程

端口:

  • 端口号一般是16位
  • 端口号具有本地意义,即代表了本地计算机应用层的进程

故两个计算机之间的通信,不仅要知道对方的IP地址(用来确定主机位置)还要知道对方的端口号(确定进程)


【1.2】运输层和网络层协议区别

  1. IP协议的作用范围(网络层): 提供主机之间的逻辑通信
  2. TCP和UDP协议的作用范围(运输层): 提供进程之间端到端的逻辑通信

运输层的另一个特点就是屏蔽特性:运输层向高层用户屏蔽了下面的网络细节,使得看起来就是进程和进程之间一个简单的逻辑通信
在这里插入图片描述


【2】运输层协议UDP和TCP

  • UDP(User Datagram Protocol 用户数据报协议)
  • TCP(Transmission Control Protocol 传输控制协议)

当运输层采用UDP协议时,UDP协议是无连接的,是一条不可靠信道
当运输层采用TCP协议时,TCP是面向连接的,是一条可靠的全双工信道

运输层的运输单元: 运输协议数据单元TPDU(Transport Protocol Data Unit)

【2.1】用户数据报协议UDP

UDP协议只在IP数据报服务上增加很少的功能:

  • 复用和分用功能
  • 差错检测功能

UDP协议的特点:

  • 提供无连接服务,在传输数据前不需要提前建立连接
  • 传送的数据单元是UDP报文/用户数据报
  • 接收方收到UDP报文后,不用任何确认
  • UDP支持所有的广播/多播方式,一对一、一对多、多对一、多对多
  • UDP的首部8字节(TCP首部20字节),UDP开销更小

UDP用户数据报在运输层之间的端到端逻辑信道中传输,UDP将应用层传下来的数据原封不动的转发(不合并不拆分),一次发送一个报文
在这里插入图片描述
用户数据报UDP有2个字段:

  • 数据字段
  • 首部字段(8字节)

UDP的通信虽然要用到端口号(对应进程),但由于UDP是无连接的,因此不需要套接字

UDP是面向报文的

【2.2】传输控制协议TCP

TCP是面向字节流的

  • “流”stream:流入流出进程的字节序列
  • 面向字节流:进程和TCP之间的传输是数据块,但TCP仅仅将数据看成一连串无结构的字节流
  • 接收方收到的字节流要与发送方一致
    在这里插入图片描述

TCP不关心应用进程一次向TCP缓存写入了多长的报文,TCP都会将连续的字节流进行分段,形成TCP报文段

TCP特点:

  • 提供面向连接的服务
  • 传送数据单元是TCP报文段
  • TCP不提供广播或多播服务
  • 开销较大,因为要提供可靠传输,首部字段增大,占据更多处理机资源

TCP报文段是在运输层抽象的端到端逻辑信道中传输的,是可靠的全双工通信。不过在数据传输过程中,并不知道到底经过了多少个路由器,而且这些路由器也不知道运输层是都建立了TCP 连接

注意:

  • TCP连接是一条虚连接,不是实际的物理连接
  • TCP不关心进程向TCP缓存写入了多长的报文
  • TCP自主根据网络状况,决定将报文拆分成多大的报文段(UDP报文段是由进程直接给出的)

【2.2.1】TCP套接字的概念

运输层是进程间的通信,进程通过端口号对应。在UDP协议中进程对应端口号,在TCP协议中进程对应的是套接字(socket)

套接字: 端口号拼接到IP地址就是套接字(两者的结合)

socket = (IP地址: 端口号)

运输层的TCP协议是面向连接的,这条链接是虚连接,连接的两个端点就是套接字

TCP链接 = { socket1, socket2} = {(IP1, port1), (IP2, port2)}
在这里插入图片描述


【2.2.2】TCP报文段的首部

TCP是面向字节流的,但TCP传送的数据单元是报文段

TCP报文段的首部的前20个字节是固定的,后面的4n个字节是可变的
在这里插入图片描述
(TCP报文段的首部大小 >= 20字节)
在这里插入图片描述


【3】TCP可靠传输的原理

理想的传输条件:

  • 传输信道不产生差错
  • 不管发送方以多快的速度传送数据,接收方总是来得及处理接收到的数据

现实中的网络信道都是无法满足这些条件,故为了达到可靠传输,需要使用一些可靠传输协议,在不可靠的信道中实现可靠传输

TCP有两种实现可靠传输的协议:

  • 停止等待协议
  • 连续ARQ协议

【3.1】停止等待协议

停止等待协议: 每发送完一个分组就停止发送,等待接收方的确认(ACK),在收到对方确认后再发送下一个分组

ACK:Acknowledgement character 确认字符

接收方收到的分组会出现两种情况: 有差错和无差错

例:“A发送分组group1给B,发送完暂停等待B的确认应答”
在这里插入图片描述

接收端B在确认数据的过程中会出现2中情况:

  1. 分组出错:B接收到的group1出错,则会自动放弃group1,不会通知A
  2. 分组丢失:group1传输过程中丢失了,此刻B什么也不知道,什么也不做

(不论哪种情况,出错后,接收端什么也不会做


【3.2】连续ARQ协议

【3.2.1】自动重传请求ARQ

停止等待协议的问题——分组出错后接收端什么也不会做,这样会造成很多问题,故引入自动重传请求ARQ 来解决这个问题

ARQ(Automatic Repeat Request 自动重传请求):在发送端会设置一个超时计时器

  • 在设定时间内收到了ACK确认应答则继续发送下一个分组
  • 若时间内没有收到则重发分组(超时重发
    在这里插入图片描述

注意:

  • 发送端在停止等待时,要暂时保存已发送的分组副本,以备超时重发
  • 分组和确认分组都要进行编号
  • 超时计时器的设定时间要大于数据往返的平均时间

自动重传请求ARQ是自动进行的,接收方不需要告诉发送方“你要重传”


【3.2.2】流水线传输

停止等待协议的传输效率较低,信道利用率也较低

流水线传输就是发送方可连续发送多个分组,不用每发送完一个分组就停下来等待对方确认,这样信道上就不断的有数据传输,提高传输效率和信道利用率
在这里插入图片描述


【3.2.3】连续ARQ协议

自动重传请求ARQ解决了停止等待协议的问题,但是传输的效率依然较低,依然要等待很长时间才能完成传输

连续ARQ: 发送方设置一个发送窗口,且位于发送窗口内的分组都可以连续发送,不需要等待确认应答,每确认一个分组则发送窗口下移一位发送。若中间分组出错,则窗口内后面的分组会跟着重传一次。

例:“本来连续发送了5个分组,结果第2个分组丢失,故窗口仅仅移动了两位,2、3、4、5号分组还会重传一次”
在这里插入图片描述

连续ARQ协议的关键点在于那个发送窗口,类似于排队的队列,确认一个则从后面再安排一个进入窗口,以此提高效率的同时完成可靠传输


【3.3】可靠传输总结

  • 可靠传输的本质: 确认应答 + 分组出错会重传
  • 停止等待协议: 会确认应答确保发送分组送到了,但是出错没有反馈
  • 自动重传请求ARQ: 设置超时计时器,解决了重传问题,但效率较低
  • 连续ARQ: 利用发送窗口,解决了效率问题

【4】常用的熟知端口

在这里插入图片描述


【5】TCP拥塞控制

网络出现拥塞的原因对资源的需求 > 可用资源(发送到网络上的数据太多了)

当拥塞很严重的时候,就变成了进程死锁。同时,不能通过增大资源解决拥塞问题,反而会影响网络性能。
拥塞引起的重传不会缓解网络的拥塞,返回会加剧拥塞程度,会导致更多的分组流入网络被路由器丢弃

解决拥塞的核心点: 减少数据流入网络——控制数据流入

拥塞控制的作用:

  • 提高资源利用率
  • 避免发生死锁(吞吐量=0)
    在这里插入图片描述

【5.1】流量控制和拥塞控制

拥塞控制:

  • 拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器、以及与网络传输性能有关的所有因素
  • 拥塞控制就是防止过多的数据流入到网络中,使网络中的路由器/链路不过载

流量控制:

  • 流量控制是一个端到端的问题, 接收端和发送端之间的问题
  • 流量控制就是发送端控制发送的速率,以便接收端可以来得及接收

【5.2】TCP拥塞控制方式

开环控制方法:设计网络之初就做好放拥塞设计
闭环控制方法(TCP采用): 是基于反馈环路的概念

  1. 监测网络系统,以便检测到拥塞在何时何地
  2. 将拥塞信息发送到可以处理的地方
  3. 调整网络运行以解决发生的问题

TCP采用基于窗口的方式进行拥塞控制(闭环控制方法)

(1)只要网络无拥塞,就将拥塞窗口增大一些,以便把更多的分组发送出去
(2)只要网络出现拥塞,就将窗口减小,减少注入到网络中的分组数量

基于窗口的拥塞控制方法与连续ARQ协议不谋而合

拥塞判断:

  1. 重传定时器超时
  2. 收到三个相同/重复的分组

TCP拥塞控制算法:

  • 慢开始(slow start)
  • 拥塞避免(congestion avoidance)
  • 快重传(fast retransmit)
  • 快恢复(fast recovery)

【6】TCP三次握手

TCP利用套接字建立连接的过程叫做握手
TCP的握手需要在客户端和服务器端交换三个TCP报文段——“三报文握手”

三次握手的目的: 防止已失效的连接请求报文段突然又传送到了,进而产生错误(建立可靠连接)

TCP三次握手过程:
在这里插入图片描述

  1. 客户端A的TCP向服务器B的TCP发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x(表明传送数据的第一个数据字节序号)
  2. 服务器B的TCP收到请求报文段,若同意,则响应确认报文段:SYN=1,ACK=1,确认号ack=x+1,自选序号seq=y
  3. 客户端A收到确认报文段后再向服务器B确认:ACK=1,确认号ack=y+1,同时客户端A通知上层应用连接已建立。

三次握手,说白了,就是多了一次再确认过程,客户端向服务器确认一下它的响应是不是这个


微信公众号:<小杨的python之路>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值