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

1.介绍一下TCP/IP模型和OSI模型的区别【中高频】

OSI模型 将 这个协议 划分为7个不同的层级,分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型只有4个层级,分别为网络接口层、网络层、传输层和应用层,其中应用层在用户态传输层及以下则工作在内核态
  1. 应用层

    • 最上层的,对应于 OSI模型中的应用层加上会话层和表示层。

    • 我们使用的 应用软件 都是在应用层实现,应用层 只需要专注于为用户提供应用功能,比如 HTTP、DNS、SMTP等,它并不关心数据是如何传输的(就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的)

  2. 传输层

    • 传输层其实就是 为 应用层 提供网络传输服务的,帮助实现 应用到应用 的通信。也对应于 OSI模型中的传输层

    • 在传输层有两个协议,分别是 TCP 和 UDP。

      • 大部分应用 使用的正是 TCP ,比如 HTTP 协议。TCP 比 UDP 多了很多特性,比如 流量控制、超时重传、拥塞控制等,可以保证数据包 的可靠传输。

      • UDP 相对来说比较简单,只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。其实,UDP 也可以实现可靠传输,需要我们在应用层上实现 TCP 的特性

    • 传输层的报文中会携带 端口号。在解封装时,可以通过端口号 来判断该报文该发往哪个应用(比如 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的)

  3. 网络层

    • 网络层负责将数据 从一个设备传输到另一个设备,也对应于 OSI模型中的网络层

    • 网络层最常使用的是 IP 协议(Internet Protocol)。IP 协议会将 传输层的报文 作为数据部分,再加上 IP 头部 组装成 IP 报文

    • IP 地址有 网络部分 和 主机部分 组成 ,可配合子网掩码来算出【注1】

      • 网络号 表示 该 IP 地址是属于哪个「子网」的;

      • 主机号 表示 同一「子网」下的不同主机

      • 在寻址的过程中,先匹配到相同的网络号(表示要找到同一个子网),然后在去找对应的主机号

    • 除了寻找IP地址, IP 协议还有一个功能就是 路由。两台设备会有很多路径,就需要通过路由选择算法 来决定下一步走哪条路径

  4. 网络接口层

    • 网络接口层 主要为网络层提供链路传输的服务,对应于OSI模型的 物理层+数据链路层

    • 具体工作是:在 IP 头部的前面加上 MAC 头部MAC 头部包含了 接收方和发送方的 MAC 地址等信息,我们可以通过 ARP 协议获取对方的 MAC 地址

      img

img

虽然OSI模型在理论上更为全面,但我们应用更多的还是TCP/IP模型。

【注1】

  • 比如 10.100.122.0/24,后面的/24表示就是 255.255.255.0 子网掩码,255.255.255.0 二进制是「11111111-11111111-11111111-00000000」,为了简化子网掩码的表示,用/24代替255.255.255.0

  • 将 10.100.122.2 和 255.255.255.0 进行按位与运算,就可以得到网络号

img

  • 同理,将 255.255.255.0 取反后与 IP地址 进行 按位与运算,就可以得到 主机号

【注2】

  • 网络接口层的传输单位是 帧(frame)

  • IP 层的传输单位是 包(packet)

  • TCP 层的传输单位是 段(segment)

  • HTTP 的传输单位则是 消息或报文(message)

但这些名词并没有什么本质的区分,可以统称为 数据包

相关文章:

  • ubuntu22.04 如何扩根目录空间,当空间不够时
  • C++---了解STL
  • Github 2025-02-25 Python开源项目日报 Top10
  • Metal 学习笔记三:渲染管线
  • Chromedriver与Chrome版本映射表
  • 机器视觉--相机曝光
  • HITCON2017SSRFME-学习复盘
  • 【大语言模型】【整合版】DeepSeek 模型提示词学习笔记(散装的可以看我之前的学习笔记,这里只是归纳与总结了一下思路,内容和之前发的差不多)
  • Day8 蓝桥杯acw讲解
  • Rust 驱动的 Python 工具革命:Ruff 和 uv 与传统工具的对比分
  • nodejs:express + js-mdict 作为后端,vue 3 + vite 作为前端,在线查询英汉词典
  • 【由技及道】SpringBoot启动即退出的量子纠缠诊断实录【人工智障AI2077的开发问题日志】
  • JavaScript函数-函数案例
  • VScode中Markdown PDF无法正确输出包含数学公式的pdf解决方案
  • C# Combox 绑定数据
  • 详解 Spring 配置数据源的两种方式
  • 【Linux】进程控制
  • 代码审计入门学习
  • CCA社群共識聯盟正式上線
  • N皇后问题(位运算版本)
  • 俄外交部:俄乌伊斯坦布尔谈判改在当地时间15日下午举行
  • 国防部:赖清德歪曲二战历史,背叛民族令人不齿
  • 四个“从未如此”使巴以加沙战火绵延时间创下历史之最
  • 北方产粮大省遭遇气象干旱,夏粮用水如何解决?
  • 张涌任西安市委常委,已卸任西安市副市长职务
  • 中国乒协坚决抵制恶意造谣,刘国梁21日将前往多哈参加国际乒联会议