01-网络篇-网络分层和常见网络协议

news2024/11/25 20:42:30

常使用的网络有广域网(WAN)、城域网、局域网(LAN),一般我们遇到的场景是广域网和局域网,广域网就是常说的外网,而局域网一般用于学校、公司等场合。在家庭路由器中对应WAN口和LAN口。网络是极为复杂的,为了使开发方面,提出了网络分层的概念。
一.网络分层
网络分层
业内普遍的分层方式有两种。OSI七层模型 和TCP/IP四层模型。
实际应用中是TCP/IP四层模型,下面对这种模型进行描述。如下图。
在这里插入图片描述
应用层协议:
我们一般常见的http、Telnet协议属于应用层,此处不进行详细描述。
传输层协议:
1.TCP:
(1)面向连接;
(2)每一条TCP连接只能是点对点的(一对一);
(3)提供可靠交付的服务;
(4)提供全双工通信;
(5)面向字节流。
2.UDP:
(1)无连接;
(2)尽最大努力交付;
(3)面向报文;
(4)无拥塞控制;
(5)支持一对一、一对多、多对一和多对多的交互通信;
(6)首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。

网络层协议:
1.
IP:网际协议(互连网协议),用来使互连起来的网络能够相互通信。
2.
ARP:地址解析协议,用来把IP地址映射成物理地址。
3.
RARP:逆地址解析协议,使只知道自己硬件地址的主机能够知道其IP地址。
4.
ICMP:互连网控制报文协议,允许主机或路由器报告差错情况和提供有关是否有异常情况的报告。
(应用在ping包命令,用于检查两设备之间网络连接是否正常)

链路层协议:
常规的网络开发场合用不到,此处不详细描述。

二、每一个网络层的工作方式
1.链路层:
每一个网卡都有一个唯一的地址,我们叫其为mac地址。mac地址,就是数据包的发送地址和接收地址。可以用于标识通信过程的发送端与接收端。
每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。
外网情况下通过IP通信,然后ARP和RARP实现MAC地址与IP地址的映射、从而实现两张网卡链路层mac地址与mac地址的交互。链路层的交互对应的就是两张网卡的MAC地址的信息交互。

2.网络层
在上海的主机和北京的主机要完成交互时,单纯用上海主机的mac地址和北京主机的mac地址通信实现交互是无法高效率完成的。
针对这种外网情况,提出了网络层的概念。
网络中有对应的外网IP地址,把外网IP地址当成唯一标识符实现外网通信的身份标记,IP地址难以被人熟记(比如14.119.104.189),并且通过IP地址无法确认设备所处位置和关系,因而可以用一个网址将IP与一个字符串对应起来,这个网址实际上就对应IP地址(如:www.xxxxx.com -> 14.119.xxx.xxx),实现网站与IP之间的转换所需要的协议是DNS。

3.传输层
前面所述链路层设备的交互靠MAC地址标识、外网的交互靠IP地址标识。若一台主机IP确定和MAC均已确认是唯一的,此时用户在同时微信聊天和百度网页。此主机同时与腾讯服务器和百度的服务器同时通信,怎样知道收到的内容是哪一个服务器发送过来的呢。 这里面就要提交一个概念,也就是端口,"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口,通过端口就能确认这个主机是在与哪一个服务器交互,内容是供主机的哪个进程使用。传输层有UDP和TCP协议。两种协议各有特点,前面已描述。

4.应用层
应用层协议很多比如http、FTP等,均是基于TCP、或UDP传输。这个用户可以根据后期项目进行深入了解

通过上面的内容对网络分层的概念和各层对应的协议有一个直观的了解。下面我们分析一下一个TCP包的组成。

在这里插入图片描述
如上图所示为一个TCP包,可以看出此包为主机1(IP:192.168.6.95 端口:1949)向主机2(IP:192.168.6.139 端口:8899)发送的一个长度为310字节(负载长度为256字节)的TCP包。
图中1:所指信息为主机1发包主机2收包
图中2:包长度310
图中3:14字节的以太网标头,用于描述主机1的mac和主机2的mac地址。(对应链路层)
图中4:20字节的IP标头,用于搭述IP类型,主机1的IP和主机2的IP地址。(对应网络层)
图中5:20字节的TCP标头,里面包含主机1和主机2端口等信息(对应传输层)
图中6: 负载,对应于应用层

一帧TCP数据结构如下:
在这里插入图片描述

下图可以看到在TCP通信过程中,数据的流动情况。

Tcp通信数据流动情况

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

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

相关文章

Windows 定时备份 pg 数据库,定时删除

目录 1. 写个备份脚本2. Windows 添加定时任务3. 使用备份的 SQL 还原数据 1. 写个备份脚本 备份数据库脚本: pgBacks.bat ECHO OFF :: 用于启用扩展功能。在使用enableextensions选项后,批处理脚本可以使用扩展命令和特性 setlocal enableextensions…

Sprint framework Day08:Spring的@Autowired注解

前言 当使用注解和 XML 配置结合时,可以使用注解 Autowired、Qualifier 和 Primary 来实现自动装配并进行依赖注入。 一、了解 Autowired、Qualifier 和 Primary 注解 Autowired 注解:用于自动装配依赖。在需要进行依赖注入的地方,添加 Auto…

Jetpack:006-如何使用输入框

文章目录 1. 概念介绍2. 使用方法2.1 TextField2.2 OutlinedTextField 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中文本组件扩展相关的内容,本章回中主要介绍输入框组件。闲话休提,让我们一起Talk Android Jetpack吧! 1. 概念介…

C++笔记--基于C++实现NMS算法

1--完整代码 // g nms.cpp -stdc11 -o nms_test // ./nms_test#include <iostream> #include <vector> #include <algorithm>// 锚框结构体 struct BoundingBox{float x, y, width, height, score; };class NMS{ public:NMS(){};// 非极大值抑制函数std::ve…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例私有库搭建verdaccio(八)

九、华为云耀云服务器L实例私有库搭建verdaccio&#xff1a; Verdaccio 是一个简单的、零配置本地私有 npm 软件包代理注册表。Verdaccio 开箱即用&#xff0c;拥有自己的小型数据库&#xff0c;能够代理其它注册表&#xff08;例如 npmjs.org&#xff09;&#xff0c;缓存下载…

Linux桌面环境(桌面系统)

早期的 Linux 系统都是不带界面的&#xff0c;只能通过命令来管理&#xff0c;比如运行程序、编辑文档、删除文件等。所以&#xff0c;要想熟练使用 Linux&#xff0c;就必须记忆很多命令。 后来随着 Windows 的普及&#xff0c;计算机界面变得越来越漂亮&#xff0c;点点鼠标…

接口测试文档

接口测试的总结文档 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1a;主要介绍为什…

企业云盘推荐:哪个更适合您的需求?

企业云盘因其便捷易用的特点&#xff0c;已成为现代企业办公的热门工具之一。 首先&#xff0c;企业云盘提供了可靠的数据存储。与传统的本地存储方式相比&#xff0c;企业云盘将数据存储在云服务器上&#xff0c;具有强大的数据冗余和备份机制&#xff0c;确保数据的安全性和…

【专题】并查集判断冲突

&#xff08;1&#xff09;题目 P1955 [NOI2015] 程序自动分析 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) &#xff08;2&#xff09;解决思路 先排序&#xff0c;把所有e1的操作放在前面&#xff0c;然后再进行e0的操作。在进行e1的操作的时候&#xff0c;我们只要把它…

笔试、面试总结(网络安全与渗透测试)

什么是同源策略&#xff1f; 为了防止不同域在用户浏览器中彼此干扰&#xff0c;浏览器对从不同来源&#xff08;域&#xff09;收到的内容进行隔离。浏览器不允许任何旧有脚本访问一个站点的 cookie&#xff0c;否则 &#xff0c;会话容易被劫持。只有发布 cookie 的站点能够…

用servlet实现一个简单的猜数字游戏。

需要两个页面&#xff0c;一个jsp页面&#xff08;guess.jsp&#xff09;和servlet页面&#xff08;servlet&#xff09;。 一.jsp页面 在jsp页面中需要实现&#xff1a; 1.创建随机数并且保存在session中。 2.做个form表单提交猜的数字给servlet页面。 <%page import&…

电提示找不到api-ms-win-crt-runtime-l1-1-0.dll怎么办,分享快速解决办法

如果在电脑中提示api-ms-win-crt-runtime-l1-1-0.dll找不到或丢失的情况&#xff0c;大家可以来看看这篇文章&#xff0c;能够快速解决api-ms-win-crt-runtime-l1-1-0.dll丢失的问题&#xff0c;一起来看看都有什么办法解决吧。 一&#xff0e;api-ms-win-crt-runtime-l1-1-0.d…

判断多个多边形是否连通(方法一:原理)

重点&#xff1a; 1.将多边形一个一个拎出来判断&#xff0c;以1为开始&#xff0c;后续如果连接&#xff0c;就加入序列&#xff0c;以2开始判断&#xff0c;以此为序。

Python 机器学习入门之逻辑回归

系列文章目录 第一章 Python 机器学习入门之线性回归 第一章 Python 机器学习入门之梯度下降法 第一章 Python 机器学习入门之牛顿法 第二章 Python 机器学习入门之逻辑回归 逻辑回归 系列文章目录前言一、逻辑回归简介二、逻辑回归推导1、问题2、Sigmoid函数3、目标函数3.1 让…

【C语言】对文件的输入输出

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C语言初步学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. 什么是文件1.1 程序文件1.2 数据文件1.3 数据流1.4 文件名 2. 文件的分类3. 文件缓冲区4. 文件的打开和关闭4.1 文…

IDEA插件推荐:TabColor

国庆假期&#xff0c;闲来无事&#xff0c;笔者自己开发了一个简易的IDEA插件。 TabColor 这是一个IDEA插件。通过改变核心Tab的颜色&#xff0c;将开发者从一堆Tab的迷茫中解放&#xff01; 安装 IDEA插件安装界面&#xff0c;搜索TabColor&#xff0c;进行安装。从浏览器下…

最详细STM32,cubeMX 点亮 led

这篇文章将详细介绍 如何在 stm32103 板子上点亮一个LED. 文章目录 前言一、开发环境搭建。二、LED 原理图解读三、什么是 GPIO四、cubeMX 配置工程五、解读 cubeMX 生成的代码六、延时函数七、控制引脚状态函数点亮 LED 八、GPIO 的工作模式九、为什么使用推挽输出驱动 LED总结…

云上攻防-云原生篇Docker安全权限环境检测容器逃逸特权模式危险挂载

文章目录 前言1、Docker是干嘛的&#xff1f;2、Docker对于渗透测试影响&#xff1f;3、Docker渗透测试点有那些&#xff1f;4、前渗透-判断在Docker中方式一&#xff1a;查询cgroup信息方式二&#xff1a;检查/.dockerenv文件方式三&#xff1a;检查mount信息方式四&#xff1…

NSDT编辑器实现数字孪生

数字孪生的强大功能来自于将真实世界的资产与真实世界的数据联系起来&#xff0c;因此您可以更好地可视化它们。数字孪生使跨职能团队能够以交互式和沉浸式方式协作设计、构建、测试、部署和操作复杂系统。 如何创建数字孪生&#xff1f; 数字孪生是通过导入概念模型&#xf…

C++学习——对象的内存模型

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 对象被创建时会在栈区或者堆区分配内存。我们直观的认识是&#xff0c;如果创建了 10 个对象&#xff0c;就要分别为这 10 个对象的成员变量和成员函数分配内存&#xff0c;如下图所示…