OSI 参考模型和 TCP/IP 参考模型

数据通信是很复杂的,很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议,每一层都有一套清晰明确的功能和任务,这些功能和任务相对独立,这样就可以把复杂的网络问题分解成一层一层简单的模块;每一层都对上一层通过接口提供一定的服务,高层不需要了解低层的工作机制、使用设备和技术细节,只需知道低层通过接口提供哪些服务。

目前,最典型的计算机网络体系结构有 OSI 参考模型和 TCP/IP 参考模型。

OSI 参考模型:

OSI 参考模型将整个网络的通信功能分为七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI 参考模型是法律标准。
在这里插入图片描述

TCP/IP 参考模型:

TCP/IP 参考模型包括四层,自下而上分别是网络接口层、网络层、传输层、应用层。现实生活中的网联网世界用的就是 TCP/IP 模型。

TCP/IP 参考模型对 OSI 参考模型的分层进行了合并,将应用层、表示层、会话层合并为了应用层,将数据链路层、物理层合并为了网络接口层。
TCP、UDP 协议属于传输层。
超文本传输协议 HTTP、文件传输协议 FTP、域名系统 DNS 属于应用层。

在这里插入图片描述

TCP 协议的三大阶段:

在这里插入图片描述

  1. 建立连接(三次握手):建立连接的阶段通信双方会传输三个 TCP 段,称为三次握手。
    • 握手 1:客户端给服务器端发送 SYN 段,表示客户端向服务器端请求连接。
    • 握手 2:服务器端给客户端发送 TCP 段,这个段既是 SYN 段,也是 ACK 段,表示服务器端确认接受客户端的连接,并且服务器端向客户端请求连接。
    • 握手 3:客户端给服务器端发送 ACK 段,表示客户端确认接受服务器端的连接。
  2. 传输数据:是全双工通信。客户端可以给服务器发送数据,服务器也可以给客户端发送数据。
  3. 释放连接(四次挥手):释放连接的阶段通信双方会传输四个 TCP 段,称为四次挥手。
    • 挥手 1:客户端向服务器端发送 FIN 段,表示客户端向服务器释放连接。
    • 挥手2:服务器端向客户端发送 ACK 段,表示服务器端确认释放客户端的连接。此时,客户端无法再给服务器发送数据,只能服务器给客户端发送数据。
    • 挥手 3:服务器端向客户端发送 FIN 段,表示服务器端向客户端释放连接。
    • 挥手 4:客户端向服务器端发送 ACK 段,表示客户端确认释放服务器端的连接。此时,客户端和服务器端互相就无法再给对方发送数据了,通信结束。

SYN 段:表示这是一个请求连接的报文;ACK 段:表示这是一个确认报文;FIN 段:表示这是一个释放连接的报文。

TCP 协议和 UDP 协议的区别:

  1. TCP 是有连接的,可靠的。能够确保数据完整正确,但是开销大、实时性差。HTTP、FTP 基于 TCP。
  2. UDP 是无连接的、不可靠的。数据可能出错丢失,但是速度快、开销小。DNS 基于 UDP。

有连接:发送消息前,要先建立连接,再发送消息;发送完消息后,还需要释放连接。
无连接:发送消息前,不需要先建立连接,直接发送消息;发送完消息后,也就不需要释放连接了。

可靠传输:接收方使用确认机制让发送方知道哪些数据已被正确接收。可靠传输需要基于有连接的方式。
不可靠传输:接收方无论收没收到数据、数据是否正确,都不给发送方返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970044.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# CultureInfo 地区影响字符串

问题 线上遇到有玩家资源加载异常,发现资源路径出现异常字符: 发现是土耳其语下字符串转小写不符合预期: "I".ToLower() -> ı 解决方案 String.ToLower 改成 String.ToLowerInvariant 全局修改禁用文化差异:ht…

蓝桥与力扣刷题(108 将有序数组转换成二叉搜索树)

题目:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡二叉搜索树。 示例 1: 输入:nums [-10,-3,0,5,9] 输出:[0,-3,9,-10,null,5] 解释:[0,-10,5,null,-3,null,9]…

python学opencv|读取图像(六十二)使用cv2.morphologyEx()形态学函数实现图像梯度处理

【1】引言 前序已经学习了腐蚀和膨胀的单独作用函数,还研究了按照不同顺序调用腐蚀和膨胀函数调整图像效果,相关文章包括且不限于: python学opencv|读取图像(六十一)先后使用cv2.dilate()函数和cv2.erode()函数实现图…

(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念

目录 前言与导论 碎碎念 所以,我到底需要知道哪些东西呢 从一些基础的概念入手 常见的工具和说法 ST公司 MDK5 (Keil5) CubeMX 如何使用MDK5的一些常用功能 MDK5的一些常见的设置 前言与导论 非常感谢2301_77816627-CSDN博客的提问,他非常好奇…

线程池-抢票系统性能优化

文章目录 引言-购票系统线程池购票系统-线程池优化 池化 vs 未池化 引言-购票系统 public class App implements Runnable {private static int tickets 100;private static int users 10000;private final ReentrantLock lock new ReentrantLock(true);public void run() …

soular基础教程-使用指南

soular是TikLab DevOps工具链的统一帐号中心,今天来介绍如何使用 soular 配置你的组织、工作台,快速入门上手。  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责…

大数据SQL调优专题——Hive执行原理

引入 Apache Hive 是基于Hadoop的数据仓库工具,它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中,HQL默认转换成MapReduce程序运行到Yarn集群中,大大降低了非Java开发者数据分析的门槛,并且Hive提供命令…

细胞计数专题 | LUNA-FX7™新自动对焦算法提高极低细胞浓度下的细胞计数准确性

现代细胞计数仪采用自动化方法,在特定浓度范围内进行细胞计数。其上限受限于在高浓度条件下准确区分细胞边界的能力,而相机视野等因素则决定了下限。在图像中仅包含少量可识别细胞或特征的情况下,自动对焦可能会失效,从而影响细胞…

JAVA生产环境(IDEA)排查死锁

使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤: 1. 编写并运行代码 首先,我们编写一个可能导致死锁的示例代码: public class DeadlockExample {private static final Obj…

leetcode 297. 二叉树的序列化与反序列化

题目如下 我们常常说单独先序遍历不能完整的表示一棵树是有前提条件的。 为什么?先序遍历是按 根节点 左子树 右子树的方向遍历树且遇到空子树直接返回,这样会造成我们并不知道某个节点的左右子树存在与否,故我们无法确定树的形状。但是如果…

pt->onnx->rknn(量化) step by step FAQ

文档修订中... 1.pt->onnx 这个转换是在yolov11的docker环境做的转换。非常简单。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # 获取当前脚本文件所在目录的父目录,并构建相对路径 import os import sys current_dir os.path.dirname(os.path.abspath…

同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展

1 2025开年,人工智能领域迎来了一场前所未有的变革。Deepseek成为代表“东方力量”的开年王炸,不仅在国内掀起了技术热潮,并且在全球范围内引起了高度关注。Deepseek以颠覆性技术突破和现象级应用场景席卷全球,这不仅重塑了产业格…

【css】width:100%;padding:20px;造成超出100%宽度的解决办法 - box-sizing的使用方法 - CSS布局

问题 修改效果 解决方法 .xx {width: 100%;padding: 0 20px;box-sizing: border-box; } 默认box-sizing: content-box下, width 内容的宽度 height 内容的高度 宽度和高度的计算值都不包含内容的边框(border)和内边距(padding&…

C++ Primer 函数基础

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

滤波总结 波形处理原理 如何对一个规律的波形进行滤波 显现出真正的波形 如何设计滤波

需要用到的软件:waveserialport vofa++ 1.波形想用MCU进行采集首先你要考虑到你的采集频率因为如果你的对象波形即你要采集的波形,他过于快速的话有一些MCU它是不能的比如说有一些它的主频才36兆72兆呢你如果遇到一个特别快的波形毫秒级别那他就检测不了 2.…

PyQt组态软件 拖拽设计界面测试

PyQt组态软件测试 最近在研究PyQt,尝试写个拖拽设计界面的组态软件,目前实现的功能如下: 支持拖入控件,鼠标拖动控件位置 拖动控件边缘修改控件大小支持属性编辑器,修改当前选中控件的属性 拖动框选控件,点选控件 控…

算法学习笔记之贪心算法

导引(硕鼠的交易) 硕鼠准备了M磅猫粮与看守仓库的猫交易奶酪。 仓库有N个房间,第i个房间有 J[i] 磅奶酪并需要 F[i] 磅猫粮交换,硕鼠可以按比例来交换,不必交换所有的奶酪 计算硕鼠最多能得到多少磅奶酪。 输入M和…

把 DeepSeek1.5b 部署在显卡小于4G的电脑上

这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好设置Ollama环境变量验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话 调整gpu精度 介绍 Deepseek1.5b能够运行在只用cpu和gpu内…

第四十四篇--Tesla P40+Janus-Pro-7B部署与测试

环境 系统:CentOS-7 CPU: 14C28T 显卡:Tesla P40 24G 驱动: 515 CUDA: 11.7 cuDNN: 8.9.2.26创建环境 conda create --name trans python3.10torch 2.6.0 transformers 4.48.3克隆项目 git clone https:/…

「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …