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

【网络编程】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数据包的实际数据部分,通常是传输层的数据。

相关文章:

  • npm init、换源问题踩坑
  • 杰理-安卓通过map获取时间的时候,部分手机切换sbc和aac时候单耳无声音
  • redis+lua+固定窗口实现分布式限流
  • AcWing 885:求组合数 I ← 杨辉三角
  • seaborn数据统计可视化-介绍
  • 业绩回暖、股价承压,三只松鼠赴港上市能否重构价值锚点?
  • 道可云人工智能每日资讯|“人工智能科技体验展”在中国科学技术馆举行
  • GTC2025全球流量大会:领驭科技以AI云端之力,助力中国企业出海破浪前行
  • SECS-I vs HSMS-SS vs HSMS-GS 通信控制对比明细表
  • 可编程控制器应用
  • 《Go 语言高并发爬虫开发:淘宝商品 API 实时采集与 ETL 数据处理管道》
  • jenkins容器提示磁盘空间过低
  • 记一次pdf转Word的技术经历
  • pdf.js移动端预览PDF文件时,支持双指缩放
  • EasyCVR视频汇聚平台助力大型生产监控项目摄像机选型与应用
  • 多模态大型模型,实现以人为中心的精细视频理解
  • Golang|分布式索引架构
  • Go 语言入门:(一) 环境安装
  • uniapp 微信小程序遇到的坑
  • 8.Three.js中的 StereoCamera 立体相机详解+示例代码
  • 财政部农业农村司司长吴奇修接受纪律审查和监察调查
  • 第五届全国医院人文管理路演在昆山举办:患者体验才是温度计
  • 日韩 “打头阵”与美国贸易谈判,汽车、半导体产业忧虑重重
  • 上海乐高乐园建设进入最后冲刺,开园限量纪念年卡将于5月开售
  • 4月份全国93个国家气象站日最高气温达到或突破极值
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等