网络参考模型与标准协议

以下内容来源于 华为官方讲义课件+ 个人整理,如有侵权,请联系作者删除


1. 数据与网络参考模型

在数字化时代,信息以数据的形式存在并传递。本章通过网络参考模型,帮助我们理解数据的“一生”。


2. 应用与数据

2.1 应用

应用的存在是为了满足人们的需求,例如访问网页、在线游戏、在线视频等。应用会产生信息,如文本、图片、视频等。

2.2 数据

数据是信息的载体,大部分应用程序产生的数据需要在不同设备之间传递。


3. 网络参考模型

3.1 OSI参考模型

OSI参考模型分为7层,每一层的功能如下:

层级 功能描述
7. 应用层 为应用程序提供接口
6. 表示层 转换数据格式,确保数据可被识别
5. 会话层 建立、管理和终止会话
4. 传输层 建立端到端的数据传输,控制传输节奏
3. 网络层 定义逻辑地址,转发数据
2. 数据链路层 封装成帧,实现点到点通信,差错检测
1. 物理层 传输比特流,提供机械和电气规约

3.2 TCP/IP参考模型

image-20250217231443606

TCP/IP参考模型是互联网的主流模型,分为4层:

TCP/IP模型 OSI模型
应用层 应用层、表示层、会话层
传输层 传输层
网络层 网络层
数据链路层 数据链路层
物理层 物理层

4. 常见协议

image-20250217231528111

协议 端口 功能
HTTP 80 (TCP) 超文本传输协议,用于网页浏览
Telnet 23 (TCP) 远程登录协议
FTP 20/21 (TCP) 文件传输协议
SMTP 25 (TCP) 简单邮件传输协议
TFTP 69 (UDP) 简单文件传输协议
DNS 53 (TCP/UDP) 域名解析服务
DHCP 67/68 (UDP) 动态主机配置协议

5. 协议标准化组织

  • IETF:负责开发和推广互联网协议,通过RFC发布标准。
  • IEEE:制定电子、电气和计算机科学领域的标准,如IEEE 802.3(Ethernet)、IEEE 802.11(Wi-Fi)。
  • ISO:国际标准化组织,定义了OSI模型(ISO/IEC 7498-1)。

6.应用层

  • 应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。
  • 应用层的PDU被称为Data(数据)。

image-20250217232115159

常见应用层协议 - FTP

  • FTP(File Transfer Protocol)是一个用于从一台主机传送文件到另一台主机的协议,用于文件的“下载”和“上传”,它采用C/S(Client/Server)结构。

image-20250217232244661

常见应用层协议 - Telnet

  • Telnet是数据网络中提供远程登录服务的标准协议。 Telnet为用户提供了在本地计算机上完成远程设备工作的能力。

image-20250217232353732

常见应用层协议 - HTTP

  • HTTP(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

image-20250217232453562

7. 传输层

  • 传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”(Port to Port)的连接。

  • Sport、Dport 取值范围是 0 - 65535 , 0-1023 是知名端口,一般当作目标端口使用, 1024-65535 是随机端口,一般当作源端口使用

  • 传输层的PDU被称为Segment(段)

    image-20250217232828409

TCP和UDP – 报文格式

  • Byte : 字节,bit : 比特,1 Byte = 8 bitimage-20250217232933281

TCP和UDP – 端口号

image-20250217233126294

TCP 三次握手机制

  • 任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。是不携带数据信息的
  • TCP使用序列号seq 和确认序列号 ack 字段实现数据的可靠和有序传输。
  • seq 序列号,ack 确认号;三次握手中:序列号 seq = 上一个ack ; 确认号 ack = 上一个 seq + 1

image-20250217233257041

  1. SYN:客户端发送SYN报文,请求建立连接。
  2. SYN-ACK:服务器回应SYN-ACK报文,确认请求并准备接受连接。
  3. ACK:客户端发送ACK报文,确认收到SYN-ACK,连接建立。

TCP 的数据交互机制

  • 在TCP 三次握手确认之后,就要进行数据的交互,ack= a + 1+ 12(上一个报文的seq + 携带的数据大小), 注意这边无需再加1 了【只有再TCP三次握手的时候, ack = 上一个 seq + 1 】

image-20250217234643574

TCP 的滑动窗口机制

  • TCP通过滑动窗口机制来控制数据的传输速率,用于在发送方和接收方之间有效地管理数据传输。

image-20250218135902034

滑动窗口的基本概念

  1. 窗口大小
    • 发送方和接收方在TCP连接建立时,通过协商确定一个窗口大小(Window Size),这个大小表示接收方当前能够接收的最大数据量。
    • 窗口大小通常在TCP头部中的 Window字段中指定。
  2. 窗口滑动
    • 滑动窗口机制允许发送方在接收到接收方的确认之前发送多个数据段。
    • 随着数据的发送和确认,窗口在发送方的缓冲区中向前滑动,表示已经发送并被确认的数据不再占用窗口空间。

工作过程

  1. 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。
  2. 连接建立成功之后,发送方会根据接受方宣告的Window大小发送相应字节数的数据。
  3. 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。
  4. 接收方根据自身的缓存空间大小通告当前的可以接受的数据大小( Window )。
  5. 发送方根据接收方当前的Window大小发送相应数量的数据。

TCP 四次挥手机制

  • 当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
  • 和TCP三次握手一样,在没有传输数据的时候,序列号 seq = 上一个ack ; 确认号 ack = 上一个 seq + 1

image-20250217235314846

image-20250217235326358


8. 网络层

  • 传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间的传递。
  • 网络层的PDU被称为Packet(包)。

image-20250218140433483

网络层协议工作过程

image-20250218140520907

  • 当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。

  • IP数据包的封装与转发:

    • 网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
    • 中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”——路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
    • IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。
  • IP协议工作时,需要如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。


9. 数据链路层

  • 数据链路层位于网络层和物理层之间,可以向网络层的IP、IPv6等协议提供服务。数据链路层的PDU被称为Frame(帧)。
  • 以太网(Ethernet)是最常见的数据链路层协议。

image-20250218140843514

以太网与MAC地址

  • MAC地址由48比特(6个字节)长,12位的16进制数字组成。例如:48-A4-72-1C-8F-4F

image-20250218141219905

地址解析协议 (ARP)

  • ARP (Address Resolution Protocol)地址解析协议,根据已知的IP地址解析获得其对应的MAC地址。

image-20250218141424051

  • ARP是IPv4中必不可少的一种协议,它的主要功能是:
    • 将IP地址解析为MAC地址;
    • 维护IP地址与MAC地址的映射关系的缓存,即ARP表项;
    • 实现网段内重复IP地址的检测。

ARP协议解析流程:

image-20250218143903127

  • 1.PC1访问 PC2,要先检查设备本身的ARP缓存表项
    • 如果缓存内存在目标IP对应的MAC地址,则直接封装MAC转发数据
    • 如果缓存内不存在目标IP对应的MAC地址,则需要进行ARP解析
  • 2.PC1 发送 arp request报文(目标MAC地址是广播的)报文内参数: 见截图

image-20250218143115677

  • 3.PC3 设备收到 ARP request报文,发现报文的目标地址不是自己,不处理

  • 4.PC2 设备收到 ARP request报文,发现报文的目标地址是自己

    • PC2发送 arp reply报文(目标MAC地址是单播的)报文内参数:见截图

    image-20250218143357696

  • 5.PC1收到 PC2ARP reply报文,会将报文内回复的MAC地址放入到ARP缓存表项中

免费ARP

  • 免费ARP(Gratuitous ARP)是一种特殊的ARP(地址解析协议)请求,用于在网络中通告或更新设备的IP地址和MAC地址映射关系。
  • 其发送方和接收方的IP地址相同,即主机发送ARP请求来查询自己的MAC地址。通常,发送免费ARP的主机并不期望收到响应,而是利用这种方式来宣告自己的存在或更新其他设备的ARP缓存表。

image-20250218144829889

免费ARP的作用

  1. IP地址冲突检测:当主机启动或IP地址发生变化时,发送免费ARP以检查网络中是否已有其他设备使用相同的IP地址。如果收到响应,则表明存在IP冲突。
  2. 通告新的MAC地址:当主机的MAC地址发生变化时(如更换网卡),发送免费ARP通知网络中的其他设备更新其ARP缓存表,以确保数据包能够正确路由。
  3. 更新邻居设备的ARP表:通过发送免费ARP,主机可以确保其邻居设备(如交换机)的ARP表中包含最新的IP-MAC映射关系,从而提高数据传输的效率。w

免费ARP与普通ARP的区别

  • 目的不同
    • 普通ARP请求是为了获取某个IP地址对应的MAC地址,通常用于主机之间的通信。
    • 免费ARP主要用于通告自身的IP和MAC地址,不期望得到响应。
  • 响应处理
    • 普通ARP请求期望收到目标设备的ARP响应,以获取MAC地址。
    • 免费ARP通常不期望收到响应,如果收到响应则可能意味着IP地址冲突。

10.物理层

  • 数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。
  • 物理层的PDU被称为比特流(Bitstream)。

image-20250218145017482

数据通信过程

1.发送方数据封装

image-20250218145312363

  • 假设你正在通过网页浏览器访问, www.srebro.cn 当你输入完网址,敲下回车后,计算机内部会发生下列事情:
    • IE浏览器(应用程序)调用HTTP(应用层协议),完成应用层数据的封装(图中DATA还应包括HTTP头部,此处省略) 。
    • HTTP依靠传输层的TCP进行数据的可靠性传输,将封装好的数据传递到TCP模块。
    • TCP模块给应用层传递下来的Data添加上相应的TCP头部信息(源端口、目的端口等)。此时的PDU被称作Segment(段)。
    • 在IPv4网络中,TCP模块会将封装好的Segment传递给网络层的IPv4模块(若在IPv6环境,会交给IPv6模块进行处理)。
    • IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包)。
    • 由于使用了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太网卡)处理。
    • Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧)。
    • 在Ethernet模块封装完毕之后,会将数据传递到物理层。
    • 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(无线)信号等。
    • 转换完成的信号在网络中开始传递。

2.中间网络数据传输

  • 封装好的完整数据,将会在网络中被传递

image-20250218145547345

  • 一般情况下:
    • 网络中的二层设备(如以太网交换机)只会解封装数据的二层头部,根据二层头部的信息进行相应的“交换”操作。
    • 网络中的三层设备(如路由器)只会解封装到三层头部,并且根据三层头部的信息进行相应的“路由”操作。

3.接收方数据解封装

  • 经过中间网络传递之后,数据最终到达目的服务器。根据不同的协议头部的信息,数据将被一层层的解封装并做相应的处理和传递,最终交由WEB服务器上的应用程序进行处理。

image-20250218145722391