您的位置:首页 > 理论基础

计算机网络学习笔记(三)之传输层

2020-06-05 11:14 197 查看

计算机网络学习笔记(三)之传输层

思维导图

传输层协议的概述

进程之间的通信

  • 运输层:为应用程序之间提供端到端的逻辑通信
  • 网络层:提供主机之间的逻辑通信

传输层的功能:分用和复用

传输层所需的协议:面对连接的TCP和无连接的UDP

网络层 VS. 传输层

UDP协议

UDP概述

  1. 概念

    用户数据报协议(UDP):在IP 的数据报服务之上增加了复用分用的功能及差错检测的功能

  2. UDP的主要特点

      UDP是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延
    • UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表
    • UDP是面向报文的。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文
    • UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求
    • UDP 支持一对一、一对多、多对一和多对多的交互通信
    • UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短

UDP的首部格式

​ UDP数据报包含两个部分:UDP首部和用户数据

​ UDP首部有8个字节,由4个字段组成,每个字段的长度都是两个字节

首部格式:

  • 源端口:源端口号,在需要对方回信时选用,不需要时可选用0
  • 目的端口:目的端口号,在终点交付报文时必须要使用
  • 长度:UDP用户数据报的长度,其最小值是8(仅有首部)
  • 检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃

TCP协议

TCP协议的特点

  • 面向连接
  • 每一条 TCP 连接只能有两个端点 ,每一条 TCP 连接只能是点对点的(一对一)
  • 提供可靠交付的服务
  • 提供全双工通信
  • 面向字节流

TCP报文段

TCP报文段用于运载数据,建立连接,释放连接和应答。

各字段意义:

  • 源端口和目的端口:各占 2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
  • 序号:占4字节。 TCP是面向字节流的(就是说TCP传送时是按照一个一个字节来传送的),所以TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • )确认:占4 字节,是期望收到对方的下一个报文段的数据的第一个字 节的序号。若确认号为N,则表示已正确收到序号N-1的报文。
  • 数据偏移(即首部长度):占4 位,这里不是IP数据报分片的那个数据偏移,而是表示首部长度,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。
  • 保留:占6位, 保留为今后使用,但目前应置为0,该字段可以忽略不计。
  • 紧急位URG:当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。但是URG需要和紧急指针配套使用,也就是说数据从第-一个字节到紧急指针所指字节就是紧急数据。
  • 确认位ACK:只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
  • 推送位PSH(Push) :接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位位RST (Reset) :当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他因),必须释放连接,然后再重新建立运输连接。
  • 同步位SYN:同步 SYN=I表示这是一一个连接请求或连接接收报文。当SYN=I, ACK=0时,表明这是一一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=I, ACK=1。即SYN=1 就表示这是一一个连接请求或连接接收报文。
  • 终止位FIN (Finish):用来释放-一个连接。 FIN=1 表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
  • 窗口:占2 字节。它指出了现在允许对方发送的数据量,接收方的数据缓存空间是有限的,故用窗口值作为接收方让发送方设置其发送窗口的依据,单位为字节。
  • )检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,和UDP一样,要在TCP报文段的前面加上12字节的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)。
  • 紧急指针:占16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
  • 选项:长度可变。TCP最初只规定了一种选项,即最大报文段长度(MaximumSegmen tSize,MSS)。 MSS是TCP报文段中的数据字段的最大长度。
  • 填充:这是为了 使整个首部长度是4字节的整数倍。

TCP连接管理

TCP是面向连接的协议。因此每一个TCP连接都有三个阶段:连接建立、数据传送和连接释放。 TCP连接的管理就是使运输连接的建立和释放都能正常进行。

在TCP连接建立的过程中要解决以下三个问题:

  1. 要使每- -方都能够确知对方的存在。
  2. 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项以及服务质量等)。
  3. 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

TCP把连接作为最基本的抽象,每- -条TCP连接有两个端点,TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口.TCP连接的端口叫做套接字( socket)或插口。端口拼接到IP地址即构成了套接字。
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程叫做客户机(Client), 而
被动等待连接建立的应用进程叫做服务器(Server)。

TCP的连接建立(三次握手)


步骤:

  1. 客户机的TCP首先向服务器的TCP发送一个连接请求报文段,设置初始序号,SYN=1,序号=X
  2. 服务器的TCP收到连接请求报文段后,同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序号seq=y
  3. 客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,序号字段为x+1,确认号字段ack=y+1
TCP的连接释放(四次握手)


步骤:

  1. 客户机打算关闭连接,就向其TCP发送一个连接释放报文段,并停止再发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1, seq=u
  2. 服务器收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于它前面已传送过的数据的最后一个字节的序号加1. 此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。
  3. 若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段。
  4. 客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK字段被置为1,确认号ack=w+1,序号seq=u+1.此时TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,A才进入到连接关闭状态。
对连接释放的总结:

(1)连接建立
分为3步:
①SYN=1,seq=x.
②SYN=1,ACK=1, seq=y, ack=x+1.
③ACK=1,seq=x+1, ack= y+1.
(2)释放连接
分为4步:
①FIN=1, seq=u。
②ACK=1, seq=v, ack=u+1.
③FIN=1, ACK=1,seq=w, ack=u+1。
④ACK=1, seq=u+1, ack-=w+1.

TCP可靠传输

TCP使用了校验、序号、确认和重传等机制来实现可靠传输

  1. 校验:和UDP一样的校验机制
  2. 序号:TCP首部的序号字段用来保证数据能有序提交给应用层
  3. 确认:首部的确认号是期望下次收到的报文的序号。使用累计确认。
  4. 重传:有两种事件会导致TCP对报文段进行重传:超时和冗余ACK。
      超时:TCP每发送一一个报文段,就对这个报文段设置一次计时器。 只要计时器设置的重传时间到期但还没有收到确认,就要重传这一报文段。
    • 冗余ACK:超时触发重传存在的一个问题就是超时周期往往太长,发送方可通过冗余ACK检测丢包情况。

流量控制

流量控制:让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口协议的机制可以很方便地在TCP连接上实现对发送方的流量控制。

接收方根据自己接收缓存大小,动态更新发送方窗口,即窗口字段。表示接收方能接收的最大字节数。发送方根据窗口字段限制自己发送窗口大小。发送窗口实际大小取拥塞窗口中的最小值。

拥塞控制

  1. 拥塞:在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞。

    拥塞出现的原因:∑对资源需求>可用资源

  2. 拥塞控制:防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。

      拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。

    • 拥塞控制是一 个全局性的过程,涉及到所有的
      主机、所有的路由器,以及与降低网络传输性
      能有关的所有因素。

  3. 拥塞控制与流量控制的区别

    ​ 拥塞控制是-一个全局性的过程。但TCP连接的端点只要迟迟不能收到对方的确认信息,就猜想在当前网络中的某处很可能发生了拥塞,但这时却无法知道拥塞到底发生在网络的何处,也无法知道发生拥塞的具体原因。相反,流量控制往往指点对点通信量的控制,是个端到端的问题(接收端控制发送端)。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

  4. 进行拥塞控制需付出的代价

      首先需要获得网络内部流量分布的信息。
    • 在实施拥塞控制时,还需要在结点之间交换信息和各种命令,以便选择控制的策略和实施控制。这样就产生了额外开销。
    • 拥塞控制有时需要将一些资源(如缓存、带宽等)分配给个别用户单独使用,这样就使得网络资源不能更好地实现共享。
  5. 几种拥塞控制的方法

    (1)慢开始
    ​ 开始发送时令拥窒窗口=1.每收到一个对新的报文的确认就让窗口+1。窗口大小成指数增长,达到上限(阀值)后使用拥塞避免算法

    (2)拥塞避免

    ​ 拥塞窗口每经过一个RTT后+1 ,而不是加倍,变成线性增长。当出现拥塞时,令阀值=当前窗口/2然后设置拥塞窗口=1,再次用慢开始。当窗口<阀值时.使用慢增长。当拥塞窗口>阀值时,改用拥塞避免

    (3) 快重传
    ​ 可靠传输中的冗余ACK可用于拥塞检测。检测到冗余ACK时直接快速重传

    (4)快恢复
    ​ 当发送端收到连续个冗余ACK后,就把阀值=当前窗口/2。与慢开始不同的是不是把拥塞窗口=1 ,而是将拥塞窗口=当前窗口/2,然后用拥塞避免算法,因而是快恢复

传输层习题

  1. 主机甲和主机乙已建立了TCP连接,甲始终以MSS=1KB大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为10KB的确认段。若甲在t时刻发生超时时拥塞窗口为8KB,则从t时刻起,不再发生超时的情况下,经过10个RTT后,甲的发送窗口是( )。
    A.10KB B.12KB C.14KB D.15KB

    【答案】A

    【解析】当t时刻发生超时时,把shresh设为8的一半,即为4,且拥塞窗口设为1KB.然后经历10个RTT后,拥塞窗口的大小依次为2、4、 5.6、7、8、9、10、 11. 12, 而发送窗口取当时的拥塞窗口和接收窗口的最小值,而接收窗口始终为10KB,所以此时的发送窗口为10KB,选A.
    实际上该题接收窗口一直为10KB,可知不管何时,发送窗口一定小于等于10KB, 选项中只有A选项满足条件,可直接得出选A.

  2. ( )字段包含在TCP首部中,而不包含在UDP首部中。
    A.目的端口号
    B.序列号
    C.校验和
    D.目的IP地址

    【答案】B

    【解析】TCP报文段和UDP数据报都包含源端口、目的端口、校验号。由于UDP提供不可靠的传输服务,不需要对报文编号,因此不会有序列号字段,而TCP提供可靠的传输服务,因此需要设置序列号字段。而目的IP地址属于IP数据报中的内容。

  3. 一个TCP连接的数据传输阶段,如果发送端的发送窗口值由2000变为3000,意味着发送端可以( )。
    A.在收到一个确认之前可以发送3000个TCP报文段
    B.在收到一个确认之前可以发送1000字节
    C.在收到一个确认之前可以发送3000字节
    D.在收到一个确认之前可以发送2000个TCP报文段

    【答案】C

    【解析】TCP提供的是可靠的字节流传输服务,使用窗口机制进行流量控制与拥塞控制。TCP的滑动窗口机制是面向字节的,因此窗口大小的单位为字节。假设发送窗口的大小为N,这意味着发送端可以在没有收到确认的情况下连续发送N个字节。

  4. 主机甲与主机乙之间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确接收到这两个数据段后,发送给主机甲的确认序列号是( )。
    A.500
    B.700
    C.800
    D.1000

    【答案】D

    【解析】返回的确认序列号是接收方期待收到对方下一个报文段数据部分的第一-个字 节的序号,因此乙在正确接收到两个段后,返回给甲的确认序列号是200+300+500=1000.

  5. 主机甲向主机乙发送一个(SYN=I, seq-11220) 的TCP段,期望与主机乙建立TCP连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的TCP段可能是( )。
    A. (SYN=0, ACK=0,seq=11221, ack=11221 )
    B. (SYN=1, ACK=I, seq=11220, ack-11220 )
    C. (SYN=1, ACK=1,seq-11221, ack=11221 )
    D. (SYN=0, ACK=0, seq=11220, ack-11220 )

    【答案】C

    【解析】在确认报文段中,同步位SYN和确认位ACK必须都是1;返回的确认号seq是甲发送的初始序号seq-11220 加1,即ack=11221; 同时乙也要选择并消耗一个初始序号seq, seq 值由乙的TCP进程任意给出,它与确认号、请求报文段的序号没有任何关系。

  6. 可靠的传输协议中的“可靠”指的是( )。
    A.使用面向连接的会话
    B.使用“尽力而为”的传输
    C.使用滑动窗口来维持可靠性
    D.使用确认机制来确保传输的数据不丢失
    【答案】 D
    【解析】如果-一个协议使用确认机制对传输的数据进行认,那么可以认为是一一个可靠的协议。如果-一个协议用“尽力而为”的传输方式,那么是不可靠的。例如,TCP 对传输的报文段提供确认,因此是可靠的传输协议;而UDP不提供确认,因此是不可靠的传输协议。

  7. 简述ICMP、 DHCP、 UDP和SMTP作用。
    答: ICMP::辅助IP协议正常工作,用以解决差错报告与控制的主要手段。
    DHCP:集中管理、分配IP地址,便网络环境中的主机动态获得IP地址、DNS服务器地址等信息,并能提供地址的使用率。
    UDP: 提供无连接、“尽最大努力交付”的教据报传输服务。
    SMTP:向用户提供高效可靠的邮件传输。

  8. 在TCP中拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用?“乘法减小“和”加法增大"各用在什么情况下?

    答:①慢开始:开始发送时,令拥塞窗口=1.,每收到一个对新的报文的确认后窗口十1。作用: 窗口大小成指数增长,可使分组注入到网络的速率更合理

    ②拥塞避免:拥塞离口每经过一个RTT后+1。当窗口<阈值时,使用慢开始;当拥塞窗口>阈值时,改用拥塞避免。作用:便拥塞窗口按线性增长,而不是加信。

    ③快重传:可靠传输中的ACK可用于拥塞检测,检测到冗余ACK时直接快速重传。作用:使网络的吞吐量提高

    ④快恢复:当发送端收到连续三个冗余ACk后,就把阈值=当前窗口/2,然后用拥塞避免算法。作用:使TCP的性能有明显的改进。

    ⑤乘法减小: 只要出现超时或3个重复的确认时,就要把门限值设置为当前拥塞值的一半,并大大减小拥塞窗口的数值

    ⑥加法增大:在拥塞阶段,拥塞窗口按线性规律增大

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: