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

【计网】TCP/IP四层模型(一)

OSI七层模型

在这里插入图片描述
OSI(Open Systems Interconnection)七层模型是国际标准化组织(ISO)提出的网络通信框架,用于标准化不同厂商设备之间的通信流程。

  1. 物理层(Physical Layer)​​
    ​​作用​​:传输原始比特流(0和1),定义物理介质(电缆、光纤、无线)的电气、机械特性(如电压、接口形状)。
    ​​关键协议/设备​​:网线、光纤、集线器(Hub)。 ​​通俗比喻​​:相当于“公路”本身,负责车辆(数据)的物理运输。

  2. 数据链路层(Data Link Layer)​​ ​​作用​​: 将比特流组织成​​帧(Frame)​​,进行差错检测(如CRC校验)。
    通过MAC地址实现同一局域网内设备的直接通信(如交换机转发)。
    ​​关键协议/设备​​:以太网(Ethernet)、MAC地址、交换机(Switch)。
    ​​通俗比喻​​:像“邮递员”,在同一个社区(局域网)内根据门牌号(MAC地址)精准投递信件(数据帧)。

  3. 网络层(Network Layer)​​
    ​​作用​​:
    通过​​IP地址​​实现不同网络间的路由选择(如路由器跨网转发)。
    解决拥塞控制、分组拆分与重组。
    ​​关键协议/设备​​:IP协议、路由器(Router)、ICMP(Ping)。
    ​​通俗比喻​​:像“GPS导航系统”,规划跨城市(跨网络)的最佳路径(路由),确保包裹(IP数据包)到达目标城市。

  4. 传输层(Transport Layer)​​ ​​作用​​:
    提供端到端(应用程序到应用程序)的可靠传输(如TCP)或高效传输(如UDP)。
    通过​​端口号​​区分不同服务(如80端口对应HTTP)。 ​​关键协议​​:TCP(可靠传输)、UDP(快速传输)。
    ​​通俗比喻​​:像“快递公司”,TCP是顺丰(保证包裹不丢失),UDP是普通邮政(可能丢件但速度快)。

  5. 会话层(Session Layer)​​ ​​作用​​: 建立、管理、终止应用程序之间的会话(如断点续传、身份验证)。
    解决“谁可以通信”和“如何同步通信”问题。 ​​关键协议​​:RPC(远程过程调用)、SSH会话。
    ​​通俗比喻​​:像“电话秘书”,负责拨通电话(建立会话)并在通话结束后挂断(终止会话)。

  6. 表示层(Presentation Layer)​​ ​​作用​​: 数据格式转换(如加密/解密、压缩/解压、字符编码转换)。
    确保发送方和接收方“说同一种语言”。 ​​关键协议​​:SSL/TLS(加密)、JPEG/MPEG(多媒体编码)。
    ​​通俗比喻​​:像“翻译官”,将中文(发送方数据格式)翻译成英文(接收方可读格式)。

  7. 应用层(Application Layer)​​ ​​作用​​:直接面向用户提供网络服务(如网页浏览、邮件发送)。
    ​​关键协议​​:HTTP(网页)、FTP(文件传输)、SMTP(邮件)。
    ​​通俗比喻​​:像“手机APP”,用户直接操作微信(应用层)发送消息,无需关心底层如何传输。

TCP/IP四层(或五层)模型

OSI七层模型理论完整,但在实际中并未被完全采用,而是将其简化为了TCP/IP四层模型,降低了复杂性,减少了冗余,应用更为广泛。
TCP/IP四层模型:

  • 网络接口层(物理+数据链路)
  • 网络层(IP)
  • 传输层(TCP/UDP)
  • 应用层(会话+表示+应用)
    TCP/IP五层模型:
  • 物理层(硬件)
  • 数据链路层(mac)
  • 网络层(IP)
  • 传输层(TCP/UDP)
  • 应用层(会话+表示+应用)

在这里插入图片描述
在这里插入图片描述

为什么要有TCP/IP协议

TCP/IP协议是互联网的基础通信协议,它的存在解决了​​不同设备、不同网络之间的互联互通问题​​。

  • 在早期互联网中,计算机是由不同厂商各种使用自己的通信协议来进行通信,不同计算机之间不能实现互联互通,而TCP/IP定义了一套完整的通信协议,就想你和朋友之间有一个暗号一样,就算没有互相看见彼此,也能通过暗号识别出对方,而TCP/IP也是这样,定义了一套完整的通信协议,屏蔽了底层差异,只要能够支持TCP/IP的计算机就能够进行通信。
  • 随着两台主机之间距离变远,如何保证数据传输过程不会发生丢失,如何保证数据准确传输到对方主机上,如何保证对方主机能够识别出我发送的消息等一系列问题出现,为了解决这些问题,就出现了TCP/IP协议,所以协议本质上是一种解决问题的方案。

网络传输基本流程

局域网通信

为了实现两台主机在同一个局域网之间能够通信,那就要保证,主机之间的唯一性,而 MAC地址 就是用来标识主机之间唯一性的。

MAC地址
  • MAC用来识别数据链路层中相连的节点
  • 长度为 48 位,一般用16进制加上冒号的形式来标识,(例如:08:00:27:03:fb:19),在电脑上命令窗口输入 ipconfig /all就可以查看到自己主机的MAC地址
  • MAC地址在网卡出厂时候就已经设定,不能修改,通常是唯一的(虚拟机中的MAC地址是虚拟的MAC地址,可能会冲突,有些网卡也支持用户自定义MAC地址)。
局域网通信
早期局域网通信过程
  • 在以太网中,同一时刻只允许一台机器向网络中发送消息
  • 如果有多台主机同时发送消息,就会发生数据碰撞
  • 所有发送数据的主机都需要进行碰撞检测和碰撞避免
  • 没有交换机的情况下,一个以太网就是一个碰撞域
  • 早期局域网通信,没有交换机的情况下,主机发送消息给其他主机是通过广播的形式发送的,每台主机都能收到消息
  • 主机确认收到的是否是发给自己的是通过确认目标MAC地址是否是自己
现代局域网通信
  • 现代局域网通信每台主机独立交换机端口,相当于每台主机都有一个专用的电话线,不会发送消息碰撞。
局域网通信过程(图解)

在这里插入图片描述
当我们发送你好的时候,需要经过TCP/IP四层模型,每经过一层都需要进行封装报头,在传输给另一台主机的时候,另一台主机就需要对封装的报文进行解包和分用,传输给上层
在这里插入图片描述

报文
  • 报头对应协议层的结构体字段
  • 除去报头,剩下的就叫做有效载荷
  • 报文 = 报头 + 有效载荷
数据包封装过程

当数据从应用层向下传递时,每一层都会添加自己的头部(Header),形成新的数据单元:

  • ​​应用层​​:生成原始数据(如HTTP请求)。 ​​
  • 传输层​​:添加 ​​TCP/UDP头​​ → 形成​​段(Segment)或数据报(Datagram)​​。
  • ​​网络层​​:添加 ​​IP头​​ → 形成 ​​数据包(Packet)​​。
  • ​​数据链路层​​:添加 ​​MAC头 + CRC校验​​ → 形成 ​​帧(Frame)​​。
  • 物理层​​:转换为 ​​比特流(Bit Stream)​​ 发送到网络。
    在这里插入图片描述

不同协议层对数据包有不同的称呼:

  • 物理层:比特流
  • 数据链路层: ​​帧(Frame)
  • 网络层:数据包(Packet) 或 ​​IP数据报(IP Datagram)​
  • 传输层:TCP(段(Segment))和 UDP(数据报(Datagram))
  • 应用层:​​消息(Message)​​ 或 ​​数据流(Data Stream)​
数据分用的过程

在这里插入图片描述

跨局域网传输(广域网传输)

IP地址

IP地址有两个版本IPV4和IPV6
IPv4 vs IPv6 特性对比

特性IPv4IPv6
地址长度32位(4字节)128位(16字节)
表示形式点分十进制(如 192.168.1.1冒号分十六进制(如 2001:0db8:85a3::8a2e:0370:7334
地址总数约43亿(2³²)约3.4×10³⁸(2¹²⁸)
分块大小每段8位(0-255)每段16位(0-FFFF)
地址类型单播、组播、广播单播、组播、任播(取消广播)
报文头大小20-60字节(可变)固定40字节
NAT必需(地址不足)可选(地址充足)

关键区别说明

  1. 地址空间

    • IPv4仅支持约43亿地址,早已耗尽(依赖NAT缓解)
    • IPv6地址数量足够为地球每粒沙子分配一个IP
  2. 地址表示

    • IPv4使用点分十进制(4段,每段0-255)
    • IPv6使用冒号分十六进制(8段,每段0-FFFF),支持压缩写法(::替换连续全零段)
  3. 性能优化

    • IPv6固定40字节报文头,去除了校验和等字段
    • 取消广播,改进组播和任播支持
    • 原生支持移动IP和QoS标记
网络通信过程(图解)

在这里插入图片描述
在这里插入图片描述
网络通信过程中IP地址和MAC地址区别:

  • 源IP地址和目的IP地址在整个通信过程中一直不变。
  • 源MAC地址和目的MAC地址在整个通信过程中一直变。
  • MAC地址用于局域网中通信,IP地址用于广域网中通信
端口号

端口号是传输层协议的内容

  • 端口号是一个2字节16位的整数
  • 端口号用来标识主机上的唯一进程
  • IP地址 + 端口 用来标识唯一主机上的唯一进程
  • 一个端口号只能被一个进程占用
端口号范围
  • 0 - 1023: 知名端口号, HTTP(80), FTP(20和21), SSH(22) 等这些广为使用的应用层协议, 他们的
    端口号都是固定的
  • 1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作
    系统从这个范围分配的
    (一个进程可以绑定多个端口号,但一个端口号只能被一个进程绑定)
端口号和进程ID

标识唯一进程可以用进程的pid来标识,这里为什么还要用到端口号呢,那是为了解耦,防止网络编程和系统进程管理强耦合。

http://www.xdnf.cn/news/349903.html

相关文章:

  • [硬件电路-18]:MCU - LPC1765FBD100是恩智浦(NXP)半导体推出的一款基于ARM Cortex-M3内核的高性能32位微控制器
  • 如果说开启的TIM3定时器有ccr1,ccr2,ccr3,我想要关闭ccr2的PWM输出,怎么通过代码实现
  • AI优化高频PCB信号完整性:猎板PCB的技术突破与应用实践
  • 多环串级PID
  • 主场景 工具栏 植物卡牌的渲染
  • 从“看不见”到“一目了然”:网络流量分析与监控大屏
  • 手撕基于AMQP协议的简易消息队列-6(服务端模块的编写)
  • 云计算运维
  • vue实现半圆转盘旋转(门户网页上)
  • 企业级UI测试的“双保险”:TestComplete的智能对象识别与详细报告功能
  • 二叉搜索树的插入操作(递归遍历)
  • 力扣-142.环形链表II
  • 引文索引数据库在科研中的应用
  • 问题 | 低空经济未来发展前景机遇及挑战
  • BFS算法的学习
  • 腾讯云:数字世界的“量子熔炉”与硅基文明引擎​
  • 数据结构-堆排序
  • Houdini 深圳实操交流会!即将开幕
  • 代码随想录第39天:单调栈
  • VBA经典应用69例应用8:利用VBA,完成自动运行任务的预设
  • xiaopiu原型设计工具笔记
  • Windows 环境变量完全指南:系统变量、用户变量与 PATH 详解
  • 在不同环境下部署和运行基于后量子密码的轻量级通信协议的详细指南
  • pm2如何执行脚本批量启动多个服务
  • 认识守卫-以及简单的示例和装饰器
  • Java网络编程:理解URI、URL和URN
  • python线上学习进度报告
  • Android13 权限管理机制整理
  • 308.旅行终点站
  • 正点原子IMX6U开发板移植Qt时出现乱码