目录

  1. 1. 前言
  2. 2. 概述
    1. 2.1. 互联网的组成
    2. 2.2. 性能
    3. 2.3. 计算机网络体系结构
  3. 3. 数据链路层
    1. 3.1. 三个基本问题
      1. 3.1.1. 封装成帧
      2. 3.1.2. 透明传输
      3. 3.1.3. 差错检测
        1. 3.1.3.1. 循环冗余检验CRC
    2. 3.2. 点对点PPP协议
      1. 3.2.1. 帧格式
    3. 3.3. 以太网标准
      1. 3.3.1. MAC层
        1. 3.3.1.1. 硬件地址/物理地址/MAC地址
        2. 3.3.1.2. 格式
      2. 3.3.2. 扩展以太网
        1. 3.3.2.1. 交换机
      3. 3.3.3. 虚拟局域网VLAN
    4. 3.4. CSMA/CD协议
      1. 3.4.1. 退避算法
    5. 3.5. 使用集线器的星型拓扑
  4. 4. 网络层
    1. 4.1. 主要功能
    2. 4.2. 两种服务
    3. 4.3. 网际协议IP
      1. 4.3.1. IP地址
      2. 4.3.2. 分类
      3. 4.3.3. 无分类编址CIDR
        1. 4.3.3.1. 网络前缀
        2. 4.3.3.2. 地址块
        3. 4.3.3.3. 地址掩码/子网掩码
      4. 4.3.4. IP地址与MAC地址区别
      5. 4.3.5. 地址解析协议ARP
      6. 4.3.6. IP数据报格式
    4. 4.4. IP层分组转发
      1. 4.4.1. 基于终点的转发
      2. 4.4.2. 最长前缀匹配
      3. 4.4.3. 分组转发算法
    5. 4.5. 网际控制报文协议ICMP
      1. 4.5.1. 报文种类
      2. 4.5.2. 应用——PING
      3. 4.5.3. 应用——traceroute
    6. 4.6. 路由选择协议
      1. 4.6.1. 内部网关协议RIP
        1. 4.6.1.1. 距离向量算法
      2. 4.6.2. 内部网关协议OSPF
  5. 5. 运输层
    1. 5.1. 用户数据报协议UDP
      1. 5.1.1. 首部格式
      2. 5.1.2. 计算检验和
    2. 5.2. 传输控制协议TCP
      1. 5.2.1. 连接
      2. 5.2.2. 首部格式
      3. 5.2.3. 可靠传输
        1. 5.2.3.1. 停止等待协议/自动重传协议ARQ
        2. 5.2.3.2. 连续ARQ协议
        3. 5.2.3.3. 实现——滑动窗口机制
      4. 5.2.4. 流量控制
      5. 5.2.5. 拥塞控制
        1. 5.2.5.1. 慢开始
        2. 5.2.5.2. 拥塞避免
        3. 5.2.5.3. 快重传&快恢复
      6. 5.2.6. 运输连接管理
        1. 5.2.6.1. 连接建立——三次握手
        2. 5.2.6.2. 连接释放——两次二次握手
    3. 5.3. 端口号
      1. 5.3.1. 实验:运输层端口观察实验

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

计算机网络

2024/1/16 Basic
  |     |   总文章阅读量:

前言


概述

计算机网络由若干节点和连接这些节点的链路组成

网络把许多计算机连接在一起,而互连网则把许多网络通过一些路由器连接在一起。与网络相连的计算机常称为主机

ISP(Internet Service Provider):互联网服务提供者,互联网现在采用三层 ISP 结构(主干 ISP、地区 ISP、本地 ISP)

RFC(Request For Comments):互联网标准发布的文档形式

互联网的组成

边缘部分:由所有连接在互联网上的主机组成,这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享

  • 通信方式分为两大类:

    客户-服务器方式:客户(client)是服务请求方,服务器(server)是服务提供方

    image-20241018135337669

    对等连接方式(peer-to-peer,P2P)

    image-20241018135356939


核心部分:由大量网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的(提供连通性和交换)

  • 路由器:一种专用计算机(不叫主机),实现分组交换,任务是转发收到的分组

性能

计算

  • 速率
  • 带宽
  • 吞吐量
  • 时延
  • 时延带宽积
  • 往返时间 RTT
  • 利用率

计算机网络体系结构

image-20241018140108056

  • 应用层:通过应用进程间的交互来完成特定网络应用,协议有 DNS、HTTP、SMTP 等,应用层交互的数据单元称为报文(message)
  • 运输层:向两台主机中进程之间的通信提供通用的数据传输服务,协议有 TCP(Transmission Control Protocol,数据传输单位:报文段)和 UDP(User Datagram Protocol,数据传输单位:数据报)
  • 网络层:为分组交换网上的不同主机提供通信服务,使用 IP 协议
  • 数据链路层:将网络层交下来的 IP 数据包组装成帧
  • 物理层:数据单位是比特(0101010)

OSI参考模型把对等层次之间传送的数据单位称为该层的协议数据单元 PDU(Protocol Data Unit)


数据链路层

OSI第二层,分为MAC子层和LLC子层

使用点对点信道(一对一)或广播信道(一对多)

三个基本问题:封装成帧透明传输差错检测

三个基本问题

封装成帧

在一段数据的前后分别添加首部和尾部

控制字符SOH:帧的首部开始

控制字符EOT:帧的结束

透明传输

问题:数据部分出现控制字符导致提前开始或者结束

转义字符ESC:使数据中可能出现的控制字符在接收端不被解释为控制字符

image-20240117163212908

差错检测

比特差错:1变0或者0变1

传输差错:帧丢失、帧重复、帧失序

循环冗余检验CRC

设待传送的数据M=101001(k=6),CRC运算就是在数据M的后面添加供差错检测用的n位冗余码(帧检验序列FCS),然后构成一个帧发出去,一共发送(k+n)位

求n位冗余码:

  1. 用二进制的模2运算(注:加减法不进位):2n * M,相当于在M后面添加n个0
  2. 得到的(k+n)位的数除以事先商定的长度为(n+1)位的除数P:2n * M / P
  3. 得到商Q和余数R(n位,比P少一位):Q = 2n * M | P + R

image-20240117165159222

接收端CRC检验:

把收到的每一个帧都除以同样的除数P(模2运算),然后检查得到的余数R,

若R=0,则判定这个帧没有差错,接受

若R≠0,则判定这个帧有差错,丢弃

ctf中的应用:misc——压缩包爆破crc32

也可以用生成多项式来表示检验过程,在上面的例子中,可以用P(X)=X3+X2+1来表示除数P=1101

最后,近似认为:凡是接收端数据链路层接收的帧均无差错


点对点PPP协议

目前使用最广泛的数据链路层协议

满足以下条件:

  • 简单
  • 封装成帧
  • 透明性
  • 多种网络层协议
  • 多种类型链路
  • 差错检测
  • 检测连接状态
  • 最大传送单元
  • 网络层地址协商
  • 数据压缩协商

帧格式

image-20240117171023237

PPP帧的首部和尾部分别为四个字段和两个字段

F:标志字段,0x7E,表示一个帧的开始或结束,即定界符

协议字段:2字节

  • 0x0021——IP数据报

  • 0xC021——PPP链路控制协议LCP的数据

  • 0x8021——网络层的控制数据

信息字段长度可变,不超过1500字节

字节填充:和前面的透明传输和类似,利用字节填充的方式转义信息中的标志字段(如定界符0x7E)


以太网标准

数据链路层拆成两个子层:逻辑链路控制LLC(已过时)和媒体接入控制MAC

计算机与外界局域网的连接——适配器(网卡NIC):具有过滤功能

为了通信的简便,以太网采用以下措施:

  1. 无连接,尽最大努力的交付,即不可靠的交付
  2. 曼彻斯特编码

MAC层

硬件地址/物理地址/MAC地址

每一台计算机中固化在适配器的ROM中的地址

格式

只介绍以太网V2的MAC帧格式

image-20240117194233957

扩展以太网

物理层:加光纤,加Hub

数据链路层:交换机(switch)

交换机

实质上就是一个多端口的网桥,一般工作在全双工方式

相互通信的主机都独占传输媒体,无碰撞地传输数据

内部的帧交换表(地址表):通过自学习算法自动建立

自学习功能:

image-20240117194926971

A先向B发送一帧,从端口1进入交换机。交换机收到帧,先查找交换表,现在表中没有B的地址。于是,交换机把此帧的源地址A和端口1写入到交换表中,并向除了端口1以外的所有端口广播这个帧

由于在交换表中写入了项目(A,1),因此以后不管从哪个端口收到帧,只要其目的地址是A,就把收到的帧从端口1转发出去送交A

注:交换表中的项目还有一列是写入时间,超过预设时间即删除该项目

为了防止广播风暴,有生成树协议STP:不改变网络的实际拓扑,但在逻辑上切断某些链路,使从一台主机到所有其他主机的路径是无环路的树状结构


虚拟局域网VLAN

把一个较大的局域网分割成一些较小的局域网

只是局域网给用户提供的一种服务,并不是一种新型局域网

VLAN标签:前两个字节总是设置为0x8100,称为IEEE 802.1Q标签类型

image-20240117195927069


CSMA/CD协议

载波监听多点接入/碰撞检测

多点接入:说明是总线型网络

载波监听:边发边监听

碰撞检测:

边发送数据边检测信道上信号电压的变化情况

τ:单程端到端传播时延,则检测碰撞的最长时间是两倍的总线端到端的传播时延(2τ)

image-20240117193038375

显然,使用CSMA/CD协议时,一个站不可能同时进行发送和接收,但必须边发送边监听信道,因此为半双工通信

退避算法

让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是退避一个随机的时间

使用集线器的星型拓扑

集线器(Hub):

  1. 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议
  2. 多端口转发器
  3. 集线器工作在物理层,每个端口仅简单转发比特,不进行碰撞检测

网络层

网络层(Network Layer)是OSI模型中的第三层(TCP/IP模型中的网际层),提供路由寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。相当于传送邮件时需要地址一般重要。由于TCP/IP协议体系中的网路层功能由IP协议规定和实现,故又称IP层。

互联网设计思路:网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报(即分组)服务

网络在发送分组时不需要先建立连接,每一个分组(IP数据报)独立发送,与其前后的分组无关(不进行编号),网络层不提供服务质量的承诺

主要功能

寻址:使用IP地址来唯一标识互联网上的各个寻址,网络层依靠IP地址进行相互通信

路由:在同一个网络中的内部通信并不需要网络层设备,仅仅靠数据链路层就可以完成相互通信,对于不同的网络之间相互通信则必须借助路由器等三层设备

两种服务

虚电路服务:所有的数据都在此虚电路上传送

image-20240117205826995

数据报服务:数据传送的路径是不确定的

image-20240117205917329

对比:

虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电信号 每个分组都有终点的完整地址,即IP地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立查找转发表进行转发
当节点出故障的时 所有通过出故障的节点的虚电路均不能工作 出故障的节点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点的顺序不一定按发送的顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

网际协议IP

配套使用:

  • 地址解析协议ARP:经常使用
  • 网际控制报文协议ICMP:要使用协议IP
  • 网际组管理协议IGMP:要使用协议IP

image-20240117212748239

IP地址

32位的二进制代码(总共232个地址),指明了连接到某个网络上的一个主机(或路由器)

每个主机的接口分配一个IP地址

image-20240117212717994

第一个字段是网络号,标志主机(或路由器)所连接到的网络,一个网络号在整个互联网范围内必须是唯一的

第二个字段是主机号,标志该主机(或路由器)

一个IP地址在整个互联网范围内是唯一的

IP地址 ::= { <网络号>, <主机号> }::=表示“定义为”)

image-20240117213157593

分类

单播地址:

  • A类(n=8):共有231个地址,占50%

    • 网络号字段占1个字节,只有7位可供使用(第一位固定为0)。

      网络号全为0的IP地址表示本网络,网络号为127(即01111111)保留作为本地软件环回测试本主机的进程直接的通信用

      所以A类地址可指派的网络号是126个(即27-2)

    • 主机号字段占3个字节。

      全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址(例:主机IP为5.6.7.8,则网络号为5,网络地址为5.0.0.0)

      全1的主机号表示“所有的”表示该网络上的所有主机,即广播地址

      因此每一个A类网络最大主机数是224-2

  • B类(n=16):共有230个地址,占25%

    网络号字段有2个字节,则可指派的网络号为214

    每一个B类网络上的最大主机数是216-2(扣除全0和全1)

  • C类(n=24):共有229个地址,占12.5%

    网络号字段有3个字节,则可指派的网络号为221

    每一个C类网络上的最大主机数是28

多播地址:D类,占6.25%

保留地址:E类,占6.25%

image-20240117213610376

无分类编址CIDR

网络前缀

“网络号”改为“网络前缀”,但n不是固定的数,可以在0~32之间任意取值

IP地址 ::= { <网络前缀>,<主机号> }

CIDR记法(斜线记法):在IP地址后面加上/,斜线后面是网络前缀所占的位数

地址块

网络前缀都相同的所有连续IP地址组成“CIDR地址块”

一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数

image-20240117215722631

注:

128.14.32.7 是IP地址,但未指明网络前缀长度,因此不知道网络地址

128.14.32.7/20 也是IP地址,同时指明网络前缀为20位,所以可导出网络地址

128.14.32.0/20 是包含多个IP地址的地址块或网络前缀

地址掩码/子网掩码

使用二进制计算时就必须使用32位的地址掩码从IP地址迅速算出网络地址

A类:255.0.0.0或255.0.0.0/8

B类:255.255.0.0或255.255.0.0/16

C类:255.255.255.0或255.255.255.0/24

把二进制的IP地址和地址掩码进行按位AND运算即可得出网络地址

image-20240117220506925

网络地址和IP地址的区别:IP 地址可分配给主机,网络地址不可分配给主机。IP 地址一般是指主机的地址。网络地址是网络地址(网络号)路由器或三层交换机对数据包进行路由选择的

image-20240117221228655


IP地址与MAC地址区别

IP地址是逻辑地址


地址解析协议ARP

已知IP地址怎么找MAC地址?

在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新

ARP请求分组:广播发送

ARP响应分组:单播

image-20240117222118552


IP数据报格式

image-20240117222443499

首部:前一部分固定20字节,后一部分是可选字段

  1. 版本:占4位,指IP协议的版本

  2. 首部长度:占4位,可表示最大十进制数15。最常用首部长度是20字节

  3. 区分服务:占8位

  4. 总长度:首部和数据之和的长度,数据报最大长度216-1=65535字节

    • 最大传送单元MTU:数据字段的最大长度,最常用的以太网规定MTU为1500字节,数据报长度超过则需要分片处理

      注:总长度指分片后的每一个分片首部长度与该分片的数据长度的总和

  5. 标识:占16位

  6. 标志(flag):占3位

    • 最低位为MF:MF=1表示后面还有分片,MF=0表示这是若干数据报片中的最后一个
    • 中间一位为DF:DF=1不能分片,DF=0允许分片
  7. 片偏移:占13位,以8个字节为偏移单位。除最后一个数据报片外,其他每个分片的长度一定是8字节(64位)的整数倍

    image-20240117224427185

总长度 标识 MF DF 片偏移
原始数据报 3820 12345 0 0 0
数据报片1 1420 12345 1 0 0
数据报片2 1420 12345 1 0 175
数据报片3 1020 12345 0 0 350
  1. 生存时间(TTL):占8位,表明这是数据报在网络中的寿命(现在是跳数限制),路由器在每次转发数据报之前就把TTL值减1,当TTL=0时丢弃数据报,所以TTL的单位是跳数

    TTL最大值为255

    若TTL初始值为1,就标识这个数据报只能在本局域网中传送

    image-20240117225135122

  2. 协议:占8位

    常见的协议字段值

    ICMP 1
    IGMP 2
    TCP 6
    EGP 8
    IFP 9
    UDP 17
    IPv6 41
    ESP 50
    AH 51
    ICMP-IPv6 58
    OSPF 89
  3. 首部检验和:占16位,只检验数据报的首部但不包括数据部分

  4. 源地址:占32位

  5. 目的地址:占32位


IP层分组转发

基于终点的转发

先查找目的网络(网络前缀),在找到了目的网络之后,就把分组在这个网络上直接交付目的主机

最长前缀匹配

在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长(子网掩码最长)的一个作为匹配的前缀

例:

192.168.20.16/28

192.168.0.0/16

在要查找地址192.168.20.19的时候,这两个表项都“匹配”。也就是说,两个表项都包含着要查找的地址。这种情况下,前缀最长的路由就是192.168.20.16/28,因为它的子网掩码(/28)比其他表项的掩码(/16)要长

分组转发算法

  1. 从收到的分组的首部提前目的主机的IP地址

  2. 若查找到有特定主机路由,就按照这条路由的下一跳转发分组;否则从转发表中下一行(也就是前缀最长的一行)开始检查,执行3

  3. 把这一行的子网掩码与目的地址按位进行AND运算

    若运算结果与本行的前缀匹配,则查找结束,按下一跳所指出的进行处理

    否则,若转发还有下一行,则对下一行进行检查,重新执行3

    否则,执行4

  4. 若转发表中有一个默认路由,则按照指明的接口,把分组传送到指明的默认路由器。否则,报告转发分组出错


网际控制报文协议ICMP

image-20240117232351333

报文种类

ICMP报文种类 类型的值 ICMP报文类型
差错报告报文 3 终点不可达
11 时间超过
12 参数问题
5 改变路由(重定向)
询问报文 8或0 回送请求或者回送回到
13或14 时间戳请求或时间戳回答

应用——PING

测试两台主机之间的连通性,PING使用了ICMP回送请求与回送回答报文,没有通过运输层的TCP或UDP

以前面那张图为例

image-20240117225135122

应用——traceroute

跟踪一个分组从源点到终点的路径,获取目的主机的路由信息,Windows中是tracert

traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报

然后路由器向源主机发送ICMP时间超过差错报告报文和ICMP终点不可达差错报告报文

image-20240117233412150


路由选择协议

分为两大类:

  • 内部网关协议IGP:域内路由选择,如RIP和OSPF

  • 外部网关协议EGP:域间路由选择,如BGP-4

内部网关协议RIP

基于距离向量的路由选择协议

  1. 仅和相邻路由器交换信息
  2. 交换自己现在的路由表
  3. 按固定的时间间隔交换路由信息

距离向量算法

  1. 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1
    • 若原来的路由表中没有目的网络Net,则把该项目添加到路由表中
    • 否则,若下一条路由器地址是X,则把收到的项目替换原路由表中的项目
      • 否则,若收到的项目中的距离d小于路由表中的距离,则进行更新
        • 否则什么也不做
  2. 若3分组还没有收到相邻路由器的更新路由表,则把相邻路由器记为不可达的路由器,即把距离设置为16(表示不可达)
  3. 返回

内部网关协议OSPF

开放最短路径优先(最短路径算法SPF)

  1. 向本自治系统中所有路由器发送消息,洪泛法
  2. 发送的信息就是与本路由器相邻的所有路由器的链路状态
  3. 当链路状态发送变化或每隔一段时间,路由器向所有路由器用洪泛法发送链路状态信息

运输层

OSI的第四层,负责端到端的通信

用户数据报协议UDP

使用例:DNS(域名系统),TFTP(简单文件传输协议),RIP(路由信息协议),DHCP(动态主机配置协议),SNMP(简单网络管理协议),NFS(网络文件系统)

特点:

  • 无连接服务
  • 尽最大努力交付
  • 面向报文:保留应用层交下来的报文的边界
  • 没有拥塞控制
  • 支持一对一、一对多、多对一和多对多的交互通信
  • 首部开销小

首部格式

长度为8个字节,由4个字段组成,每个字段的长度都是2字节

  1. 源端口
  2. 目的端口
  3. 长度:UDP用户数据报的长度,最小为8(仅有首部)
  4. 检验和

计算检验和

在数据报前增加12个字节的伪首部(不向下传送也不向上递交)

UDP检验和把首部和数据部分一起都检验

image-20240116160600932


传输控制协议TCP

面向连接服务,传送数据前必须先建立连接,数据传送结束后要释放连接。不提供广播或多播服务

使用例:IGMP(网际组管理协议),SMTP(简单邮件传送协议),TELNET(远程终端协议),HTTP(超文本传送协议),FTP(文件传送协议)

特点:

  • 面向连接
  • 点对点
  • 可靠交付
  • 全双工通信
  • 面向字节流

连接

每一条TCP连接都有两个端点——套接字socket/插口

套接字socket = (IP地址:端口号)

比如:127.0.0.1:8080


首部格式

前20个字节固定,即最小长度是20字节

image-20240116154942072

  1. 源端口和目的端口:各占2字节,即16位
  2. 序号:4字节,即32位,用于计算报文长度
  3. 确认号:4字节,即32位,是期望收到对方下一个报文段的第一个数据字节的序号
  4. 数据偏移:只占4位,用于计算首部长度
  5. 保留:占6位

接下来是控制位, 用来说明报文段的性质

  1. 紧急URG

  2. 确认ACK:ACK=1时确认号字段才有效,ACK=0时确认号无效,TCP中连接建立后所有传送的报文段ACK必须为1

  3. 推送PSH

  4. 复位RST

  5. 同步SYN:在连接建立时用来同步序号。SYN=1&ACK=0,表明这是一个连接请求报文段。对方同意,则响应SYN=1&ACK=1

  6. 终止FIN:free一个连接。FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接

  7. 窗口:2字节,即16位。表明自己的接收窗口大小(从确认号算起,允许对方发送的数据量)

  8. 检验和:2字节。计算要加上12字节的伪首部(格式和UDP一样),但其中第4个字段中的17改为6(TCP的协议号为6),第5个字段中的UDP长度改为TCP长度。首部和数据部分均需要检验

  9. 紧急指针

  10. 选项


可靠传输

TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力服务,即TCP下面的网络所提供的是不可靠的传输

停止等待协议/自动重传协议ARQ

全双工通信的双方几十发送方也是接收方,设A为发送方,B为接收方

停止等待就是每发送完一个分组(传送的数据单元)就停止发送,等待对方的确认,在收到确认后再发送下一个分组

  1. 无差错情况

    A发送一个分组给B,B收到然后发送确认给A,A在收到确认后再发下一个分组

  2. 出现差错

    A超过一段时间没收到确认,就会重传一次前面发送过的分组

    要实现这一点就要发送分组时设置一个超时计时器,在计时器到期之前收到对方的确认就撤销已设置的超时计时器

    image-20240116151505573

  3. 确认丢失和确认迟到

    上面提到了一旦计时器到期就会进行重传,但是如果B发送的确认还没到达A超时计时器就到期了,或者在到期后B才接收到这个分组怎么办?

    这时候B在接收到了重传的分组时就要丢弃这个重复的分组,不再向上层重复交付

    然后依旧向A发送确认

    image-20240116152424938

  4. 信道利用率

    image-20240116153907382

    TD:A发送分组需要的时间,等于分组长度除以数据率

    RTT:往返时间

    TA:发送确认分组需要的时间

    img


连续ARQ协议

发送方设置发送窗口连续发送多个分组,收到一个确认后发送窗口向前滑动一个分组的位置

接收方累积确认,在收到几个分组后,对按序到达的最后一个分组发送确认

image-20240116161337608


实现——滑动窗口机制

以字节为单位:

设A收到B发来的确认报文段,窗口为20字节,确认号为31

image-20240116161834773

超时重传时间(RTO)的选择:

加权平均往返时间RTTS:(α=0.125)

image-20240116163405802

RTTD:(β=0.25)

image-20240116163607610

最终RTO = RTTS + 4 * RTTD


流量控制

让发送方的发送速率不要太快,要让接收方来得及接收

利用滑动窗口实现:

image-20240116163847117

注:TCP的窗口单位是字节,不是报文段


拥塞控制

拥塞:对资源的需求之和 > 可用资源

作用:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载

image-20240116164630980

四种拥塞控制算法:慢开始、拥塞避免、快重传、快恢复

image-20240116170140651

慢开始

由小到大逐渐增大注入到网络中的数据字节,即由小到大逐渐增大拥塞窗口数值

发送方的最大报文段SMSS

初始拥塞窗口cwnd

则cwnd每次增加量 = min( N , SMSS ),如下图类似于复制的增加,除非到了SMSS

image-20240116165127473

拥塞避免

让cwnd缓慢增大(线性增长)

报文段ssthresh

image-20240116165629439

快重传&快恢复

快重传:让发送方尽早知道发生了个别报文段的丢失

image-20240116165758605

快恢复:发现只丢了部分,不启动慢开始,调整门限值


运输连接管理

连接建立——三次握手

初始序号seq,确认号ack

image-20240116170250510

连接释放——两次二次握手

image-20240116170438791


端口号

一个16位的标识符,范围0~65535

套接字 = 主机IP地址 + 端口号

分类:

  1. 服务器端使用的端口号

    熟知端口号:0~1023

    FTP 21
    TELENT 23
    SMTP 25
    DNS 53
    TFTP 69
    HTTP 80
    SNMP 161
    HTTPS 443
    RIP 520

    登记端口号:1024~49151

  2. 客户端使用的端口号

    短暂端口号:49152~65535,客户进程运行时才动态选择,临时使用

实验:运输层端口观察实验

拓扑如下

image-20240116011603606

IP地址配置:

设备 接口 IP地址 子网掩码 网关 DNS
PC1 FastEthernet0 192.168.1.11 255.255.255.0 192.168.1.254 192.168.1.1
PC2 FastEthernet0 192.168.1.12 255.255.255.0 192.168.1.254 192.168.1.1
Server FastEthernet0 192.168.1.1 255.255.255.0 192.168.1.254 -

任务一:观察UDP端口

PC1访问port.com,发送DNS报文给Server

看一下最开始PC1的PDU信息和Server发回报文的PDU信息

image-20240116012417070

image-20240116013047005

观察:SOURCE PORT和DESTINATION PORT字段的取值

访问网页次数 报文 SOURCE PORT DESTINATION PORT
第1次 PC1发给Server 1025 53
第1次 Server发给PC1 53 1025

可知:UDP请求报文的源端口是应答报文的目的端口,UDP请求报文的目的端口是应答报文的源端口