网络基础概念

本文目标:

①了解网络发展背景, 对局域网/广域网的概念有基本认识;

②了解网络协议的意义, 重点理解TCP/IP五层结构模型;

③学习网络传输的基本流程, 理解封装和分用;

1.计算机网络背景

OS与网络

在整个计算机体系中,是先由操作系统,再有网络的!网络离不开OS,OS和网络是一体的。

网络发展

网络的起源是什么?

在计算机出现后,那时还没有网络,美国一些高校就已经引入了作为世界上先进的设备之一的计算机作为教学和研究设备,供给学生和教授使用。当时,计算机与计算机之间的数据传输是很不方便的,在计算机A处理完的数据,需要交给计算机B去处理,只能用一些存储数据的硬件存储起来,拿到计算机B中去,于是,为了计算机通信方便,为了满足高校内部的数据研究的需求和沟通,网络诞生!这就是网络的起源。

网络的发展过程。

独立模式:每台计算机都是相互独立的。在处理一批任务的时候,需要等待前面的计算机处理完毕才能运行起来。

网络互联: 多台计算机连接在一起, 完成数据共享。

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起。


广域网WAN: 将远隔千里的计算机都连在一起。

所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如, 我们有 "天朝特色" 的广域网, 也可以看做一个比较大的局域网。

那么网络是在哪里的呢?

首先,我们需要知道一个概念:软件是可以分层的!举一个例子:当我们在使用C++写代码,用到STL库的时候,STL底层源码是一层,上层接口是一层!也就是说STL库分层了,作为用户的我们,一般在使用的时候(并不是说在学习的时候)并不关心它的底层。

而网络其实也是一个软件。这里的网络,其实指的是网络协议栈,它是一个软件,贯穿了体系结构的tcp/ip,属于OS的一部分。我们学习网络,最重要的是要学习网路协议的四层:应用层,传输层,网络层和数据链路层。本文先简单说明一下每一层的主要作用。请继续往下看吧!

认识协议

协议,其实是一种约定。下面举个例子感性地对协议的认知。在网络不发达的年代,还在用座机打电话的时候,由于花费很贵,那么在远方读大学的我们就跟家里人约定好:

我给家里打电话,响一声就挂掉,那么代表我是给家里面报平安的。响两声就挂掉,那么代表我生活费没了。响三声而不挂掉,那么说明我有事情要跟家里人商量。

那么所谓的协议,就是约定,在计算机的协议中,是由程序员根据标准文档定义出来的协议。

由于计算机生产厂商有很多,计算机操作系统,也有很多,计算机网络硬件设备,还是有很多。如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是网络协议。

初始网络协议

协议分层

网络协议是分层的,从上面对网络协议栈的简单描述和图中也可以看出这一点。其中,应用层是位于用户进程中的,传输层和网络层是位于操作系统内核中的,数据链路层是位于硬件中的。这是四个重要层次的分布。

分层的最大好处是“封装”,我们可以类比面向对象,分层之后,作为用户的我们,并不需要关系传输层网络层数据链路层怎么样的。

OSI七层模型

一些概念

①OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;所谓逻辑上,就是在硬件上不实现,而在软件上实现这种功能。

 
②把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

 
③OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

 
④它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;但是, 它既复杂又不实用; 所以我们重点学习TCP/IP四层模型就可以了。

TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。而物理层一般很少考虑,因此只需四层模型。

简单介绍它们的主要功能:

我们先来说一个小例子,然后通过例子映射相关概念。

住在广东的二肥想要买一些猫条,于是在网上订购后,位于山东的商家给二肥发货了。那么商家肯定要给猫条进行打包封装,然后交给顺丰快递,顺丰快递经过比如江苏、安徽江西等等地区,最终到达广东,到达了二肥的手中。

数据链路层:负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。

通俗地来说,例子中的顺丰快递路线,便是数据链路层。

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。

通俗地说,例子中,决策顺丰快递路线,就是网络层做的。总不能先到北京,再到美国这样,然后绕地球一圈再来到广东这样吧?肯定得有人负责路线的决策。

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。

通俗地说,在例子中,如果我们的快递发生了意味,比如丢失,损坏等,那么就需要补发或者其它的处理方案。于是,传输层就在数据传输当中如果发生了意味,就重新从起始点发送书。

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.

通俗地说,就是二肥拿到猫条之后是如何分析数据和使用等,便是应用层的作用。

一般而言:对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容。对于一台路由器, 它实现了从网络层到物理层。对于一台交换机, 它实现了从数据链路层到物理层。对于集线器, 它只实现了物理层。但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)。

网络传输基本流程

简单认识了TCP/IP四层模型后,我们来看看网络是如何通过这四层模型进行传输的。

两台计算机通过TCP/IP协议通讯的过程如下:

用户在计算机A的用户层输入"你好"这个数据后,用户层就会对这个数据进行封装,封装后的数据往下走,进入传输层,传输层TCP再次对传进来的数据进行再次封装,加上传输层给的报头一起,然后继续往下走,走到网络层IP,继续加上报头封装,最后走到数据链路层,进行最后一次封装。然后交给计算机B的数据链路层,计算机B的数据链路层对来自计算机A的数据进行解包和分用,一层一层往上走,从数据链路层到应用层,每走一层就解包一次。这时候我们就会发现,计算机A和计算机B被封装或解包的数据,看起来是一样的。

报头

先举一个例子:我们都有过接受快递的经历,那么在快递盒子上的信息,比如寄出的地址以及目的地,以及其它的数据信息。其实报头就是类似这样的东西,报头记录着数据在每一层之间经过需要的起始地址和最终地址,以及其它的信息。

那么报头的作用就是指导当前的层来进行某种协同的决策。

在计算机OS的角度来看,报头和数据的意思便是:报头是一种结构化的数据,数据是一种有效载荷。

数据的封装,解包和分用

 报头跟“你好”就是一种封装,而解包,就是在接收方从数据链路层开始对发送方传来的封装好的数据进行解包。

几乎每一层的报头中,都要包含两种字段:

①当前报文的有效载荷要交付给上层的哪一个协议,是作为接收方的计算机B来讲的,这就是分用。

 

②需要明确报头和有效载荷的边界。

这两种字段是协议的共性。

IP和MAC

IP地址是在IP协议中, 用来标识网络中不同主机的地址,对于IPv4来说, IP地址是一个4字节, 32位的整数,我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255。

MAC地址用来识别数据链路层中相连的节点,长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19),在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。

总结一下:

IP地址就是记录着从哪里来,到哪里去的地址,不会变的,就好像唐僧要从东土大唐到西天,这个就是IP。而MAC是上一站从哪来,下一站要到哪去?就好像唐僧上一站是从女儿国来的,下一站要去哪哪一样。

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

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

相关文章

Windows下使用SSH密钥实现免密登陆Linux服务器

工具: win10、WinSCP 生成ssh密钥: 打开终端,使账号密码登录,输入命令 ssh-keygen -t rsa 会提示密钥存放路径,一般存放在默认路径,直接回车即可,中间会提示输入密码,这里需要注…

CC攻击原理以及如何防御策略

CC攻击原理以及如何防御策略 CC 攻击是一种 DDoS(分布式拒绝服务),它似乎比其他 DDoS 攻击更具技术性。在这种攻击中,看不到假IP,看不到特别大的异常流量,但会导致服务器无法正常连接。 很多创业公司辛辛苦…

你是真的“C”——C语言测评总结

你是真的“C”——C语言测评总结😎前言🙌BC146 添加逗号总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介&#xf…

TreEnhance: A Tree Search Method For Low-Light Image Enhancement 论文阅读笔记

这是2023年PR这个期刊的论文主要思想是,利用一系列预定义好的操作序列来进行增强,然后利用强化学习来学习增强序列的预测。所以训练阶段有两个交替进行的阶段,一个是蒙特卡洛树搜索阶段,第二个是训练深度强化学习的阶段。而测试的…

中级软件设计师备考---计算机组成与体系结构3

目录①磁盘工作原理②计算机总线③系统可靠性分析④校验码CRC循环校验码海明校验码①磁盘工作原理 计算题 ②计算机总线 概念题 ③系统可靠性分析 计算可靠度 ④校验码 码距:是指两个码字之间的不同位数。例如,1010和1111之间的码距是2&#xff0c…

160. 相交链表 ——【Leetcode每日一题】

160. 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c…

生成式人工智能所面临的问题有哪些?

在生成式人工智能中工作需要混合技术、创造性和协作技能。通过发展这些技能,您将能够在这个令人兴奋且快速发展的领域应对具有挑战性的问题。 生成式人工智能是指一类机器学习技术,旨在生成与训练数据相似但不完全相同的新数据。 换句话说,…

【二分—STL】lower_bound()函数upper_bound()函数的使用总结

目录一、基本用法:二、具体到题目中如何应用1、数的范围2、递增三元组3、数组元素的目标和一、基本用法: lower_bound() 用于二分查找区间内第一个 大于等于某值(> x) 的迭代器位置 upper_bound() 用于二分查找区间内第一个 大于某值(> x) 的迭代器…

IP协议以及相关技术

这里写目录标题前言正文IP基本认识IP的作用IP和MAC的关系IP地址的基础知识IP地址定义IP地址分类(IPv4)无分类IP地址CIDR子网掩码IPv6基础知识相关技术DNS域名解析ARPDHCPNATICMPIGMP总结参考连接前言 大家好,我是练习两年半的Java练习生,今天我们来讲一…

Meta AI Segment Anything Model (SAM)初体验

最近Meta AI发布了Segment Anything模型,可以直接分割任何图片。我趁热乎体验了一下。 文章目录进入官网 & 上传图片Hover & Click——截取物体Box——框选物体Everything——提取所有物体Cut-Outs——提取结果进入官网 & 上传图片 打开Segment Anythi…

JMP指令寻址方式总结,JMP BX指令寻址方式是什么

jmp 指令的几种寻址方式 jmp short 标号 段间跳转 -128-127 jmp far ptr 标号 超段转移 跳转包含目标地址jmp reg 16位寄存器 jmp word ptr 内存单元地址 段内转移 jmp dword ptr 内存单元地址 ( 段间转移) 高字地址存放cs 低字节存放ip jmp指令用法总结 1.直接用法(只能在Deb…

hadoop3.2.4 集群环境搭建

本文介绍hadoop3.2.4集群环境搭建看本文之前最好先看看伪分布式的 搭建文章链接如下,因为有些问题是伪分布式的时候遇到的,这里就不重复展示解决办法了。 链接:伪分布式搭建 文章目录前言一、准备机器二、linux环境准备工作2.1 修改主机名2.2…

超详细从入门到精通,pytest自动化测试框架实战-钩子函数(五)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 pytest这个框架提供…

政务云建设与应用解决方案

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 政府信息化趋势-四大四新-政务云需求 大平台共享-新设施:打造形成“覆盖全市、统筹利用、统一投入”的大平台,有力促进政务信息系统整合; 大…

面试官:说一说mysql的varchar字段最大长度?

在mysql建表sql里,我们经常会有定义字符串类型的需求。 CREATE TABLE user (name varchar(100) NOT NULL DEFAULT COMMENT 名字 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 ;比方说user表里的名字,就是个字符串。mysql里有两个类型比较适合这个场景。 ch…

【Maven】2—命令行创建Web工程依赖排除

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…

【游戏逆向】FPS游戏玩家对象数据分析

目标(Objective) Ÿ Health Ÿ Rifle Ammo Ÿ Pistol Ammo Ÿ Player Pointer 0x01 玩家健康 查找玩家健康值,玩家健康值是100,但是我们并不知道数值类型,我们可以使用精确搜索方式搜索100-所有类型 CE搜索 结果很多,我们…

Windows/Mac/Linux测试远程端口是否开放

目录 Windows 第一种 第二种 Mac/Linux Windows 第一种 WinR快捷键, 在弹出的运行框中输入powershell 接着在powershell窗口中输入: Test-NetConnection ip地址 -Port 端口号 使用这个命令有个好的地方是如果失败了, 那么它会帮你去ping远程ip, 这样就不需…

ARIMA序列分析

1. 什么是平稳序列 (stationary series):基本上不存在趋势的序列,各观察值基本上在某个固定的水平上波动或虽有波动,但并不存在某种规律,而其波动可以看成是随机的。 2. ARMA模型 ARIMA的优缺点 优点&am…

2023Q2押题,华为OD机试用Python实现 -【查找舆情热词 or 热词排序】

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:查找舆情热词 or 热…