02网络参考模型

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794221.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《痞子衡嵌入式半月刊》 第 107 期

痞子衡嵌入式半月刊: 第 107 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

鼠标悬停显示的轮播图

今日整理,发现这种轮播图是最难实现的一种, 1.再循环中难以控制单一品类商品显示 解决办法: 在外面的主类里面添加&:hover触发标签属性的更改,这样可以单一作用 2.在循环中触发事件,所有的同一事件都会触发 解决办法:先建立模版控制排版,再从单一内容开始微调 <script s…

如何把网页的公式优雅地拷贝到word中:数学公式识别神器—Mathpix Snip

这个编辑器其实在把chatgpt的公式粘贴到word中时就已经使用了,用的是网页版。 现在下载了软件(但是好像一个月试用期过后得收费?但是就目前来说,体验感真的超级好) 把公式复制粘贴转成mathtype公式 可以截取电脑屏幕上的图像,如果图像上面有公式的话,就会识别,之后可以…

Redis 入门 - 图形化管理工具如何选择,最全分类

Redis图形化管理工具可分为四类:命令行工具、桌面客户端工具、网页工具、插件工具。看看哪一款适合你呢?工欲善其事必先利其器,上一章Redis服务环境已经搭建完成,现在就需要一个趁手的工具,有个好工具可以做到事半功倍。 Redis图形化管理工具五花八门,可供选择的很多,大…

Javaweb-事务

注意在当前窗口是修改了的:而在其他窗口是不修改的:select @@autocommit;修改为手动提交:

格路计数

前言 完全借鉴于 洛谷日报 前提条件 在一个网格图上, 每一次可以从 \((x,y)\) 走到 \((x+1,y-1)\) 或者 \((x+1,y-1)\) 限制是一条直线 \(y=k\) 题外话 我们其实可以发现这和每一次可以从 \((x,y)\) 走到 \((x+1,y)\) 或者 \((x, y+1)\) 限制是一条 \(45\)的斜线 \(y=x+k\) 是等…

9.2-9.8 总结

zhicheng123456做题 因为联考众多,所以说只有不多的做题。主要得知了两个结论:找树剖到根的轻链(动态)的方法和把线段(均匀随机分界点)分为 \(n\) 段的 \(k\) 短值的计算。 联考:https://www.cnblogs.com/british-union/p/liankao.html 还是时常在简单的东西上失败,但是…

第一章预习作业

第一周预习报告 学习内容《WindowsC/C++加密解密实战》第1,2章 第一章概念复习 第二章主要在Linux(Ubuntu,openEuler)上把软件更新到最新版(3.0版本以上),如果默认不是,参考下面脚本。 AI对学习内容的总结 要求 让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可使…

9月第一周漏洞学习

蜂信物联(FastBee)物联网平台download存在任意文件下载漏洞 漏洞描述 FastBee是一款开源物联网平台,致力于为全球开发者提供稳定、搞笑的物联网解决方案。FastBee在download接口中存在任意文件下载漏洞,可能导致敏感信息泄露、数据盗窃及其他安全风险,从而对系统和用户造成…

AtCoder Beginner Contest 252 A~G 题解

前言这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持!A - ASCII code 题目大意 给定正整数\(N\),输出ASCII码是\(N\)的字母。 \(97\le N\le 122\) 输入格式 \(N\) 输出格式 输出ASCII码是\(N\)的字母。 分析 注意…

苯乙烯

周线 日线: 60分钟: 短线看能否走出下跌五浪吧:观望

AtCoder Beginner Contest 205 A~E 题解

A - kcal 题目大意 我们有一种每\(100\)毫升含有\(A\)千卡热量的饮料。\(B\)毫升的这种饮料含有多少千卡热量? \(0\le A, B\le 1000\) 输入格式 \(A~B\) 输出格式 输出\(B\)毫升这种饮料包含的的千卡数。最大允许浮点数精度误差\(10^{-6}\)。 样例\(A\) \(B\) 输出\(45\) \(20…