当前位置: 首页 > ds >正文

【网络编程】TCP/IP四层模型、MAC和IP

1. TCP/IP的四层模型

网络模型的目的:规范通信标准,确保不同设备和系统之间能够有效通信

对比OSI模型与TCP/IP模型:

  • OSI模型的七层架构(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
  • TCP/IP模型的四层架构(网络接口层、互联网层、传输层、应用层)

在这里插入图片描述

2. 每一层的功能及其对应的协议

在这里插入图片描述

3. 数据链路层的工作机制

3.1.1. 数据链路层工作机制

  • 数据链路层的主要任务是提供节点到节点之间可靠的数据传输。
  • 它通过将网络层传来的数据封装成帧(Frame)来实现****,这些帧通过物理介质在局域网中传输。

常见的数据链路层协议是以太网协议(Ethernet)

  • 帧的封装:在数据链路层,网络层的数据包(如IP包)被封装成数据帧。帧通常包含以下几个部分:
    • 帧头(Header):包括源MAC地址、目标MAC地址、帧类型/长度等信息。
    • 数据部分(Payload):包含要传输的IP数据包。
    • 帧校验序列(FCS, Frame Check Sequence):用于检测数据在传输过程中是否发生错误。
  • CSMA/CD机制(以太网有线网络)
    • 载波监听多路访问/碰撞检测(CSMA/CD, Carrier Sense Multiple Access with Collision Detection) 是经典的以太网机制,用于检测和处理数据帧的冲突。
    • 当一个网络设备准备发送数据时,它首先监听网络介质。如果介质空闲,设备就开始发送数据;如果检测到数据冲突(如两个设备同时发送数据),设备会停止发送,等待一个随机的时间段再重试。
  • MAC地址的使用:MAC地址是硬件地址,是每个网络设备的唯一标识符。数据链路层使用MAC地址来确定数据帧的发送方和接收方

3.1.2. MAC数据帧的封包格式(以太网)

在这里插入图片描述

3.1.2.1. IP层到MAC层的数据封装
  • IP数据报:在图的最上方,我们可以看到一个IP数据报,这是来自IP层的数据包,包含了网络层的目的地址和源地址。
  • MAC帧结构
    • 目的地址(6字节):目标设备的MAC地址,用于标识数据包的接收者。
    • 源地址(6字节):源设备的MAC地址,用于标识数据包的发送者。
    • 类型/长度字段(2字节):标识上层协议类型(如IPv4或IPv6)或表示数据长度。
    • 数据字段(46到1500字节):实际传输的数据部分,这里承载的是IP数据报。
    • 帧校验序列(FCS)(4字节):用于检验帧在传输过程中是否出错。

46~1500个字节,46是因为以太网MAC帧长不能小于64字节。1500是因为以太网的最大传输单元(MTU)是1500字节

3.1.2.2. MAC层到物理层的数据封装
  • 前同步码(7字节):以太网帧的前导部分,用于接收方的同步,帮助它识别帧的开始。通常由一组交替的10组成,例如:10101010...
  • 帧开始定界符(SFD, Start Frame Delimiter)(1字节):紧随前同步码之后,用于标识帧的正式开始。通常是固定的字节(10101011),与前同步码的最后一个字节不同。

8个字节,前7个都是_10101010_,最后一个是_10101011_;前7字节用于“唤醒”接收适配器,并将它们的时钟和发送方的时钟同步。第8个字节的最后两个比特(即两个‘1’)警告接收适配器重要的内容要来了。

3.1.2.3. 物理层上的表示
  • 物理层表示(黄色部分)
    • 数据在物理层上表示为一系列的比特流(0和1),这些比特流通过电信号或光信号在网络介质(如双绞线、光纤或无线电波)上传输。

3.1.3. MAC地址的结构

MAC地址可以分为两部分:

  • 前24位(3字节):组织唯一标识符(OUI, Organizationally Unique Identifier),由IEEE分配给设备制造商。例如,00:1A:2B
  • 后24位(3字节):设备标识符(NIC Specific),由制造商自行分配,确保在其生产的设备中唯一。例如,3C:4D:5E

一个示例MAC地址:00:1A:2B:3C:4D:5E

https://www.wavecn.com/mac.php (这个网站可以查看MAC地址信息)

4. 网络层机制

4.1. 网络层功能

网络层是位于传输层数据链路层之间的一个关键层。它的主要任务是负责在不同主机之间传输数据包,提供路由选择和逻辑地址的管理。在这层上工作的主要协议是IP协议。

网络层的主要功能包括

  1. 路径选择(Routing): 负责根据目标地址选择数据包的传输路径。
  2. 数据转发(Forwarding): 将数据包从一台路由器转发到下一台路由器,直至到达目的地。
  3. 逻辑地址管理(Logical Addressing): 通过IP地址来标识网络中的每一台设备,确保数据能够到达正确的目的地。
  4. 分片与重组(Fragmentation and Reassembly): 在网络层可以将大数据包分割成更小的数据包(分片),然后在目的地重新组装。

网络层是无连接的,也就是说,在发送数据包前,它不会为每一个通信会话建立连接,数据包的发送是独立的,且无状态的。每一个数据包都单独寻址和处理,这也是为什么网络层的通信被称为"尽力而为"的服务。

4.2. IP协议

4.3 IP数据包结构

在这里插入图片描述

  • 版本(Version): 指示IP协议的版本(如IPv4或IPv6)。
  • 头部长度(Header Length): 指定IP头部的长度。
  • 服务类型(Type of Service, ToS): 用于指定数据包的优先级。
  • 总长度(Total Length): 指定整个数据包的长度(包括头部和数据)。
  • 标识(Identification): 用于数据报的分片和重组。
  • 标志(Flags): 用于控制或标识分片。
  • 片偏移(Fragment Offset): 用于指示数据片在原始数据报中的位置。
  • 生存时间(Time to Live, TTL): 指定数据包的最大跳数(即经过的路由器数量),TTL为0时,数据包将被丢弃。
  • 协议(Protocol): 指示数据部分使用的协议类型(如TCP或UDP)。
  • 头部校验和(Header Checksum): 用于验证IP头部的完整性。
  • 源地址(Source Address): 指示数据包的发送方IP地址。
  • 目的地址(Destination Address): 指示数据包的接收方IP地址。
  • 选项(Options): 可选字段,用于提供更多的控制功能。
  • 数据(Data): IP数据包的实际数据部分,通常是传输层的数据。
http://www.xdnf.cn/news/2829.html

相关文章:

  • MySQL 的ANALYZE与 OPTIMIZE命令
  • 使用 ELK 实现全链路追踪:从零到一的实践指南
  • pycharm 配置路径映射 将本地文件映射(mapping)到远程服务器上
  • [Spring] Seata详解
  • Missashe考研日记-day29
  • 6.进程概念(中)
  • 智能指针之设计模式6
  • 项目立项管理
  • Android Studio 安装 Continue插件
  • 数据库中的主键(Primary Key)
  • uni-app vue3 实现72小时倒计时功能
  • css中:is和:where 伪函数
  • Dia-1.6B环境搭建推理测试
  • docker本地部署ClipCascade,实现跨设备剪贴板同步
  • 【大语言模型开发】BPE算法(Byte-Pair)
  • 跨端开发技术总结
  • Python爬虫实战:获取软科网最新特定专业大学排名数据并做分析,为高考填报志愿做参考
  • 逆向设计——CWDM_splitter
  • 10.Excel:快速定位目标值
  • QT—布局管理器之BoxLayout篇
  • 【Java ee初阶】多线程(4)
  • 培养一个输出型的爱好
  • Profinet 从站转 EtherNet/IP 从站网关
  • MATLAB实现神经网络的OCR识别
  • 爬虫学习笔记(三)--Http协议
  • CSS元素动画篇:基于页面位置的变换动画
  • leetcode 19. 删除链表的倒数第 N 个结点
  • [多彩数据结构] 笛卡尔树
  • 智能Python开发工具PyCharm v2025.1——AI层级功能重磅升级
  • Ajax 提交表单与文件上传