计算机网络-传输层

传输层

完成主机 进程 - 进程 之间的报文传输

  • 传输层协议在端主机上运行,路由器一般没有传输层。
  • 传输层从主机层面上对网络层采取相应补救措施,可以提供更高质量的数据传输能力。
  • 传输层独立于网络设备,可以提供标准的传输服务接口(原语)。
  • 位于网络体系结构的中间,作为数据通信和数据处理的分水岭,具有承上启下的作用。
  • IP协议虽然能把分组交给目的主机,但是这个分组还停留在目的主机的网络层而没有交付给主机中的应用进程。
  • 严格来讲,两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信

传输服务质量

  • 在计算机网络层次结构中。N层总是利用N-1层所提供的服务向N+1层提供更加完善和更高质量的服务

  • 在网络层次结构的每一层上都有服务质量的问题

    • 在物理层,提供的原始比特流传输有速度高低、误码率高低之分
    • 在数据链路层,所提供的相邻节点间的帧传输服务传输速率、可靠性
    • 在网络层,多跳的数据传输;源到目标的分组传输根据通信子网的不同被分成了虚电路与数据报服务
  • 网络层是一个典型的提供无连接“尽力而为”的不可靠服务,IP分组在传输过程中可能会出现丢包、乱序或重复等问题,需要在网络层之上增加一个层次来弥补网络层所提供的服务质量的不足,以便为高层提供可靠的端到端通信。

  • 网络层及以下部分是由通信子网来完成的,由于历史及经济原因,通信子网往往是公用数据网,是资源子网中的端用户所不能直接控制的,用户不可能通过更换性能更好的路由器或增强数据链路层的纠错能力来提高网络层的服务质量,因此端用户只能依靠在自己主机上所增加的传输层来检测分组的丢失或数据的残缺并采取相应的补救措施。

传输层引入的新概念与新机制

  • 一系列实现端到端进程之间的可靠数据传输所必需的机制,包括:

    • 面向连接服务的建立机制,即能够为高层数据的传输建立、维护与拆除传输连接,以实现透明的、可靠的端到端的传输;
    • 端到端的错误恢复与流量控制,以能对网络层出现的丢包、乱序或重复等问题做出反应。

  • 传输层与网络层最大的区别是传输层提供进程通信能力。为了标识相互通信的网络进程,IP网络通信的最终地址不仅要包括主机的IP地址,还要包括可描述网络进程的某种标识。因此,无论是TCP还UDP,都必须首先解决进程的标识问题。
  • 网络进程标识。在单机上,为了区别不同的进程,采用进程标识或进程号(Process ID)来唯一地标识进程。即在网络环境中,完整的进程标识需要这样的一种形式:源主机地址+源进程标识,目标主机地址+目标进程标识

  • 端口号在TCP/IP传输层的作用类似IP地址在网络层的作用或MAC地址在数据链路层的作用

    • IP地址是主机的逻辑标识
    • MAC地址是主机的物理标识
    • 端口号是网络应用进程的一种逻辑标识
  • 由于同一时刻一台主机上可以有大量的网络应用进程在运行,因此需要有多个不同的端口号来对进程进行标识

  • 端口号有两种基本分配方式,即全局分配和本地分配方式
    全局分配是指由一个公认权威的机构根据用户需要进行统一分配,并将结果公布于众,因此这是一种集中分配方式

  • 本地分配是指当进程需要访问传输层服务时,向本地系统提出申请,系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口绑定起来,因此是一种动态连接方式

  • 实际的TCP/IP端口号分配综合了以上两种方式,由Internet赋号管理局(IANA)将端口号分为著名端口(well—known ports)、注册端口和临时端口3个部分:

    • (1)著名端口号: 取值为0~1023,由IANA统一分配和控制,被规定作为公共应用服务的端口,如WWW、FTP、DNS、NFS和电子邮件服务等。

    • (2)注册端口号: 取值为1024~49151,这部分端口被保留用作商业性的应用开发,如一些网络设备厂商专用协议的通信端口等。厂商或用户可根据需要向IANA进行注册,以防止重复。

    • (3)临时端口号: 取值为49152~65535,这部分端口未做限定,由本地主机自行进行分配,因此又被称为自由端

传输地址:

  • 传输地址唯一地标识主机进程
  • 传输地址=网络号+主机号+端口号,端口号用来标识应用进程
  • 在IP网络,传输地址= IP地址+端口号

在这里插入图片描述

传输层协议

传输层协议涉及的内容

  • 寻址:传输地址及其发现。
  • 差错控制:分组顺序、差错检测、重传确认机制等。
  • 流量控制
  • 连接管理:连接建立、连接释放

传输层需要有两种不同的传输协议,即用户数据报协议( User Datagram Protocol , UDP ) 和传输控制协议(Transmission Control Protocol,TCP) ,它们都是因特网的正式标准。

UDP在传送数据之前不需要先建立连接。对方的传输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。

传输层的UDP用户数据报与网际层的IP数据报有很大区别:IP数据报要经过互联网中许多路由器的存储转发,但UDP用户数据报是在传输层的端到端抽象的逻辑信道中传送的。

传输层协议机制

传输协议数据单元:

传输协议数据单元(Transport Protocol Data Unit,TPDU)是传输层的最小数据传输单位。TCP传送的数据单位协议是TCP报文段(segment),而UDP 传送的数据单位协议是UDP报文或用户数据报。

TPDU类型

  • CR:连接请求
  • CC:连接确认,对CR TPDU的确认
  • DR:断连请求
  • DC:断连确认,对DR TPDU的确认
  • DT:数据(高层数据)
  • AK:数据确认,对DT TPDU的确认
  • REJ:拒绝接受请求,或拒绝接受DT TPDU

要实现可靠的数据流传输服务,必须解决哪几个问题?

  1. 可靠性:

    • 防丢失:确认与重传;
      在这里插入图片描述

    • 防重复:报文段序号; ​​

    为每一分组赋予序号。

    确认时也指明确认哪个分组。

    序号同时保证了分组间的正确顺序。

  2. 传输效率、流量控制:滑动窗口机制; ​​

    TCP流量管理:

    • 为什么要进行流量控制:发送方TCP实体发送数据过快,接收方TCP实体来不及处理,导致接收缓冲区溢出

    • TCP流量控制采用可变尺寸的滑动窗口协议

      • 由于TCP为应用层提供字节流服务,窗口尺寸以字节为单位。
      • 应用进程根据处理能力读取TCP接收缓冲区中的字节流,导致空- 闲的接收缓冲区(接收窗口)动态变化。
    • TCP流量控制过程:类似于数据链路层的滑动窗口协议,所不同的是:通过接收窗口当前尺寸调整发送窗口的上限值。

    滑动窗口机制思想:允许发送方不必等确认到来就可继续发送下面的分组,但规定一个上限。若多个分组的确认未到时,则暂停发送

  3. 拥塞控制:加速递减与慢启动技术;

  4. 建立连接:三次握手协议;

  5. 关闭连接:三次握手协议。

TCP协议

报文段封装在IP分组中, IP分组封装在数据帧中。

在这里插入图片描述

  • TCP提供全双工数据传输服务,如果一台主机进程A和另一台主机进程B,建立了一条传输链路,则意味着A,B都可以同时发送和接收TCP报文段。
  • TCP不支持组播和广播。
  • TCP连接提供可靠的字节流服务

TCP报文段

在这里插入图片描述

  • 顺序号: 32位,表示TCP段中的数据部分第1个字节的编号。

  • 确认号: 32位,表示期望接收数据的第1个字节的编号,同时表示对确认号之前数据的确认。

  • ACK:该标志若为“1”,则表示确认号有效;若为“0”,则确认号无效。

  • PSH:表示要求马上发送数据,不必等到缓冲区满时才发送。例如,

  • TELNET协议中,每输入一个字符就必须立即发送。

  • SYN:用于建立TCP连接。
    SYN置为“1”且ACK置为“0”,表示请求建立TCP连接
    SYN置为“1”且ACK置为“1”,表示确认TCP连接。

  • FIN:用于释放连接。若FIN置为“1”,则表示没有数据要发送了,但仍可以接收数据。

TCP建立连接-三次握手

​​在这里插入图片描述
​​

  • 客户端发出连接请求TCP段(SYN=1,ACK=0,顺序号=x,其中x为随机数),指明想要连接的服务器端口号(目的端口),设置TCP段的最大段长及其它参数。

  • 服务器的TCP实体收到该请求后,检查是否有进程在监听目的端口

    • 如果没有,则返回拒绝TCP段(RST=1)的作为应答,拒绝请求。

    • 如果有,则该进程可以接受或拒绝连接请求,

      • 如果接受,则返回确认TCP段(SYN=1,ACK=1,顺序号=y,确认号=x+1,其中y为随机数)。
      • 如果拒绝则返回拒绝TCP段(RST=1)。
  • 客户端收到确认TCP段后,也发送一个确认TCP段(SYN=0,ACK=1),并允许最后一个确认TCP段直接开始发送数据。此时连接建立完毕。

TCP释放连接-四次挥手

在这里插入图片描述

  • 第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。
  • 第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。
  • 第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
  • 第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

UDP协议

在这里插入图片描述

  1. 源端口:源端口号。在需要对方回信时选用。不需要使用时可用 0 填充。
  2. 目的端口:目的端口号。这在终点交付报文时必须使用。
  3. 长度:UDP 用户数据报的长度,其最小值是 8(即仅有首部部分),单位:字节。
  4. 校验和:检测 UDP 用户数据报在传输过程中是否出错。有错就丢弃。

UDP的主要特点是:

  • UDP 是无连接的。 即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。
  • UDP 使用尽最大努力交付。即不保证可靠交付,因此主机不需要维护复杂的连接状态表(这里面有许多参数)。
  • UDP 是面向报文的。 发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不分拆,而是保留这些报文的边界。
  • UDP 没有拥塞控制。
  • UDP 支持一对一、一对多、多对一和多对多的交互通信。
  • UDP的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
  • 58
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值