TCP/IP网络模型各层简介

news2024/12/25 0:08:53

第一张图是OSI参考模型,由国际标准组织ISO定义的理论模型。

第二张则是TCP/IP协议的网络模型,实际互联网所采用的网络协议族的基础架构,工作中也一般都是接触这个。

第三章是学习时一般使用的网络模型,尤其是《计算机网络-自顶向下方法》这本书,就是围绕五层网络模型展开的。

对一同设备上的进程间通信,有很多方式,例如管道消息队列共享内存信号等方式

而不同设备上的进程间通信,就必须使用网络协议。

应用层

用户能接触到的应用层,应用软件等都是在应用层实现,

故应用层只需要专注于为用户提供应用功能,比如HTTPFTPTelnetDNSSMTP

应用层工作在操作系统的用户态,传输层及以下则工作在内核态。

传输层

应用层数据包会传给传输层,传输层为应用层提供网络支持

提供端到端的数据传输服务,并确保这些服务是可靠的,高效的

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

TCP全称为传输控制协议

大部分应用使用的正是TCP传输协议,有流量控制超时重传拥塞控制等,这些UDP都没有

UDP则比较简单,只负责发送数据包,不保证数据包是否抵达对方,但其实时性比较好,传输效率也高,也可以实现可靠传输(把TCP特性在应用层上实现)。

应用需要传输的数据可能会很大,直接传输不好控制,因此当传输层数据包大小超过MSS(TCP最大报文段长度)

就要将数据分块,

这样即使传输过程中某个分块丢失或者损坏,只需要重新发送这个分块而不需要重新发送整个数据包

每个分块称为TCP段

当设备作为i接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接受或者传输数据,因此需要一个编号区分开来,这个编号就叫做端口

例如,80端口通常是Web服务器使用,22端口通常是远程登录服务器使用。

由于传输层的报文中会携带端口号,因此接受方可以识别出该报文是发送给哪个应用

网络层

传输层不负责将数据从一个设备传输到另一个设备,传输层只需要把应用层服务好就行,而网络层则负责数据传输,包含的协议有:IPICMP

网络层最常用的是IP协议,IP协议会将传输层的报文作为数据部分,再加上IP报头组装成IP报文,如果IP报文超过MTU(网络中可传输的最大数据包大小,以太网中一般是1500字节)就会再次进行分片,得到一个即将发送到网络的IP报文

一遍使用IP地址给设备编号,对于IPV4协议,IP地址共32位,分成四段,每段是8位

同时,为了更好的去寻址,将IP地址分为两种含义

  • 网络号,负责表示IP地址属于哪个子网

  • 主机号,标识同一子网下不同主机

这需要配合子网掩码计算IP地址的网络号和主机号

例如 10.100.122.2/24 后面这个/24就表示子网掩码为255.255.255.0,而子网掩码和IP进行按位与操作就可以得到网络号

例如 10.100.122.2 与 255.255.255.0按位与后得到 10.100.122.0,这即为对应的网络号

在寻址的过程中,先匹配到相同的网络号,再找对应的主机

IP协议除了这个寻址能力,还有一个就是路由,实际场景中,两台设备间有很多网络设备,例如网关、路由器、交换机等,就会形成很多网络的路径,当数据包到达一个网络节点,就必须通过路由算法决定下一步路径

做个形象的比喻,寻址就是告诉我们下一个目的地是什么方向,而路由则是选择路劲

网络接口层

生成IP头部后,接下来交给网络接口层,在IP头部加上MAC头部,并封装成数据帧发送到网络上

网络接口层主要提供链路级别传输的服务,负责处理与物理网络介质的直接通信

主要的协议有ARP协议

各层封装数据形式

HTTP的传输单位被称为消息被报文,TCP传输单位为段

IP传输单位为包,网络接口层传输单位为帧

不过都可以统称为数据包

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在龙梦迷你电脑福珑2.0上试了三款操作系统

最近抽时间在龙梦迷你电脑上试了三款操作系统。 这几款操作系统以前都下载过。试用速度会快很多。 试用第一款:统信操作系统龙芯版。能正常安装。安装好了以后,下载了一个软件:龙芯游览器。修改该游览器的界面,不能实现所有页面…

《数字图像处理-OpenCV/Python》第14章:边缘检测与图像轮廓

《数字图像处理-OpenCV/Python》第14章:边缘检测与图像轮廓 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 14 章 边缘检测与图像轮廓 边缘是图像的基本特征。边缘检测…

vue3中使用animate.css

在vue3中使用animate.css 20240428_093614 引入:npm install animate.css --save main.js注册:import ‘animate.css/animate.min.css’ 注意:import ‘animate.css’ 不适合在vue3项目 使用:class“animate__animated 动画名称”…

FreeRTOS-系统时钟节拍和时间管理

一、前言 任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时,超时等与时间相关的事件。时钟节拍是特定的周期性中断, 这个中断可以看做是系统心跳。 中断之间的时间间隔取决于不同的应用,一般是 1ms – 100ms。时钟的节拍…

Mac 安装John the Ripper 破解rar(zip)压缩文件

注:仅以此篇记录我满足好奇心所逝去的十几个小时。(自娱自乐) 1、首先利用 brewhome 包管理工具 安装john the ripper : brew install john-jumbo 如果没有安装brewhome 利用如下命令安装: /bin/zsh -c "$(c…

《与 Apollo 共创生态——Apollo7周年大会干货分享》

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 阿波罗X企业自动驾驶解决方案自动驾驶技术提升与挑战自动驾驶系统功能与性能的详细解析<td alig…

【网络基础】深入理解TCP协议:协议段、可靠性、各种机制

文章目录 1. TCP协议段格式1.1. 如何解包 / 向上交付1.1.1. 交付1.1.2. 解包 1.2. 如何理解可靠性1.2.1. 确认应答机制&#xff08;ACK&#xff09;1.2.2. 序号 与 确认序号 2. TCP做到全双工的原因2.1. 16位窗口大小2.2. 6个标记位 3. 如何理解连接3.1 连接管理机制3.1.1. 三次…

Angular基础-搭建Angular运行环境

这篇文章介绍了在Angular项目中进行开发环境搭建的关键步骤。包括node.js安装和配置、安装Angular CLI工具、安装angular-router、创建Angular项目等步骤。这篇文章为读者提供了清晰的指南&#xff0c;帮助他们快速搭建Angular开发环境&#xff0c;为后续的项目开发奠定基础。 …

【系统架构师】-选择题(九)

1、电子政务没有政府对客户(Government To Customer) 四种主要应用模式&#xff1a; G2B&#xff1a;政府对企业 Government to Business G2C&#xff1a;政府对公民 Government to Citizen G2E&#xff1a;政府对公务员 Government to Employee G2G&#xff1a;政府对政府 Go…

商务谈判模拟口才训练方案(3篇)

商务谈判模拟口才训练方案&#xff08;3篇&#xff09; 商务谈判模拟口才训练方案&#xff08;一&#xff09; 一、训练目标 本训练方案旨在提高参与者在商务谈判中的口才表达能力&#xff0c;包括清晰表达、有效倾听、应对挑战和构建信任等能力。 二、训练内容 基础口才训练…

YOLOv8主要命令讲解

YOLOv8主要有三个常用命令&#xff0c;分别是&#xff1a;train&#xff08;训练&#xff09;、predict&#xff08;预测&#xff09;、export&#xff08;转化模型格式&#xff09;&#xff0c;下面我将展开讲讲三个常用命令的常用参数与具体使用方法。 一、训练 通过自己标…

“Transformer挑战者”-Mamba之最全详解图解

-------------------------------------------------------------------------------------------------------------------- 1.AIGC未来发展前景 未完持续… 1.1 人工智能相关科研重要性 拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票&a…

Pandas入门篇(二)-------Dataframe篇5(进阶)(Dataframe的时间序列Dataframe最终篇!!)(机器学习前置技术栈)

目录 概述一、pandas的日期类型&#xff08;一&#xff09;datetime64类型的特点&#xff08;二&#xff09; 时间序列的创建1.从字符串创建datetime64类型2. 整数&#xff08;Unix时间戳&#xff09;创建datetime64类型3.导入数据时直接转换 &#xff08;三&#xff09;dateti…

XY_RE复现(五)

一&#xff0c;给阿姨倒一杯卡布奇诺 是一道魔改TEA加密 给出了一些初始化&#xff0c;然后输入的flag拆分&#xff0c;两两一组&#xff0c;通过for循环放入encrypt加密函数 #include <stdio.h> #define uint32_t unsigned intvoid decrypt(uint32_t *v, uint32_t *ke…

笨蛋学C++之 C++连接数据库

笨蛋学C 之 VS2019使用C连接数据库 创建数据库SQL语句VS2019选择空项目&#xff0c;点击下一步创建输入项目名称&#xff0c;点击创建创建成功点击新建项创建源文件因为mysql是64位&#xff0c;此时的c项目是86位&#xff0c;所以这里需要将项目修改为x64位点击项目 -> 0501…

linux 单机安装consul

sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo && sudo yum -y install consul#添加consul配置文件 nano /etc/consul.d/server.json {"server": true,"boots…

Python异步Redis客户端与通用缓存装饰器

前言 这里我将通过 redis-py 简易封装一个异步的Redis客户端&#xff0c;然后主要讲解设计一个支持各种缓存代理&#xff08;本地内存、Redis等&#xff09;的缓存装饰器&#xff0c;用于在减少一些不必要的计算、存储层的查询、网络IO等。 具体代码都封装在 HuiDBK/py-tools: …

使用 uni-app 开发 iOS 应用的操作步骤

哈喽呀&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;上一期和大家一起探讨了使用uniapp开发iOS应用的优势及劣势之后有许多小伙伴想要尝试使用uniapp开发iOS应用&#xff0c;但是却不懂如何使用uniapp开发iOS应用&#xff0c;所以这一期淼淼就来给你们分享…

nginx--平滑升级

失败了&#xff0c;等我拍好错继续更新 命令 选项说明 帮助: -? -h 使用指定的配置文件: -c 指定配置指令:-g 指定运行目录:-p 测试配置文件是否有语法错误:-t -T 打印nginx的版本信息、编译信息等:-v -V 发送信号: -s 示例: nginx -s reload 信号说明 立刻停止服务:stop,相…

【C++】学习笔记——string_3

文章目录 六、string类5. string类的操作6. string类的转换7. string类的模拟实现 未完待续 搭配文档食用 六、string类 5. string类的操作 上面的函数中&#xff0c;有些是不常用的&#xff0c;咱们只挑几个重要的进行讲解。 c_str 就是将字符串转换成 C语言 字符串的格式。…