计算机网络压缩版

ops/2024/12/25 15:55:37/

计算机网络到现在零零散散也算过了三遍,一些协议大概了解,但总是模模糊糊的印象,现在把自己的整体认识总结一下,(本来想去起名叫《看这一篇就够了》,但是发现网上好的文章太多了,还是看这篇吧),作为非通信或对网络有特殊要求的专业,理解到这应该也基本足够了。

整体结构

目前主流的分类模型是五层体系结构,分别为
1,应用层,负责主机内报文对应应用的分发,如邮件SMTP,文件共享服务FTP和浏览器的超文本传输协议HTTP;
2,网络层,负责网络内路由器到主机应用的报文寻址,通过端口实现,可靠交付TCP和无连接的UDP;
3,传输层,负责网络内报文在路由间的寻址跳转,实现协议有IP、RIP、OSPF等;
4,数据链路层,正式传输前的最后一次封装,用于对接网卡等设备,与IP地址的映射转换通过ARP实现;
5,物理层,光纤或网线中实实在在的光电信号传输。

整个网络运行图如下:
<a class=计算机网络整体结构" />
但从这个角度看会有割裂,报文传到互联网后数据链路层又对其进行封装,难道报文在网络上的传输是通过MAC地址实现的吗?
是,也不是,再结合设备层面的层级图就更加清晰了:
设备五层结构图
A到B的报文其实要经过多个路由器转发,而这些设备间的直接寻址是通过数据链路层实现,即网卡对网卡的通信,中间需要很多路由设备帮我们不断进行寻址和转发,最终才能实现通信,只是这一步对用户大多是透明的。

详细说明

从上一张整体结构图从上往下解释:

ARP-地址解析协议:实现IP地址和MAC地址的转换,通过在网络中广播报文,发送ARP请求,相当于大喊一声,我要找的IP在哪里,对应IP位置的主机就把自己的MAC地址发给他,以后发报就用该地址即可,详细介绍可见文章,以及MAC地址相关文章。

IP协议:我们常说的192.168.1.1就是一个IP地址,该地址帮我们标记网络中的主机,从而解决网络寻址的问题。具体分为网络号和主机号,IP地址后跟着\24就是划分网络的掩码长度,代表前24位为网络号,这24位指的是二进制下的IP地址,255.255.255.255共32位,更详细的说法可见该文章。

NAT地址转换:IP地址二进制共32位,一共只有2的32次方个地址,大概43亿,平均一个人还分不上一个,现在全世界的手机、电脑、平板、甚至智能家电等远远不止43亿个,为什么还能继续通信呢?这就是用到了地址转换。
RFC1918将10.0.0.0-10.255.255.255172.16.0.0-172.31.255.255192.168.0.0-192.168.255.255这三个范围的地址设置位私有地址,仅能在内部使用不对外分配,逻辑上构成一个局域网,我们在cmd中使用ipcofig查到的IP也就是这些范围内的私有地址,局域网内的用户可以直接通信,NAT通过端口号映射私有地址实现公私网地址的转换,但该过程只能由私有地址发起,目标为公网地址,所以局域网外的私有地址用户无法通信,需要借助公网IP跳转。详细内容可见该文章。

TCP/UDP:该方式通过IP、端口号确定主机上的特定应用进行通信,其中0-1023端口为知名服务端口,如FTP、HTTP等不可随便更改,1024-65535可由用户指定,详细内容可见该文章。
TCP传输控制协议是有连接的,发送后需要主机确认,否则需要重传,确保数据报一定到达且有序,但因为上述原因效率较低;
UDP用户数据报协议是无连接的,用最少的协议机制向目的端口发送信息,发送后什么也不管,可能丢包,一般用于视频和游戏等要求延迟的应用。

HTTP:应用级别的协议就只介绍这一个,超文本传输协议,属于TCP/IP协议族。它的主要作用是允许客户端(如浏览器)通过网络向服务器请求资源,服务器再将资源返回给客户端。浏览器通过URL发起访问请求,比如我们网址中的域名本质就是IP地址(该过程需要了解DNS域名解析服务,这里不作赘述。),后面跟的参数是访问资源在目标主机中的位置和参数等信息,服务器收到请求后进行响应,把对应资源发送给客户端,此外还有安全的超文本传输协议https,详细介绍可见该文章。

总结

本文章大致介绍了计算机网络的整体结构,以及部分实现方法的原理,前期学习作为简单了解暂时够了,以后有需求可以再顺着方向继续研究。

笔者认为计算机网络作为计算机四大原理之一基本算是最简单的了,这门学科让我不得不转换思路看待世界上的一些超前建设,因为计算机网络建立之初就已经算是做了充分准备,但网络世界发展到如今规模还是没预料到的,前瞻性的确很重要,但人又很难跳出时代的局限性,底子没打好想在基础上重构或者整个推翻重来都是很难的,IP v6推到现在也没完全普及,而IP v4早就说要用完了也没见谁现在连不上网,能上路就是好的,别管什么优雅了。

最后贴一个华为总结的各层报文大全,以后抓包可以对比着看,华为IP报文格式大全。


http://www.ppmy.cn/ops/144882.html

相关文章

【软件项目管理】-期末突击

区别常见的项目和活动 项目和活动的区别&#xff1a; 定义&#xff1a; 项目&#xff1a;为创造独特成果而进行的临时性工作。活动&#xff1a;日常运营中的重复性工作。 目标&#xff1a; 项目&#xff1a;实现特定成果&#xff0c;一次性。活动&#xff1a;维持日常运作&am…

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…

使用ID3算法根据信息增益构建决策树

使用ID3算法根据信息增益构建决策树 1. 计算数据集的熵&#xff08;Entropy of the dataset&#xff09;2. 按特征划分数据集并计算条件熵&#xff08;1&#xff09;特征 election&#xff08;2&#xff09;特征 season&#xff08;3&#xff09;特征 oil price 3. 总结信息增益…

【Python使用】嘿马头条项目从到完整开发教程第9篇:缓存,1 缓存穿透【附代码文档】

本教程的知识点为:简介 1. 内容 2. 目标 产品效果 ToutiaoWeb虚拟机使用说明 数据库 理解ORM 作用 思考&#xff1a; 使用ORM的方式选择 数据库 SQLAlchemy操作 1 新增 2 查询 all() 数据库 分布式ID 1 方案选择 2 头条 使用雪花算法 &#xff08;代码 toutiao-backend/common/…

ROS1入门教程6:复杂行为处理

一、新建项目 # 创建工作空间 mkdir -p demo6/src && cd demo6# 创建功能包 catkin_create_pkg demo roscpp rosmsg actionlib_msgs message_generation tf二、创建行为 # 创建行为文件夹 mkdir action && cd action# 创建行为文件 vim Move.action# 定义行为…

关于redis锁的简单实现

新建RedisLock类。 public class RedisLock implements Serializable {private static final long serialVersionUID 3077854413624876404L;private static final Log LOG LogFactory.get(RedisLock.class);/*** 锁标志对应的key*/private String lockKey;/*** 将key 的值设…

Android Studio打开一个外部的Android app程序

背景描述&#xff1a; 由于Android Studio环境的差异&#xff0c;从网上或者Git下载的一个Android开源项目&#xff0c;用自己的Android Studio加载打开时经常遇到各种问题。那么&#xff0c;有没有什么方法或者步骤可以快速的将一个已存在的android项目导入到自己的Android S…

云手机方案总结

精准把握账号基础设置 1.环境配置要合规真实&#xff1a;无论是在哪个国家或地区开展 TikTok 营销&#xff0c;都要确保云手机的网络环境、语言、时区、GPS 定位等设置与当地实际相符&#xff0c;选择稳定可靠的海外 IP 服务提供商&#xff0c;配置纯净独立的 IP&#xff0c;避…