【计网期末复习】

计算机网络体系结构(1.7)

ios七层协议(了解即可),重复冗余,不在实际中用

tcp/ip协议的各层层次结构和主要协议

🌠五层协议


数据从电脑A到服务器B的完整五层传输过程如下:

  1. 应用层:电脑A上的浏览器生成一个HTTP请求数据,例如"请把主页发给我"。

  2. 传输层:为HTTP数据添加TCP头部,包含源端口号(如54321)和目标端口号(如80),形成TCP段。

  3. 网络层:为TCP段添加IP头部,包含源IP地址(如192.168.1.10)和目标IP地址(如93.184.216.34),形成IP包。

  4. 数据链路层:为IP包添加帧头和帧尾,包含源MAC地址(A的网卡地址)和下一跳MAC地址(如路由器地址),形成数据帧。

  5. 物理层:将数据帧转换为比特流,再转换成电信号(或光信号、电磁波),通过物理介质发送出去。

  6. 网络传输

    • 信号经过交换机时,交换机会查看帧头中的MAC地址,将帧转发到对应端口。
    • 信号到达路由器时,路由器会:
      a) 剥离帧头,查看IP包中的目标IP地址。
      b) 根据路由表决定下一跳路径。
      c) 为IP包重新封装新的帧头(更新源和目标MAC地址为当前路由器与下一跳设备的地址),然后转发。
    • 此过程在多个路由器间重复,直至数据包到达目标网络。
  7. 物理层:服务器B的网卡接收到物理信号,将其还原为比特流。

  8. 数据链路层:将比特流组装成帧,检查帧尾确保数据完整,查看帧头中的目标MAC地址,如果匹配自身地址,则剥离帧头和帧尾,取出IP包向上传递给网络层。

  9. 网络层:接收IP包,检查IP头部的目标IP地址,如果匹配自身地址,则剥离IP头部,取出TCP段向上传递给传输层。

  10. 传输层:接收TCP段,检查TCP头部的目标端口号(如80),找到对应监听程序,进行数据排序和确认后,剥离TCP头部,取出HTTP数据向上传递给应用层。

  11. 应用层:Web服务器程序(如Nginx)接收HTTP请求,处理并生成HTTP响应(网页内容),然后这个响应数据开始一个新的、从B到A的封装和传输过程,原路返回给电脑A的浏览器。

总结与核心要点

核心功能 地址/标识 数据单元 关键动作
应用层 产生或处理最终数据 - 数据 生成HTTP请求/响应
传输层 端到端连接、可靠性 端口号 建立连接、流量控制、可靠传输
网络层 逻辑寻址、路由选择 IP地址 选择最佳路径、跨网络传送
数据链路层 本地节点间传输、差错检测 MAC地址 在局域网内"一跳一跳"地传输
物理层 比特流传输 - 比特 将数据转换为物理信号

关系的简述:

上层与下层是服务与被服务的关系。 上层是服务的使用者 ,下层是服务的提供者。例如,传输层(上层)需要依靠网络层(下层)提供的"主机到主机"的寻址和路由服务;应用层(上层)需要依靠传输层(下层)提供的"端到端"的可靠或不可靠传输服务。

下层为上层提供透明的数据传输通道。 下层实现的复杂细节(例如,物理层如何调制信号、数据链路层如何纠错)对上层是完全隐藏的。

对等层之间是虚拟的逻辑通信关系。 虽然物理通信只发生在最底层的物理介质上,但在逻辑上,每一层都认为自己是在与对方的同一层直接对话。例如,电脑A的传输层认为自己发送的TCP段是直接交给电脑B的传输层,实际上这个段是经过了下层逐层封装、传输、再解封装才送达的。这种逻辑通信的规则就是协议

各层的核心作用:

  1. 应用层:为应用程序提供网络服务接口,处理用户产生的实际数据(如网页、邮件)。
  2. 传输层:提供端到端的可靠或不可靠的数据传输,管理数据分段、流量控制和错误恢复。
  3. 网络层:负责在不同网络之间进行逻辑寻址和路由选择,将数据包从源主机送达目标主机。
  4. 数据链路层:在直接相连的节点之间,提供可靠的帧传输和差错检测,管理物理寻址(MAC地址)。
  5. 物理层 :在物理介质上透明地传输原始比特流,定义电气、机械和时序接口标准。
    理解:先比特,再在局域网(链路)上传播,再在网络传播,再找端,最后显示

计算机网络的性能

时延

时延 = 数据从网络一端到另一端的总时间,包括:

  1. 发送时延 (传输时延)

    将全部分组数据发出所需时间 = 分组长度 / 发送速率
    是主机或路由器把分组"推出去"的时间

  2. 传播时延

    信号在介质中传播的时间 = 信道长度 / 传播速率
    是比特在链路上"跑过去"的时间

  3. 处理时延

    路由器检查分组、查路由等处理时间

  4. 排队时延

    分组在路由器中排队等待的时间

总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

通常考试中忽略处理和排队时延。

关键区分:发送时延 与链路带宽有关,传播时延与距离有关。

RTT(往返时间)

RTT(往返时间) 在计算机网络中是重要的性能指标,代表双向交互一次所需时间。

示例:

A 向 B 发送 100 MB 数据(发送速率 100 Mbit/s)。

  • 发送时间 = 数据长度 / 发送速率 ≈ 8.39 s
  • 若 B 收到后立即回复确认(忽略确认发送时间),A 需等待 RTT 时间才能继续发送。
  • 若 RTT = 2 s,则:
    有效数据率 = 数据长度 /(发送时间 + RTT)≈ 80.7 Mbit/s

可见,由于 RTT 的存在,有效数据率比原始发送速率(100 Mbit/s)降低不少。

计算过程

数据链路和帧(数据链路层)

1)点对点信道

采用一对一的通信方式,PPP协议是目前应用最广泛的点对点协议。

2)广播信道

该信道可连接多个主机,采用一对多的广播通信方式:

  • 有线局域网(共享广播信道)普遍使用CSMA/CD协议;

差错检测

CSMA/CD协议(征用流程)(数据链路层)

前情提要

广播信号

一对一通信

碰撞和冲突

CSMA/CD 的特点

  • CSMA/CD (Carrier Sense Multiple Access with Collision Detection):载波监听多点接入 / 碰撞检测。
  • 多点接入:说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
  • 载波监听:即"边发送边监听"。不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。
  • 碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)。

简短比喻

可以把 CSMA/CD 想象成一间没有主持人的会议室

  • 多点接入:大家都连在同一个会议室(总线)里。
  • 载波监听 :想说话前先听听有没有人在说(先听后说)。
  • 碰撞检测 :如果说话时听到别人也在说(边说边听,发现碰撞),就立刻停下,等一会儿再尝试。

CSMA/CD 中的"争用期"与"最短帧长"

  1. 争用期(冲突窗口) :在以太网中,从发送开始到最远端的信号返回,需要 端到端往返传播时延的 2 倍时间((2\tau))。在这段时间内,发送站可能检测到冲突。因此,这段时间被称为"争用期"。

  2. 最短帧长的必要性 :如果帧太短,可能在发送站发完整个帧后,冲突信号才传回来,导致发送站无法检测到冲突,也不会重传,造成数据丢失。为了避免这种情况,以太网规定了 最短帧长

  3. 最短帧长计算公式

  4. 举例(10Mb/s 以太网)

    • 争用期长度:51.2 μs

    • 争用期内可发送的比特数

    • 因此,最短帧长为 64 字节。如果发送的数据不足 64 字节,需要在 MAC 帧中添加"填充字段"补足。

二进制指数退避算法

总结

CSMA/CD算法流程:

  1. 准备发送:封装分组为帧。
  2. 检测信道:空闲则发,忙则持续监听。
  3. 发送与监听
    • 若争用期内无冲突,发送成功。
    • 若检测到冲突,立即停止,执行二进制指数退避,等待随机时间后返回步骤2。
    • 若重传16次仍失败,则停止并上报错误。

两种服务(网络层🌠)

了解(助于理解)

1.网络层设计得尽量简单,主要是为了:

1. 保证通用性 :简单才能适配各种底层网络技术(以太网、Wi-Fi等)。
2. 提高效率 :路由器只需快速查表转发,不加复杂判断。
3. 端到端原则 :复杂功能(可靠传输、流量控制)留给终端(TCP)处理。
4. 增强健壮性:核心简单稳定,局部故障不影响全网。

本质是"智能在两端,简单在中间",这样网络才能大规模、高速扩展。好比邮局只负责按地址转发,不保证内容完整(那是写信人和收信人的事)。

数据报服务和虚电路服务(书上标知道)

数据报服务原理

(就是随便发,发到b为止)

  • 无需提前联系:主机A直接发送分组,不需要先和主机B建立连接。
  • 独立路由:每个分组自带完整目的地址,网络中的路由器(交换结点)根据当前状况为每个分组独立选择最佳路径。
  • 存储转发:路由器收到分组后短暂存储,查路由表后立即转发。
  • 资源共享:分组只在传输时占用当前链路资源,其他主机可同时通信。
  • 简单廉价:网络不保证可靠性、顺序或时延,路由器设计简单,成本低。

工作流程

  1. 主机A将分组发给直连的路由器A。
  2. 路由器A查表后,可能将不同分组转发给路由器C或D(路径可能不同)。
  3. 沿途路由器重复此过程,直到分组到达主机B。

特点:灵活、抗故障、适合突发数据,但可能乱序、丢失或重复。这是互联网IP协议的基础。

虚电路服务

虚电路服务原理

工作流程

  1. 建立连接:主机A发送"呼叫请求"分组到主机B,沿途结点记录路径信息,分配虚电路号,形成虚电路表。
  2. 传输数据:建立后,双方沿虚电路传送分组,分组头只需包含虚电路号。
  3. 释放连接:通信结束,发送"释放请求"分组拆除虚电路。

特点:需提前建立连接,使用短标识,路径固定,有序可靠,但故障适应性差。用于需要可靠有序传输的场景。

二者处理端到端的差错处理和流量控制

数据报由用户主机负责,虚电路服务可以由网络负责,也可以由用户主机负责(提供可靠服务所以网络可以负责)(ip属于数据报服务)

IP地址(网络层🌠)

分类的ip地址

(注:A:8 24 B:16 16 C:24 8 其他和主机号)

注:

特殊用途的IP地址

以下是不可用作普通主机地址的特殊IP地址及其用途:
总结表

地址格式 示例 用途
网络地址(主机号全0) 192.168.1.0 代表整个网络本身
直接广播地址(主机号全1) 192.168.1.255 向本网络内所有主机广播
环回地址 127.0.0.1 本机内部测试与通信
0.0.0.0 0.0.0.0 表示本机所有IP地址
255.255.255.255 255.255.255.255 向本局域网内所有主机广播

注意:这些地址都不能分配给具体主机使用,它们具有特殊的网络功能或测试用途。

(理解:为什么分类)

无分类编址CIDR

和分类的ip地址相比,就是前缀的长可以任取

斜记法



(注意事项:同分类ip地址)

路由聚合

路由聚合(也称构成超网)是指将多个连续的小网络地址块合并成一个更大的地址块,并在路由表中用这一条聚合路由来代表所有被包含的小网络,从而减少路由表条目、降低网络开销并提高路由效率的技术。

效果:像把"1楼到10楼"和"11楼到20楼"合并成"1楼~20楼"。

技术本质:找到这些地址的最长相同前缀,用更短的掩码(如/23代替两个/24)表示一个大地址块。

聚合成206.1.0.0/16

IP地址与MAC地址

IP地址与MAC地址的区别与协作

1. 角色不同

  • IP地址:网络层的逻辑地址,用于跨网络寻址。
  • MAC地址:数据链路层的物理地址,用于同一局域网内寻址。

2. 协作流程(关键)

  • 跨网络时 :路由器只根据目标IP地址 选择下一跳,IP地址不变
  • 到下一跳时 :将IP数据报封装成MAC帧,MAC地址每跳都变(源是发送接口MAC,目标是下一跳接口MAC)。

3. 核心要点

  • IP层只能看到IP地址,链路层只能看到MAC地址。
  • 路由器隔离广播,MAC地址无法跨网,必须用IP地址跨网络寻址。
  • 到达目标网络后,最后一步通过**MAC地址广播(ARP)**找到具体主机。

注:路由器因为连接多个网络,所以它不仅拥有多个IP地址,而且拥有多个硬件地址(MAC地址)。

地址解析协议ARP

ARP 完整流程(含缓存查询)

当主机A要给主机B发数据时:

**情况一:缓存中有记录 **

  1. A直接查看ARP缓存表
  2. 找到B的IP对应的MAC地址
  3. 直接封装数据帧发送,无需广播查询

**情况二:缓存中无记录 **

  1. 广播ARP请求 :目标MAC填FF-FF-FF-FF-FF-FF,问:"谁是IP_B?"
  2. 主机B单播响应:"我是IP_B,我的MAC是MAC_B"
  3. A更新ARP缓存 :将IP_B → MAC_B存入本地缓存表(存几分钟,因为网络会变化)
  4. 发送数据 :用获得的MAC_B封装数据帧发送

ARP 四种情况

  1. 同网主机发给同网主机

    → 用ARP查对方MAC

  2. 同网主机发给外网主机

    → 查网关(路由器)MAC,(剩下的路由器来做)

  3. 路由器发给直连的主机

    → 用ARP查该主机MAC

  4. 路由器发给不直连的主机

    → 查下一跳路由器MAC

规律

  • ARP只在同局域网内用
  • 找的是下一跳的MAC
  • 每过一个路由器,MAC地址就换一次

理解:为什么知道了ip还要知道mac

技术原因

  1. IP是逻辑的,MAC是物理的

    • IP地址是软件分配的,可以变化。
    • MAC地址是网卡出厂时烧录的物理标识,一般不变。
  2. 数据链路层(二层)不识别IP

    • 交换机、网卡等硬件设备工作在数据链路层,它们看不懂IP包,只认MAC帧。
    • 就像邮局分拣机只认邮政编码,不认收件人姓名。
  3. 分层解耦

    • 网络层(IP)负责跨网络寻址
    • 数据链路层(MAC)负责同一网段内的设备间传递
    • 这样修改上层协议(如IPv4→IPv6)时,下层硬件(如以太网)可以不变。

一句话回答
IP地址用于决定数据包应该送到哪个网络(路由选择),MAC地址用于在到达该网络后,找到具体的物理设备进行最终交付。

IP数据报的格式


第一行(32位)

  • 版本(4位) :IP协议版本,IPv4填4,IPv6填6
  • 首部长度(4位):IP头部的长度(单位是4字节),最小值为5(即20字节)。
  • 区分服务(8位):用于服务质量QoS,标记数据包的优先级或服务类型。(根据服务看哪个优先等)
  • 总长度(16位):整个IP数据报的长度(包括头部和数据),单位是字节。

第二行(32位)

  • 标识(16位):数据报的唯一标识,用于分片重组。(同一段内容同一个标识)
  • 标志(3位):控制分片,比如"是否允许分片"、"是否最后一个分片"。
  • 片偏移(13位):表示该分片在原数据报中的位置(单位是8字节)。

第三行(32位)

  • 生存时间(8位):TTL,每经过一个路由器减1,减到0就丢弃,防止数据报无限循环。
  • 协议(8位):指出数据部分用的协议(如6=TCP,17=UDP,1=ICMP)。
  • 首部检验和(16位):只检验IP头部是否出错,不包括数据部分。

第四、五行(各32位)

  • 源地址(32位):发送方的IP地址。
  • 目的地址(32位):接收方的IP地址。

第六行

  • 可选字段(长度可变):很少用,用于特殊控制(如安全选项、时间戳)。
  • 填充:将可选字段部分补足到32位的整数倍,确保首部对齐。

最后

  • 数据部分:上层传下来的内容(如TCP段、UDP报文等)。

IP分组转发过程(网络层🌠)

在同一个局域网中直接交付,不同则间接交付

好的,我用技术术语但更简洁直白的方式解释:

子网掩码

本质 :一个32位的二进制数,用于划分IP地址的网络部分和主机部分

作用

  1. 确定网络地址:将IP地址与子网掩码进行按位"与"运算,得到网络地址。

    复制代码
    例如:
    IP: 192.168.5.56    → 二进制:11000000.10101000.00000101.00111000
    掩码: 255.255.255.0 → 二进制:11111111.11111111.11111111.00000000
    按位与运算结果:     → 11000000.10101000.00000101.00000000
    网络地址:192.168.5.0
  2. 判断两个IP是否在同一子网

    • 如果两个IP地址与同一子网掩码进行"与"运算后,得到的网络地址相同,则它们在同一子网内。
    • 在同一子网内的设备可以直接通信,不需要路由器。

默认网关

本质路由器的IP地址,是本地子网连接到其他网络的出口。

作用

  1. 跨子网通信的中转站

    • 当主机要发送数据时,先检查目的IP是否在同一子网。
    • 如果在同一子网:直接发送。
    • 如果不在同一子网:将数据包发送给默认网关(路由器),由路由器负责转发到其他网络。
  2. 配置要求

    • 默认网关的IP地址必须与发送主机的IP地址在同一个子网内
    • 例如:主机IP为192.168.5.56/24,默认网关通常为192.168.5.1。

两者关系与工作流程

复制代码
主机A(IP: 192.168.5.56,掩码: 255.255.255.0,网关: 192.168.5.1)
要发送数据给主机B(IP: 202.120.5.10)

步骤:
1. 主机A用子网掩码计算:
   - 自己的网络地址:192.168.5.56 & 255.255.255.0 = 192.168.5.0
   - 主机B的网络地址:202.120.5.10 & 255.255.255.0 = 202.120.5.0
2. 比较:192.168.5.0 ≠ 202.120.5.0
3. 结论:主机B不在同一子网
4. 操作:将数据包发送给默认网关192.168.5.1(路由器)
5. 路由器收到后,根据路由表将数据包转发到目标网络

理解:路由表


RIP协议(网络层🌠)

RIP(路由信息协议)(可类比狄杰斯特拉)

  1. 性质 :内部网关协议,基于距离向量算法
  2. 度量标准 :用跳数衡量距离,直连网络=1跳,每经过一个路由器+1跳。
  3. 跳数限制:最大15跳,16跳视为不可达 → 只适用于小型网络。
  4. 工作机制 :每个路由器维护一张距离向量表 ,记录到所有目的网络的跳数,并定期与邻居交换路由信息。

特点



过程:好消息传播得快

RIP更新路由表的过程

假设有3个路由器A、B、C,初始状态如下:

复制代码
A的路由表:
目标网络 | 下一跳 | 跳数
Net1     | 直连   | 1
Net2     | 直连   | 1

B的路由表:
目标网络 | 下一跳 | 跳数
Net2     | 直连   | 1
Net3     | 直连   | 1

C的路由表:
目标网络 | 下一跳 | 跳数
Net3     | 直连   | 1

步骤1:B向A发送RIP更新报文

B告诉A:"我能到达Net2(跳数1)、Net3(跳数1)"

A收到后处理:

  1. 检查Net2 :A自己已直连Net2(跳数1),比B说的"经B到Net2(1+1=2跳)"更优,不更新

  2. 检查Net3 :A路由表中没有Net3,新增一条

    复制代码
    目标网络 | 下一跳 | 跳数
    Net3     | B      | 2   (B说的1跳 + 1)

A更新后路由表

复制代码
Net1 - 直连 - 1
Net2 - 直连 - 1
Net3 - B     - 2

步骤2:A向B发送更新

A告诉B:"我能到达Net1(1跳)、Net2(1跳)、Net3(2跳)"

B收到后处理:

  1. Net1 :B没有,新增Net1 - A - 2
  2. Net2:B已直连(1跳),比A说的"经A到Net2(2跳)"更优,不更新。
  3. Net3:B已直连(1跳),比A说的"经A到Net3(3跳)"更优,不更新。

B更新后路由表

复制代码
Net1 - A - 2
Net2 - 直连 - 1
Net3 - 直连 - 1

步骤3:C加入,B向C更新

B告诉C:"我能到达Net1(2跳)、Net2(1跳)、Net3(1跳)"

C收到后处理:

  1. Net1 :C没有,新增Net1 - B - 3
  2. Net2 :C没有,新增Net2 - B - 2
  3. Net3:C已直连(1跳),不更新

C更新后路由表

复制代码
Net1 - B - 3
Net2 - B - 2
Net3 - 直连 - 1

完整收敛后三者的路由表

路由器 到Net1 到Net2 到Net3
A 直连-1 直连-1 B-2
B A-2 直连-1 直连-1
C B-3 B-2 直连-1

更新规则总结

  1. 新路由:如果目标网络不存在,直接添加(跳数=邻居说的+1)。
  2. 更优路由:如果存在,但新跳数+1 < 原跳数,则更新。
  3. 相同下一跳:即使跳数更大也要更新(说明原路径可能变差)。
  4. 30秒定时更新,180秒未收到更新则标记为不可达(16跳)。

缺点:坏消息传播得慢

会导致几分钟检测出故障不可达

五、 运输层

1. 网络层和运输层的区别

网络层为主机之间的通信 提供服务 运输层为应用进程之间的通信提供服务

复用:应用层所有应用进程都可以使用通过传输层再传送到IP层(网络层)

分用:运输层从IP层收到发送给各应用进程的数据后,必须分别交付指明的各应用进程

2. 两个主要协议 --- UDP 和 TCP 作用、特点、首部格式等

1. 作用

用户数据报 协议UDP:提供无连接的、不可靠的传输服务。

传输控制 协议TCP:提供面向连接的、可靠的、基于字节流的传输服务。

2.区别:

特性 UDP TCP
连接 无连接 面向连接
可靠性 不可靠,无重传 可靠,保证交付
传输方式 面向报文 面向字节流(流是指字节序列)
首部开销 8 字节,开销小 20 ~ 60 字节
流量控制 有(滑动窗口)
拥塞控制 有(慢启动、拥塞避免等)
传输速度
应用场景 DNS、视频直播、VoIP、实时游戏 HTTP、FTP、邮件、文件传输
运输协议数据单元TPDU UDP 用户数据报 TCP报文
支持一对一、一对多、多对一、多对多的交互通信 全双工通信:允许双方在任何时候都能发送数据

UDP 的首部格式

****

TCP 的首部格式

确认号:期望收到对方下一个报文的第一个数据字节的序号

(要会算!总之:若确认号为N 代表到序号N-1为止的所有数据都已正确收到)

ex:B正确收到了A 的报文段,序号字段值为501 ,数据长度 200字节(即序号501 - 700

则接下来B发送给A的确认号将置为**701 **

2. 常见端口及作用 套接字

  • 运输层通过**端口标识和区分应用层的不同进程**(即复用和分用)。
  • 端口是运输层服务访问点 (TSAP)。
  • 端口是逻辑概念,不是硬件接口。

端口分类:

服务器端:

  • 熟知端口 (0 ~ 1023) :IANA分配给常用服务,如
    • FTP(21):文件传输服务,用于客户端与服务器间文件上传、下载。
    • TELNET(23):远程终端服务,实现远程登录设备并操作命令行。
    • SMTP(25):邮件发送服务,负责将邮件从发件服务器传递到收件服务器。
    • DNS(53):域名解析 服务,把域名转换成对应的 IP 地址
    • HTTP(80):超文本传输服务,用于浏览器与 Web 服务器间传输未加密的网页数据。
    • HTTPS(443):安全超文本传输服务,加密传输网页数据,保障数据安全。
  • 登记端口 (1024 ~ 49151):给没有熟知端口的程序使用。

客户端:

  • 短暂端口 (49152 ~ 65535):客户端进程运行时动态选择。

套接字

  • 端口号 + IP地址 = 套接字。
  • 套接字唯一标识了网络中的一台主机上的一个进程。

3. TCP可靠传输的工作原理(怎么实现)

1)停止等待协议:

  • 原理 :发送方每发送完一个分组,就停止发送,等待对方的确认。收到确认后再发送下一个。

  • 三种情况 :(A-发送方 B-接收方)

    i. 无差错 :A发送分组(传送的数据单元)M1,B发送ACK1,A收到后接着发送M2,后续同理

    ii.** 差错出现**:B检测到M1出错,丢弃M1,不发送ACK。A超时重传M1。

    iii. 确认丢失 :A发收到(或B发的A,丢失)。A超时后重传M1(B可能会收到重复的M1,然后向A发送确认需要去重)。

  • 效率低:每发送一个都要等待,信道利用率低。

2)连续ARQ协议(滑动窗口协议,重要‼️,依旧A发送方 B接收方):

  • 原理 :发送方维持一个发送窗口(滑动窗口以字节 为单位,A的发送窗口不能超过B的接收窗口数值 ),位于窗口内的分组可以连续发送(按照分组序号从小到大),而不需要逐个等待确认。
    • 后沿部分是指窗口左边,表示已发送且已收到了确认的字节序号

    • 后沿不可能向后移动,前沿一般不允许收缩

  • 积累确认(TCP要求接收方必须有这个功能) :接收方不一定 对收到的每一个分组都发送确认,而是对按序到达最后一个 分组发送确认。
    • 例如:收到M1, M2, M3,收到M3时发送ACK3,表示M3及M3之前的所有分组都已收到。

    • 书p231图5-16 需注意 若B有未按序收到的数据,发送的确认报文段中的确认号将不会改变,会导致A的可用窗口降至0,导致停止发送

  • 重传机制
    • Go-back-N (回退N步) :如果发送方收到重复确认(如ACK2)或超时,需要重传从出错分组开始的所有已发送分组。
    • 选择重传:只重传出错或丢失的那个特定分组(需更大的缓存和序号范围)。TCP主要使用的是基于选择重传思想的累计确认机制。

4. TCP的流量控制

  • 目的:防止发送方发得太快,接收方来不及处理(接收缓冲区溢出)。
  • 手段滑动窗口
  • 过程
    • 接收方B每次在TCP报文首部的"窗口"字段中,填入自己接收缓冲区的剩余空间大小rwnd - 接收窗口 receiver window,再次强调单位字节,不是报文段)。
    • 发送方A根据接收方通告的窗口大小调整自己的发送速率。
    • 如果B返回的**接收窗口值为0**,发送方**停止发送**,并启动持续定时器,探询接收方窗口何时恢复(定时发送零窗口探测报文段)。

5. TCP的拥塞控制 原理及四种方法(方法需掌握!)

  • 拥塞:是指网络中某一资源的需求超过了该资源所能提供的可用部分

  • 目的:防止过多的数据注入到网络中,导致网络路由器或链路过载(全局问题,涉及整个网络环境)。

  • 四个 **核心变量**:
    cwnd (拥塞窗口)发送方 根据网络状况自己设定的窗口。
    rwnd (接收窗口)接收方 根据自己的接收能力设定的窗口。
    ssthresh (慢开始门限) :用于限制 慢开始cwnd的增长。
    发送窗口 = min(cwnd, rwnd)。

  • 四种方法 (必须掌握)

    1. 慢开始(由小到大逐渐增大注入到网络中的数据字节即cwnd数值)
      • 适用场景:连接刚建立或cwnd < ssthresh 时。
      • 策略 :cwnd 从 1 开始,每经过一个往返时间 (RTT),cwnd 加倍 (2的指数级增长,因为每收到一个对新报文的确认就加1)。
    • 注意:是"慢"开始,但增长速度其实非常快。
    1. 拥塞避免(也可以说是慢开始的下一个阶段)
      • 适用场景:当 cwnd > ssthresh 时。(注:=时可以用慢开始也可以用拥塞避免)
      • 策略 :每经过一个 RTT,cwnd 加1 (线性增长,加法增大)。
      • 目的是避免拥塞尽快发生。
    2. 快重传
      • 触发条件 :发送方连续收到 3个重复的 ACK (Duplicate ACK)。
      • 策略立即重传丢失的那个报文段,而不是等待超时定时器到期。
    3. 快恢复
      • 配合快重传使用
      • 策略
        a. 收到3个重复ACK时,将 ssthresh 设置为当前 cwnd 的一半。
        b. 将 cwnd 设置为新的 ssthresh 值(即减半)。
        c. 直接开始执行拥塞避免算法(线性增长),跳过慢开始过程(网络出现超时 时,不跳过慢开始)。

注:圈4的时候出现包丢失

流量控制和拥塞控制类比:流量控制是因为接收设备很小,拥塞控制是因为接收设备太大,导致传输管道内部拥塞了

6. TCP的运输连接管理

三个阶段 连接建立及释放---握手 四次挥手 序列号变化(重点)

(1) 连接建立 (三次握手)

目的:确认双方的接收与发送能力是否正常,协商初始序号。

步骤 (假设A为客户,B为服务器):

i. SYN=1 (报文段不能携带数据,会消耗一个序号), 初始序号seq=x :A发送连接请求报文段,A进入 SYN_SENT 状态。

ii. SYN=1, ACK=1, 也选择一个初始序号seq=y, 确认号ack=x+1 :B收到请求,同意建立连接,发送确认。B进入 SYN_RCVD 状态。

iii. ACK=1, seq=x+1, ack=y+1:A收到B的确认,向B发送确认。A进入 ESTABLISHED 状态。B收到该报文后也进入 ESTABLISHED 状态。


为什么是三次?

(防止失效的连接请求报文段突然又传到了服务器,造成错误)。

(2) 连接释放 (四次挥手 Four-Way Handshake)

步骤

i. 终止控制位FIN=1, seq=u(前面已传送过的数据的最后一个字节的序号+1) :A(数据发送完毕)申请断开,进入 FIN_WAIT_1 状态。

ii. ACK=1, seq=v, ack=u+1 :B确认A的断开请求。B进入 CLOSE_WAIT 状态。A收到后进入 FIN_WAIT_2 状态 (此时TCP处于半关闭状态,A->B方向关闭,B->A方向仍可传输)。

iii. FIN=1, ACK=1, seq=w(可能之间还有发送数据,故换一个符号), ack=u+1(重复上次) :B数据发完后,发送断开请求给A。B进入 LAST_ACK 状态。

iv. ACK=1, seq=u+1, ack=w+1 :A确认B的断开请求。A进入 TIME_WAIT 状态。此时TCP连接尚未释放,必须经过时间等待计时器 (2MSL) 后,A才进入 CLOSED 状态。B收到A的确认后立即进入 CLOSED 状态。

为什么A要等待 2MSL?

i. 保证最后一个ACK能到达B(如果丢了,B会重传FIN)。

ii. 等待网络中所有旧报文段消失,防止新连接中混入旧报文。

(3) 序列号变化总结

  • 每次发送数据或握手报文,seq 都会根据数据长度变化(握手通常数据长度为0,但消耗序号)。//虽然 SYN(同步)和 FIN(终止)报文段并没有携带真正的应用层数据(即数据载荷为 0 字节),但是它们在传输过程中,依然会占用一个序列号。
  • 确认号 ack 总是等于期望收到的下一个序号,即 上次收到的seq + 数据长度 + 1 (SYN或FIN虽然不携带数据,但也消耗1个序号)。

六、应用层

1. 域名系统 DNS 以及 常见域名

1)作用 :将人类容易记忆的主机域名 (如 www.google.com)IP 地址 (如 142.250.1.1),是一种分布式数据库。
2)域名结构:采用**层次树状结构**。(根无域名 ,第二层为顶级域名 第三层为二级域名...下同理)

  • 语法:标号序列(由点隔开)。例如:三级域名.二级域名.顶级域名
  • 特点:不区分大小写
    3)常见域名类别 (顶级域名 TLD)
  1. 国家顶级域名 :如 .cn (中国), .us (美国), .uk (英国), .jp (日本)。
  2. 通用顶级域名
    • .com (公司/企业)
    • .net (网络服务机构)
    • .org (非营利组织)
    • .edu (教育机构,常用于美国大学)
    • .gov (政府部门,常用于美国政府)
    • .mil (军事部门)
    • .int (国际组织)
  3. 基础结构域名:.arpa (用于反向域名解析,即 IP 查域名)。

域名服务器分类

  • 根域名服务器:最高层,知道所有顶级域名服务器的 IP 地址。
  • 顶级域名服务器:管理在该顶级域名下的所有二级域名。
  • 权限域名服务器:负责一个区的域名解析。
  • 本地域名服务器:通常由 ISP 提供,是主机查询 DNS 的入口。
  • 域名树的树叶就是单台计算机的名字,不能够再往下划分子域

域名解析过程

  • 递归查询:主机问本地 DNS,本地 DNS 如果不知道,就去问别的,直到拿到结果给主机(工作量在服务器端)。
  • 迭代查询 :本地 DNS 问根,根说"你去问顶级",本地 DNS 再去问顶级,顶级说"你去问权限"(工作量在本地 DNS 端,通常 DNS 解析采用这种模式)。

区是域的子集

2. 统一资源定位符 URL

定义 :用来表示互联网上资源的地址和访问方式。
格式
<协议>://<主机名>:<端口>/<路径>

  • 协议:必须部分。如** http, https, ftp**。
  • 主机名:存放资源的主机域名或 IP 地址。
  • 端口 :可选。省略时使用协议对应的默认端口(HTTP 默认 80,HTTPS 默认 443)。
  • 路径 :资源在主机上的具体路径。
    例子
    http://www.example.com:80/index.html
  • 协议:http
  • 主机名:www.example.com
  • 端口:80 (可省略)
  • 路径:index.html

3. 超文本传送协议http (重点)

定义:应用层协议,使用 TCP 作为运输层协议,用于在 Web 浏览器和 Web 服务器之间交换数据。

(1) HTTP 的主要特点

  1. 无状态
    • 服务器不记得之前访问过它的客户端是谁。
    • 优点:简单,服务器不用为每个客户保存连接信息,响应快。
    • 缺点:不支持连续事务(如购物车)。
    • 解决方案 :使用 CookieSession
  2. 无连接 :(注:HTTP/1.1 之后支持持久连接)
    • 早期版本:每个请求/响应都要建立一个新的 TCP 连接,完后断开。
  3. 请求/响应模式:客户端发起请求,服务器被动响应。
  4. 灵活:可以传输任意类型的数据(由 Content-Type 标记)。

HTTP 报文格式

A. 请求报文 (客户端 -> 服务器)

<方法> <版本>

<首部字段>

<空行>

<实体主体> (可选)

  • 常见方法
    • GET:请求获取 URL 指定的资源(参数在 URL 中)。
    • POST:向服务器提交数据(如表单),数据放在实体主体中(比 GET 安全,长度无限制)。
    • HEAD:类似于 GET,但服务器只返回首部,不返回实体主体(用于测试 URL 有效性)。
    • PUT:上传文件。
    • DELETE:删除文件。
B. 响应报文 (服务器 -> 客户端)

<版本> <状态码> <短语>

<首部字段>

<空行>

<实体主体>


常见状态码

  • 1xx:信息性(如 100 Continue)。
  • 2xx :成功。
    • 200** OK**:请求成功。
  • 3xx :重定向。
    • 301 Moved Permanently:永久移位(资源已被分配新 URL)。
    • 302 Found:临时移位。
  • 4xx :客户端错误。
    • 400 Bad Request:请求报文有语法错误。
    • 403 Forbidden:服务器拒绝提供服务(无权限)。
    • 404** Not Found**:资源不存在。
  • 5xx :服务器错误。
    • 500 Internal Server Error:服务器内部故障。
    • 503 Service Unavailable:服务器目前无法处理请求(过载或维护)。

(3) 持久连接 与 非持久连接

  • 非持久连接 (HTTP/1.0 默认):每个资源请求都需要建立一次 TCP 连接(RTT 开销大)。
  • 持久连接 (HTTP/1.1 默认)
    • TCP 连接建立后,可以在此连接上传输多个对象(网页、图片等)。
    • 分为非流水线 (发完一个收一个)和流水线(连续发送,无需等待前一个响应)。
  1. 用户第一次访问网站,服务器生成一个唯一 ID,发给浏览器。
  2. 浏览器将该 ID 以文本文件形式保存在本地(这就是 Cookie)。
  3. 之后用户再访问该网站,浏览器会自动在请求报文中带上这个 Cookie。
  4. 服务器读取 Cookie,识别出是"老用户",从而恢复状态(如"你好,张三")。

(5) HTTP 与 HTTPS 的区别

  • 协议:HTTP 是明文传输;HTTPS (HTTP Secure) 是 HTTP + SSL/TLS,加密传输。
  • 端口:HTTP 默认 80;HTTPS 默认 443。
  • 安全性:HTTP 不安全,容易被窃听或篡改;HTTPS 安全,防窃听、防篡改、防冒充。

5. 代理服务器(万维网高速缓存)

把最近的一些请求和响应暂存在本地磁盘中,减少时延

相关推荐
leoFY12338 分钟前
STM32H750配置LAN PHY芯片LAN8742
网络·stm32·嵌入式硬件
阿部多瑞 ABU1 小时前
AI红队攻防演化史(2023-2026):从虚拟角色到RLHF劫持——所有攻击方法全景总结与最新趋势分析
网络·人工智能·安全
博客-小覃2 小时前
Zabbix之华为交换机的日志记录信息操作详细教程
服务器·网络·华为·zabbix
stolentime2 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
ytdbc3 小时前
OSPF综合实验
网络
kaisun644 小时前
Docker 构建网络问题排查
网络·docker·eureka
雪度娃娃4 小时前
存储器层次结构——磁盘硬盘存储
服务器·网络·数据库·计算机组成原理
YUANQIANG20244 小时前
通信领域进行蒙特卡洛仿真的思路和步骤
网络
eam0511235 小时前
OSPF综合实验
网络
QQ15401828565 小时前
USB转千兆以太网芯片方案
网络·pt153s·千兆以太网芯片·usb转以太网·千兆网口芯片