计算机网络知识点全梳理(一.TCP/IP网络模型)

目录

TCP/IP网络模型概述

应用层

什么是应用层

应用层功能

应用层协议

传输层

什么是传输层

传输层功能

传输层协议

网络层

什么是网络层

网络层功能

网络层协议

数据链路层 

什么是数据链路层

数据链路层功能

物理层 

物理层的概念和功能


TCP/IP网络模型概述

在同一台设备上,进程间通信可以通过多种机制实现,例如管道、消息队列、共享内存和信号等。当涉及到不同设备上的进程间通信时,就需要依赖网络通信。由于设备种类繁多,为了实现广泛的兼容性,人们制定了一系列通用的网络协议来标准化通信过程。这些协议确保了不同设备间能够有效地进行数据交换和通信。

网络模型是分层的,有五层(应用层、传输层、网络层、数据链路层、物理层),也可分为四层(把数据链路层和物理层合并为网路接口层)。

下面对每一层进行介绍。

应用层

什么是应用层

应用层是TCP/IP网络模型中的最顶层,它位于传输层之上,直接与用户和应用程序交互。应用层的主要目的是为应用程序提供访问网络服务的接口和协议,使得用户可以方便地使用网络资源。

应用层功能

应用层使得用户可以无缝地使用网络应用,而无需了解背后的网络技术细节。

比如说网页浏览:当你使用浏览器访问一个网站时,浏览器会通过HTTP或HTTPS协议与网站的服务器进行通信。应用层在这里负责处理网页请求和响应的格式化,以及确保数据的安全传输。

应用层协议

  • HTTP(超文本传输协议):用于网页浏览。

  • HTTPS(安全超文本传输协议):HTTP的安全版本,使用SSL/TLS加密。

  • FTP(文件传输协议):用于文件的上传和下载。

  • SMTP(简单邮件传输协议):用于发送电子邮件。

  • IMAP(互联网消息访问协议):用于访问和管理电子邮件。

  • DNS(域名系统):将域名转换为IP地址。

传输层

什么是传输层

应用层的数据包会传给传输层,传输层(Transport Layer)是为应用层提供网络支持的。传输层的主要功能是为应用程序提供端到端的通信服务,确保数据的完整性和可靠性。

传输层功能

数据分段:传输层负责将应用层发送的大型数据分割成较小的单元,这些单元在网络层中被称为数据包或分组。

流量控制:传输层通过滑动窗口机制来控制数据的发送速率,防止发送方的数据流量超过接收方的处理能力。

错误检测和纠正:传输层提供错误检测机制,确保数据在传输过程中的完整性。如果检测到错误,传输层可以请求重传损坏的数据包。

拥塞控制:传输层监控网络的拥塞情况,并相应地调整数据传输速率,以避免网络过载。

端口管理:传输层使用端口号来区分同一主机上运行的不同服务,允许多个应用程序同时使用网络。

传输层协议

传输层主要采用两种协议:TCPUDP

  • TCP,即传输控制协议(Transmission Control Protocol),是大多数应用的首选,包括HTTP等应用层协议。TCP提供了一系列特性以确保数据传输的可靠性,包括流量控制、超时重传和拥塞控制。

  • UDP(用户数据报协议)则更为简洁,它仅负责数据包的发送,不保证数据的到达,这使得UDP在实时性和传输效率方面具有优势。

网络层

什么是网络层

网络层的主要功能是负责数据包从源到目的地的传输和路由选择。在现实世界的网络环境中,数据传输路径错综复杂,涉及多种线路和节点。网络层的设计宗旨在于高效地处理这些复杂的路由选择,确保数据能够顺利地从源头到达目的地。

网络层功能

路由选择:实际场景中,两台设备并不是用一条网线连接起来的。而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路径,因此当数据包到达⼀个网络节点,就需要通过算法决定下⼀步走哪条路径。

逻辑寻址:网络层使用IP地址来标识网络上的每个设备,确保数据包能够被正确地寻址和传输。

分组转发:网络层将传输层传来的数据分割成较小的单元,称为数据包或分组,并通过网络进行转发。

拥塞控制:虽然拥塞控制主要在传输层实现,但网络层也参与监控网络流量,以避免网络拥塞。

网络层协议

网络层的主要协议是互联网协议(IP),它包括:

  • IPv4:当前最广泛使用的互联网协议版本,使用32位地址,提供大约43亿个地址。

  • IPv6:为了解决IPv4地址耗尽问题而设计的下一代互联网协议,使用128位地址,极大地扩展了地址空间。

数据链路层 

什么是数据链路层

数据链路层是TCP/IP网络模型和OSI七层模型中的第二层,它位于物理层之上,网络层之下。这一层的主要任务是为网络层提供可靠的数据传输服务,确保数据帧在相邻节点之间的物理网络中无差错传输。

数据链路层功能

在现实世界的网络环境中,不同的网络(如你家和我家的网络)是相互独立的。数据传输不仅可以在同一个网络内部进行,还可以跨越不同的网络。当数据需要跨越网络时,路由器作为连接不同网络的关键设备,利用其路由表来确定数据包的下一跳IP地址。

路由器如何识别特定IP地址对应的设备呢?这就需要数据链路层的介入。数据链路层负责在网络中的设备间建立链路级别的传输服务。每台设备的网卡都分配有一个唯一的MAC地址,用于标识该设备。路由器在确定了下一跳的IP地址后,会通过地址解析协议(ARP)来查询该IP地址对应的MAC地址,从而确保数据能够准确地传输到目标设备。

简而言之,数据链路层通过MAC地址为网络层提供了必要的链路级别传输服务,使得路由器能够有效地在不同网络间转发数据包。

物理层 

物理层的概念和功能

物理层负责网络通信的物理基础,主要是为数据链路层提供⼆进制传输的服务,是网络通信的基石,它确保了数据能够在物理媒介上以电子信号的形式传输,为上层网络提供了必要的物理基础。

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

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

相关文章

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作,以控制用户对数据库的访问权限。通过账户管理,可以设置用户名、密码、主机地址等信息,确保数据库的安全性和可控性。例如,使用 CREATE USER 创建用户,ALTER…

SpringSecurity使用教程

一、基本使用 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,专门设计用于保护基于 Spring 的应用程序。它不仅提供了全面的安全服务,还与 Spring 框架及其生态系统(如 Spring Boot、Spring MVC 等)紧密集…

docker 安装mysql 5.7 详细保姆级教程

1. 安装mysql(5.7) docker pull mysql:5.7 若是拉取不了,可以配置下 docker 源 2. 查看是否安装成功 docker images 下图就是成功了 3.创建mysql专用目录、数据挂载目录、配置文件目录 ,演示目录在于/home/下 //命令逐条执行cd /home/ mkdir mysql …

fixture装饰器

普通代码案例: python本身执行 import pytestdef init_new():print("init_new...")return Truedef test_case(init_new):if init_new is True:print("如果init_new返回True,就执行用例test_case")if __name__ __main__:#用python本…

【韩顺平Java JDBC学习笔记】

Java JDBC 文章目录 jdbc概述基本介绍jdbc原理示意图 jdbc快速入门JDBC程序编写步骤获取数据库连接5种方式ResultSet[结果集]SQL注入Statement PreparedStatement预处理好处基本使用 JDBC APIJDBCUtils工具类使用工具类 事务基本介绍应用实例模拟经典的转帐业务 - 未使用事务模…

KeepAlive与RouterView缓存

参考 vue动态组件<Component>与<KeepAlive> KeepAlive官网介绍 缓存之keep-alive的理解和应用 Vue3Vite KeepAlive页面缓存问题 vue多级菜单(路由)导致缓存(keep-alive)失效 vue3 router-view keeperalive对于同一路径但路径…

【经验分享】搭建本地训练环境知识点及方法

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…

为什么要使用数据仓库?

现状和需求 大量的企业经营性数据(订单,库存,原料,付款等)在企业的业务运营系统以及其后台的(事务型)数据库中产生的。 企业的决策者需要及时地对这些数据进行归类分析,从中获得企业运营的各种业务特征&a…

CSS|07 标准文档流

标准文档流 一、什么是标准文档流 在制作的 HTML 网页和 PS 画图软件画图时有本质上面的区别: HTML 网页在制作的时候都得遵循一个“流的规则:从左至右、从上至下。 使用 Ps 软件画图时可以在任意地方画图。 <!DOCTYPE html> <html lang"en"> <hea…

JS设计模式之访问者模式

前言 访问者模式&#xff08;Visitor Pattern&#xff09;是一种 行为设计模式&#xff0c;它允许在不改变对象结构的情况下&#xff0c;定义新的操作。 这种模式通过将操作封装在访问者对象中&#xff0c;使得可以在不修改被访问对象的情况下&#xff0c;增加新的功能。 本…

快速上手:利用 FFmpeg 合并音频文件的实用教程

FFmpeg 是一个强大的多媒体处理工具&#xff0c;能够轻松地对音频、视频进行编辑和转换。本文将介绍如何使用 FFmpeg 来合并&#xff08;拼接&#xff09;多个音频文件为一个单一文件。无论您是想要创建播客、音乐混音还是其他任何形式的音频项目&#xff0c;这都是一个非常实用…

使用idea创建一个JAVA WEB项目

文章目录 1. javaweb项目简介2. 创建2.1 idea新建项目2.2 选择&#xff0c;命名2.3 打开2.4 选择tomcat运行2.5 结果 3. 总结 1. javaweb项目简介 JavaWeb项目是一种基于Java技术的Web应用程序&#xff0c;主要用于开发动态网页和Web服务。这种项目能够构建在Java技术栈之上&a…

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中&#xff0c;九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖&#xff0c;用户可以随机获得不同奖品&#xff0c;增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能&#xff0c;并通过代码解析展示实现细节。 【环境准…

金融信息分析基础(1)

1.金融数据 金融数据分为&#xff1a;交易数据&#xff08;低频数据&#xff0c;高频数据&#xff0c;超高频数据&#xff09;&#xff0c;报表数据&#xff08;财务报表&#xff0c;研报&#xff09;&#xff0c;金融社交媒体数据 低频数据&#xff1a; 以日、周、月、季、年…

.NET 技术系列 | 通过CreatePipe函数创建管道

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

docker安装、升级、以及sudo dockerd --debug查看启动失败的问题

1、docker安装包tar下载地址 Index of linux/static/stable/x86_64/ 2、下载tgz文件并解压 tar -zxvf docker-24.0.8.tgz 解压后docker文件夹下位docker相关文件 3、将老版本docker相关文件&#xff0c;备份 将 /usr/bin/docker下docker相关的文件&#xff0c;mv到备份目录…

uniapp——H5中使用富文本编辑器,如何使用。

一、插件市场 去插件市场找到这个插件https://ext.dcloud.net.cn/plugin?id14726 二、引入 找到自己项目引入 项目里面多了很多文件 三、使用 找到A页面&#xff0c;在里面引入组件 <view class"editBox"><sp-editor exportHtml"handleExpor…

arXiv-2024 | VLM-GroNav: 基于物理对齐映射视觉语言模型的户外环境机器人导航

作者&#xff1a; Mohamed Elnoor, Kasun Weerakoon, Gershom Seneviratne, Ruiqi Xian, Tianrui Guan, Mohamed Khalid M Jaffar, Vignesh Rajagopal, and Dinesh Manocha单位&#xff1a;马里兰大学学院公园分校原文链接&#xff1a;VLM-GroNav: Robot Navigation Using Phys…

音频客观测评方法PESQ

一、简介 语音质量感知评估&#xff08;Perceptual Evaluation of Speech Quality&#xff09;是一系列的标准&#xff0c;包括一种用于自动评估电话系统用户所体验到的语音质量的测试方法。该标准于2001年被确定为ITU-T P.862建议书[1]。PESQ被电话制造商、网络设备供应商和电…

Gitlab服务管理和仓库项目权限管理

Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件&#xff1b; gitlab-ctl stop # 停止所有 gitlab 组件&#xff1b; gitlab-ctl restart # 重启所有 gitlab 组件&#xff1b; gitlab-ctl status …