首页 > 其他分享 >02网络参考模型

02网络参考模型

时间:2024-09-08 22:38:36浏览次数:5  
标签:02 ARP 参考模型 报文 网络 TCP 发送 MAC 数据

02网络参考模型

  • 常见网络模型

    • 因为 OSI协议栈比较复杂 ,且TCP和IP两大协议在业界被广泛使用,所以 TCP/IP参考模型 成为了互联网的主流参考模型。

    • OIS网络模型

      • 层级 作用
        7.应用层 应用层 对应用程序提供接口。
        6.表示层 进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解。
        5.会话层 在通信双方之间建立、管理和终止会话。
        4.传输层 TCP
        UDP
        建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等等。
        3.网络层 IP层
        路由器层
        定义逻辑地址;实现数据从源到目的地的转发。
        2.数据链路层 交换机层
        MAC层
        将分组数据封装成帧;在数据链路上实现数据的点到点、或点到多点方式的直接通信;差错检测。
        1.物理层 网线 在媒介上传输比特流;提供机械的和电气的规约。
    • TCP/IP参考模型

      • image-20240901130805-flo4o3g
  • 常见网络协议

    • TCP/IP协议栈定义了一系列的标准协议。

    • image-20240901131133-0p37q4t

    • 应用层

      • 应用层为应用软件提供接口,使应用程序能够使用网络服务。
      • 应用层的PDU被称为 Data(数据)
      • 应用层共分配 端口65535个
      • 协议 端口号 类型 介绍
        HTTP 80 TCP 超文本传输协议,提供浏览网页服务
        HTTPS 443 TCP 更加安全的超文本传输协议
        Telnet 23 TCP 远程登陆协议,提供远程管理服务
        FTP 20/21 TCP 文件传输协议,提供互联网文件资源共享服务
        SMTP 25 TCP 简单邮件传输协议,提供互联网电子邮件服务
        TFTP 69 UDP 简单文件传输协议,提供简单的文件传输服务
        远程 3389 远程桌面服务
    • 传输层

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

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

      • TCP

        • TCP:一种面向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。

        • TCP头部结构

          • TCP头部 20 Byte
            Source port (16) 原端口 Destination port (16) 目标端口
            Sequence number (32) 序号字段
            Acknowledgement number (32) 确认序号
            Header length (4)头部长度 Reserved (6) 保留字段 Control bits (6) 控制位 Window (16) 流量控制
            Checksum (16) 校验字段 Urgent (16) 紧急指针
            Options 选项字段
            Data (varies) 数据
        • 端口报文(port)

          • 分为 原端口 (Source Port)和 目标端口 (Destination Port)
          • 用来传输双方数据的 端口 (应用层)
        • 序号字段(number)

          • 包括序号字段(Sequence Number)和确认序号(Acknowledgement Number)
        • 头部长度

        • 保留字段

        • 控制位

        • 流量控制

        • 校验和

        • 紧急指针

        • 选项字段

      • UDP

        • UDP:一种简单的无连接的传输层协议,由IETF的RFC 768定义。
      • TCP三次握手

        • TCP协议是一个 双向连接 的协议,在数据传输之前需要 通过三次握手建立传输数据的通道
        • seq和ack number的 初始序列号是随机数
        • 第一次由a发向b,a会向b发送一个TCP报文,标记位为SYN,表示希望建立请求。同时关闭closed状态,a进入SYN-SENT阶段。
        • 第二次由b接收到来自a的报文,并向a发送一个TCP报文,标志位为SYN和ACK,表示已经接收到建立请求,并向a发送建立请求。随后b端进入SYN-RCVD阶段。
        • 第三次由a接收到来自b的报文,明确了从客户端到服务器的数据传输是正常的,并向b发送一个TCP报文,标志位为ACK,表示“确认收到服务器端同意连接的信号”,随后a进入ESTABLISHED阶段。
        • image-20240908175645-ubjgv5t
        • 发送数据时,seq序号第一次为随机X,之后为X+1
        • 当成功接收数据时,接收方会向发送方发送一个报文,其中第一次ack为随机数Y,之后为Y+1
        • 例如,a向b发送一个 seq随机(假设为1) 的段,b收到并向a发送一个s eq随机(假设为10),ack为1+1 的段,a收到后会向b发送 seq为1+1,ack为10+1 的段。​​
      • TCP如何保证数据可靠传输

        • TCP使用​** 序列号和确认序列号 字段实现数据的可靠和有序传输。**

        • 在三次握手建立连接之后,开始传输数据。

        • 第一次a向b发送数据|(假设载荷长度为12)
          seq为a+1(初始随机数+1),ack为b+1(初始随机数+1)
          假设长度为12,则下一跳的seq为a+1+12

        • 第二次b收到a的数据(假设载荷长度为0),则b向a回复
          ack位回复a+1(随机数+1)+12(本次载荷长度)
          seq值为b+1(载荷为0时自动加1)

        • 第三次a收到b的数据(假设载荷长度为66),a向b回复
          seq为a+1+12ack值为b+1 (因为b向a没有发送载荷)
          假设长度为66,则下一跳的seq为a+1+12+66

        • 第四次b收到a的数据(假设载荷长度为50),则b向a回复
          ack位回复a+1(随机数+1)+12(上次载荷长度)+66(本次载荷长度)
          seq值为b+1(载荷为0时自动加1)

        • 假设长度为50,则下一跳的seq为b+1+50

        • image-20240905212121-91klqs9

      • TCP的窗口滑动机制

        • 在TCP三次握手建立连接时,双方都会通过Window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)。

        • 连接建立成功后,发送方会根据接受方宣告的Window大小发送相应字节数的数据(第一次发送)

        • 接受方接受到数据之后会放在缓冲区内,等待上层应用来取走缓冲的数据。若数据被上层取走,则相应的缓冲空间将被释放。

        • 接收方 根据自身的缓存空间大小通告 当前的可以接受的数据大小 ( Window )。

        • 发送方 根据 接收方 当前的Window大小 发送相应数量的数据

        • image-20240906002504-xa5ys7g

          1. PC1告知PC2自己的窗口大小为3
          2. PC2告知PC1自己的窗口大小为3
          3. PC1得知PC2窗口大小为3,发送3段数据给PC2,PC2消化完1段后返回一段ack告知PC1目前自己的窗口大小为1
          4. PC1收到PC2的ack,控制自己的发送流量为1
      • TCP四次挥手

        • image-20240908175628-kb6nyxm
        • 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段。
        • PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
        • 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
        • PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

    • 网络层

      • 通过IP、路由表和网关进行 跨网段通信
      • 定义:只要有路由表,就可以说是三层设备
      • 网络层常见设备:路由器、三层交换机、PC(软路由)、光猫
      • 网络层的PDU被称为 Packet(包)
      • 路由器两端WLAN接口不能配置相同网段,通过隔离网段区分内外网
    • 数据链路层

      • 通过Mac地址(MAC (Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要且会有唯一的一个MAC地址。)实现同网段通信

      • 数据链路层的PDU被称为 Frame(帧)

      • 数据链路层常见设备:交换机(switch)、HUB(分线器)

      • 常见协议: 以太网 、PPPoE、PPP等

      • 工作在数据链路层的设备,例如以太网交换机,会 维护一张MAC地址表 ,用于指导数据帧转发。

      • ARP协议

        • ARP协议能根据 已知的IP地址解析,获得其对应的MAC地址。

        • 在发送数据前,设备会先查找ARP缓存表。

          • 缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。
          • 缓存表中不存在相应信息,则通过ARP来获取。
        • 主机通过 广播 发送 ARP报文网段内 所有设备,其中 记录自身IP地址、MAC地址 ,由于目标MAC地址为全F,因此交换机收到后,会 对帧执行泛洪操作

        • 所有主机接收到该ARP报文后,都会检查目的端IP地址与自身的IP地址是否匹配,如果匹配则会将ARP报文中的 发送端MAC地址和发送端IP地址 信息 记录到自己的ARP缓存表 中。(接收端记录)

        • 此时接收方知道发送方的IP和MAC地址,通过 单播 点对点发送自身MAC地址到发送方,发送方进行ARP缓存表记录。(发送端记录)

    • 物理层

      • 物理层的PDU被称为比特流(Bitstream)。

      • 常用传输介质

        • 双绞线、水晶头(RJ45)
        • 光纤、光模块
        • 同/异步串口线缆(淘汰)
        • 无线设备
  • 传输层协议实验

    • TCP三次握手实验

      • 目的

        • 通过抓包,了解TCP协议三次握手的过程。
      • 实验步骤

        1. 在ENSP中创建三台设备(client、switch、server),并按要求分配IP地址和掩码。
          image-20240901134904-9uanrwv

        2. 在server中,启动HTTP服务

          image-20240908181504-h33nrhl

        3. 点击交换机右侧的接口,开始抓包
          image-20240901135239-34s7c0a

        4. 前面操作检查无误后,点击client,开始获取信息
          image-20240901135410-fj3o9yt

        5. client获取信息后,打开抓包软件,过滤tcp协议内容
          image-20240901135553-xot0b62

        6. 查看第一条数据,发现其中SYN置位为1,代表10.1向10.100发送申请建立连接
          image-20240901143721-0g1n6dn

        7. 查看第二条数据,其中ACK和SYN置位都为1,代表10.100收到申请并返回信息确认
          image-20240901143935-10yoakv

        8. 查看第三条数据,10.1收到来自10.100的申请,并发送一条接收到回复的信息。
          image-20240901144051-3fhuzlx

      • 总结

        • 只有经过三次握手成功,数据才能建立通信,进行传输
        • 传输层运行在网络层上,IP是必要条件,即使数据只在二层上传输也会用到TCP协议。
        • SYN置位表示发出建立通信的邀请,ACK置位表示已经接收到并同意申请。
    • TCP四次挥手实验

      • 目的

        • 通过抓包,了解TCP协议四次挥手的过程。
        • 写出为什么需要四次。
        • FLAGS FIN字段为什么两个序号一致。
      • 实验步骤

        1. 在上次实验的基础上继续实验,继续查看抓包数据
          image-20240908171147-kx7yp1x

        2. client发送一段报文,其中fin表示询问断开连接,ack表示数据完成接收
          image-20240908171446-aste6f3

        3. server收到client的报文,发送第一段报文,其中ack表示已经接收到断开的询问。
          image-20240908171731-n858wqm

        4. server发送第二段报文,其中fin表示请求断开传输连接,ack表示数据传输完毕。
          image-20240908171855-dbf5gxc

        5. client收到来自server的报文,发送一段报文,ack表示收到断开连接,确定断开。
          image-20240908172007-y7kzfpf

      • 总结

        • 收到数据传输速度影响,第二和第三条报文可能会合并,即只有三条报文
        • 双方都需要确认数据是否传输完毕才能断开连接
        • fin置位表示想要结束传输连接
  • 数据链路层实验

    • ARP缓存表生成实验

      • 目的

        • 通过抓包 理解ARP 与MAC地址表的作用。
        • 体现 ARP 广播报文,PC ARP记录。
      • 用到的命令

        • 命令 作用 设备
          arp -a 查询PC的ARP缓存表 PC
          display mac-address 查询交换机的ARP表 SW
      • 实验步骤

        1. 搭建实验设备(2台PC、一台交换机),连线,开机,配置IP地址掩码。
          image-20240908162844-06rtwjn

        2. 交换机G2口开始抓包,PC1使用ping 192.168.10.2
          image-20240908163159-zfabw9x

        3. 1---PC1发送ARP request报文广播,由于不知道PC2的MAC地址,广播询问谁是.10.2。
          2---发送方标注自己IP和MAC地址,目标IP、MAC地址是全F。
          image

        4. 1---PC2接收到ARP request报文,对比目标IP确定是在询问自己。
          2---PC2记录PC1的IP和MAC地址在自己的ARP缓存表。
          3---PC2通过单播发送ARP reply报文,其中包含自己的IP和MAC地址。
          image-20240908163827-vtb1vat

        5. PC1收到来自.10.2的单播报文,记录下PC2的IP和MAC地址到ARP缓存表,至此双方形成记录
          image-20240908164607-tgv58vm

          image-20240908164540-7mfe6hs

          image-20240908165004-25car6i

      • 总结

        • ARP缓存表不是永久的,会根据设备变动而变动
        • 广播和单播的区别
        • image-20240908174144-05n9mas

标签:02,ARP,参考模型,报文,网络,TCP,发送,MAC,数据
From: https://www.cnblogs.com/cn-cabbage/p/18403630/02-network-reference-model-vgfxy

相关文章

  • 【原】2024年系统规划与管理师案例知识点学习笔记
    第三章 信息技术服务知识1、ITSM的目标及原理(1)目标:以客户为中心提供IT服务;提供高质量、低成本的服务;提供的服务是可准确计价的;(2)原理:二次转换。第一次为梳理,将技术管理转换为流程管理;第二次为打包,将流程管理转换为服务管理。2、质量管理的过程质量策划、质量控制、质量保证、......
  • 20240909_031725 c语言 执行输出语句的流程
    源代码-》编译后代码-》可执行代码下图为可执行代码的示例路径:......
  • 每天五分钟玩转深度学习框架PyTorch:将nn的神经网络层连接起来
    本文重点前面我们学习pytorch中已经封装好的神经网络层,有全连接层,激活层,卷积层等等,我们可以直接使用。如代码所示我们直接使用了两个nn.Linear(),这两个linear之间并没有组合在一起,所以forward的之后,分别调用了,在实际使用中我们常常将几个神经层组合在一起,这样不仅操作方便,而且......
  • BZOJ 4502 串 题解
    妙妙数数题key:数数题通常是,对于特定形式的计数,就盯着这个模式观察,看出一些充要条件、计数形式的转化,然后想办法维护。优化的本质就是把难算的变成好算的,把不好一起统计的(只能一个个数的)以某种角度、用某些数据结构,一起统计(多个多个数)。我觉得难点通常在于“盯出一些充要条件”,......
  • 02 Flask-快速上手
    创建项目文件从电脑选择一个盘符(来存放之后学习的项目文件)这里选择以电脑C盘的桌面来做演示在选择的盘符里面创建一个文件夹(来保存之后的学习文件)使用poetry创建一个初始配置项(pyproject.toml)详情参考poetryinit创建虚拟环境poetryenvusepython......
  • 2024/9 4-8 笔记
    [CCO2017]接雨滴题目描述晚上,夜黑风高,大雨疯狂地从天而降。Lucy想要接住一些雨滴,但她只有有限的工具。她有一套不同高度的柱子来接住雨滴。每根柱子的高度为整数,宽度为\(1\)。她排列好柱子之后,就会用其他器具夹紧柱子,来让雨滴顺利地储存在柱子的间隙里。你可以认为雨滴的数......
  • 20240909_011725 c语言 预处理
    在C语言中,第一行#include<stdio.h>是一个预处理指令,用于包含(或说,导入)标准输入输出库(StandardInputOutputLibrary)的头文件。这个库提供了进行输入输出操作的函数,比如printf()用于在屏幕上显示输出,scanf()用于从键盘读取输入等。具体来说:#include是一个预处理指令,告诉编译器......
  • 【深度学习】嘿马深度学习笔记第8篇:卷积神经网络,学习目标【附代码文档】
    本教程的知识点为:深度学习介绍1.1深度学习与机器学习的区别TensorFlow介绍2.4张量2.4.1张量(Tensor)2.4.1.1张量的类型TensorFlow介绍1.2神经网络基础1.2.1Logistic回归1.2.1.1Logistic回归TensorFlow介绍总结每日作业神经网络与tf.keras1.3神经网络基础......
  • 20240909_021725 c语言 骨架结构
    关注骨架结构明确intmainreturn0的意义与功能......
  • CCPC2024 网络预选赛游记
    没啥可写的啊。考前一天晚上和考试上午做了几套cf。就上来50分钟三个人一直刷新,刷到40分钟刷出来两道签到题题面,然后签了。后来分头开题,J按位确定15分钟,他俩写了3题我都没确定出来,给车昱辉做他说线性基两下就行了。然后做了一个I,读了半天题没读明白。然后题干改写成了每个人......