avatar

Ycyofmine’s Blog

云鸮雨霁

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
首页 OSI与TCP/IP分层模型及各层协议介绍
文章

OSI与TCP/IP分层模型及各层协议介绍

发表于 2024/11/14
作者 Ycyofmine
11 分钟阅读

分层模型

OSI

共七层,属于学院派。

  1. 物理层
  2. 链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表达层
  7. 应用层

TCP/IP

属于实践派。 共五层,属于实践派。

  1. 物理层
  2. 链路层
  3. 网络层
  4. 传输层
  5. 应用层

与OSI相比,OSI的会话层、表达层被囊括进应用层了。

层的具体含义

  1. 物理层

    设备与设备之间用来链接的网线

  2. 链路层

    mac地址

  3. 网络层

    IP协议

  4. 传输层

    TCP/UDP协议

  5. 应用层

    HTTP协议、FTP协议

层内解析协议

内层协议拆包时,要把外层协议都拆一遍,如果发现这个包要丢弃掉,直接丢弃。 如果需要继续传输,则按层级顺序将数据重新用协议包裹。如果是继续解析,则把当前层的协议头移除。

  1. 物理层

    主机感知到从网线发来的电信号,确定是噪声还是有意义的电信号。

  2. 链路层

    基于以太网,确认信号是发给这台主机的,还是需要本机进行路由转发。

  3. 网络层

    确认由主机的哪个服务来处理他:Web服务、FTP服务、SSH服务。

  4. 传输层

    确认信号是没有丢失、完整无缺的。

  5. 应用层

    确认信号是JSON的字符串还是gRPC的二进制字节流。

传输层协议

TCP

  • 优点:TCP可靠、稳定。

    TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

  • 缺点:慢,效率低,占用系统资源高,易被攻击

    TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。

符号含义

  1. SYN:同步标志位,用于建立会话连接,同步序列号;
  2. ACK:确认标志位,对已接收的数据包进行确认;
  3. FIN:完成标志位,表示我已经没有数据要发送了,即将关闭连接;

三次握手过程

  1. 第一次握手:客户端发送一个带 SYN 标志的请求包给服务器,请求建立连接,并进入 SYN_SENT 状态。
  2. 第二次握手:服务器收到请求后,发送一个带 SYN 和 ACK 标志的包,确认收到请求并同意建立连接,同时进入 SYN_RECEIVED 状态。
  3. 第三次握手:客户端收到服务器的确认后,发送一个带 ACK 标志的包给服务器,进入 ESTABLISHED 状态,连接建立完成。

三次握手原因

防止失效的连接请求包突然到达服务器而建立错误连接。三次握手确保双方都确认连接的存在和有效性。

四次挥手过程

  1. 第一次挥手:主机A发送一个带有 FIN 标志的数据包,表示它要终止发送数据。A进入 FIN_WAIT_1 状态。
  2. 第二次挥手:主机B收到 FIN 后,回复一个带有 ACK 标志的确认包,表示同意终止A的发送方向。B进入 CLOSE_WAIT 状态,A进入 FIN_WAIT_2 状态。
  3. 第三次挥手:主机B完成它的所有数据发送后,发送一个带有 FIN 标志的数据包,表示它也要关闭连接。B进入 LAST_ACK 状态。
  4. 第四次挥手:主机A收到 FIN 后,发送一个带有 ACK 标志的确认包,进入 TIME_WAIT 状态,等待一段时间后,进入 CLOSED 状态。B在收到 ACK 后立即进入 CLOSED 状态。

注意

  • 谁发起挥手:可以是任何一方发起。
  • TIME_WAIT:发起关闭的一方需要进入 TIME_WAIT 状态以确保对方收到 ACK,从而避免遗留的延迟包对后续连接产生干扰。

为什么连接的时候是三次握手,关闭的时候却是四次挥手?

三次握手中,第二次握手服务端同时发送SYN和ACK两个包,用于确认和建立连接,这时他们并没有传输数据。但是挥手的时候不能同属发送SYN和ACK两个包,因为主机A发起停止请求后,主机B数据并未传输完,只会发回一个ACK包,FIN包后续发送。

客户端为什么要等待一段时间再释放资源

  1. 客户端在第四次挥手后发送 ACK 确认包,但不确定服务器是否成功接收。这条确认报文在传送到服务器的过程中损坏、丢失或超时,将引起服务器重新发送FIN报文,客户端需要再次回复 ACK,因此必须保持资源一段时间。

  2. 避免网络中遗留的旧连接报文被误认为新连接的有效数据。等待时间可确保所有旧报文过期,以防连接混淆。

应用层协议

Http 与 Https

HTTP 协议与特性

1. HTTP 基础概念

  • HTTP 是什么:基于 TCP 协议的应用层传输协议,采用无状态、短连接的方式,每次请求完成后会关闭连接,不记录客户端状态。
  • 常见请求方式:
    • GET:获取资源。
    • POST:提交数据。
    • PUT:更新资源。
    • DELETE:删除资源。

2. 请求与响应结构

  • 请求信息:
    • 请求行:请求方法、地址、协议。
    • 请求头:键值对形式的头信息。
    • 请求正文:存在于 POST 请求中,传递数据。
  • 响应信息:
    • 响应行:协议、状态码、状态描述。
    • 响应头:键值对形式的头信息。
    • 响应正文:返回的内容。

3. HTTP 版本比较

  • HTTP 1.0 与 HTTP 1.1:
    • HTTP 1.0 一次只能处理一个请求与响应;HTTP 1.1 支持多请求多响应。
    • HTTP 1.1 增加了持久连接、Host 头等功能。
  • HTTP 2.0:
    • 使用二进制格式传输数据,提高效率。
    • 消息头采用 HPACK 算法压缩,减少冗余。
    • 支持多路复用,多个请求可复用一个 TCP 连接。
    • 引入 Server Push 技术,服务端可主动推送资源。

4. HTTP 与 HTTPS

  • HTTPS 的特点:
    • HTTPS = HTTP + SSL/TLS,提供加密传输。
    • 工作层次:HTTP 位于应用层,HTTPS 位于传输层。
    • 默认端口:HTTP 使用 80,HTTPS 使用 443。
    • 需要数字证书进行身份认证。

5. 视频上传为何不使用 HTTP

  • 原因:
    • 视频文件较大,使用 POST 请求会将数据缓存在内存中,影响效率。
    • 通常采用更高效的传输协议(如 FTP 或专用服务)。

参考:

Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)

什么是OSI七层模型?什么是TCP/IP协议五层模型?——五分钟理解网络分层模型

五分钟理解:TCP/IP协议中网络包层层嵌套的涵义。必须要一层套一层吗,不可以干净利落一点直接传输吗?不可以!

一文彻底搞懂 TCP三次握手、四次挥手过程及原理

网络
计网
本文由作者按照 CC BY 4.0 进行授权
分享

最近更新

  • ROS2中并发连接蓝牙手柄排错过程
  • 自行编译ros2-humble-plotjuggler
  • Ubuntu 22.04上蓝牙无法打开——(MT7922网卡为例)
  • Isaac sim遥操作控制
  • RPC:原理、组成与局限性
外部链接
  • codetime
  •  此博客的 Github 仓库

文章内容

相关文章

2025/05/08

RPC:原理、组成与局限性

1.什么是RPC RPC 全称 Remote Procedure Call ——远程过程调用。在分布式系统高速发展的今天,大量服务被部署在不同服务器上,服务器之间的系统、CPU指令集、大小端策略各有不同,如何高效、无感地调用服务就是RPC的目标。 2.RPC核心组成 RPC核心组成如下: client(服务调用者) stub(本地存根,也分为调用端和服务端的本地存根) ...

GAMES104 09.高级动画技术:动画树、IK和表情动画

LyraStarterGame 01.默认地图传送门加载

© 2025 Ycyofmine. 保留部分权利。

本站采用 Jekyll 主题 Chirpy

热门标签

games104 UE c++ robot OS 装机 计网 essay

发现新版本的内容。