初识网络原理

网络的发展史

  • 电报时代(19世纪中叶):电报是最早的远程通信方式之一,它通过电线传输编码信息,极大地缩短了信息传递的时间
  • 电话的发明(1876年):亚历山大·格拉汉姆·贝尔发明了电话,使得人们能够通过语音进行实时远程通信
  • 无线电技术(20世纪初):无线电技术的发展使得信息可以通过无线电波进行传输,这为后来的无线通信技术奠定了基础
  • ARPANET(1960年代):美国国防部高级研究计划局(ARPA)建立了ARPANET,这是第一个广泛使用的分组交换网络,被认为是现代互联网的前身
  • TCP/IP协议(1980年代初):互联网协议(IP)和传输控制协议(TCP)的标准化,为不同网络之间的互联互通提供了基础
  • 万维网(WWW,1990年代初):蒂姆·伯纳斯-李发明了万维网,并通过超文本传输协议(HTTP)和超文本标记语言(HTML)使得信息可以通过网页的形式在互联网上共享
  • 互联网的商业化(1990年代中期):随着网络技术的成熟和普及,互联网开始商业化,大量的公司和个人开始使用互联网进行商务活动
  • 搜索引擎的出现(1990年代末):谷歌、雅虎等搜索引擎的出现,极大地方便了用户在海量信息中寻找所需内容
  • 社交媒体的兴起(2000年代初):Facebook、Twitter等社交媒体平台的出现,改变了人们的交流方式,使得信息的分享和传播更加迅速
  • 移动互联网(2000年代末至今):智能手机和移动网络技术的发展,使得人们可以随时随地接入互联网,极大地扩展了网络的应用场景
  • 物联网(IoT,21世纪初):物联网技术的发展,使得各种设备能够连接到互联网,实现数据的收集、交换和分析
  • 5G网络(2010年代末至今):5G网络的推出,提供了更高的数据传输速率和更低的延迟,为未来的网络应用提供了更多可能性

几个关键的概念

局域网,广域网

两者之间只是一种相对的概念,没有绝对的局限,全世界最大的广域网叫做Intenet(万维网)

在用户路由器下载时,总的上传下载带宽,不能超过最顶层路由器wan口的带宽

主机

主机可以理解为用户或者商用的服务器,也就是说任意一台计算机都可以被叫做主机

交换机,路由器

交换机是一个重要的网络设备,路由器虽然有很多网口,可以让你插网线,组网,但是实际上,路由器的口可能不够用,此时就可以使用交换机,对接口进行扩展(类似于电脑的扩展坞)

交换机的特点就是口特别多,交换机对路由器的接口起到补充效果,一般家用/公司使用都是不至于的,但是确实联网设备特别多的,也是有可能会的

集线器:也可以对于端口进行扩展,现在几乎见不到了

五元组

在TCP/IP协议中,用五元组来标识⼀个⽹络通信:

  • 源IP:标识源主机
  • 源端⼝号:标识源主机中该次通信发送数据的进程
  • ⽬的IP:标识⽬的主机
  • ⽬的端⼝号:标识⽬的主机中该次通信接收数据的进程
  • 协议号:标识发送进程和接收进程双⽅约定的数据格式

可以在cmd中,输⼊ netstat -ano 查看⽹络数据传输中的五元组信息:

IP地址

标识网络一个设备的位置,通过位置找到这个设备,进行进一步的通信

IP地址,其实就是32位的整数(IPv4),IP地址就是4个字节的数字,往往是使用“点分十进制”的方式来表示IP地址,使用3个,把上述ip地址分成4个部分,每个部分1个字节,每个部分表示的范围0-255

端口号

标识一个主机上不同的应用程序,要求每个程序在启动的时候,就需要关联上一个和别人不重复的端口号(也可以叫做绑定),有的时候可能会谈到有的程序是有固定端口号的,这个说法源自于一个概念“知名端口号”,上古时期,大佬们为了避免当时的一些程序,端口号之间发生冲突,就给这些知名的程序,分配了不同的端口,比如...(不包含MySQL,tomcat更不包含Java,这些都是后来的,当时人家分的时候,这几个兄弟,还没起来呢)

  • http服务器:80
  • ssh服务器:22
  • ftp服务器:23
  • https:443

这些知名的端口当时一共分了1024个,随着时间的发展,知名端口,更多的是“建议”而不是约束,你搞一个http服务器,你可以使用80,也可以使用别的,想用哪个,你自己说了算

端口号不会不够用,除非你电脑上开了几万个服务器程序,消耗掉几万个端口,正常来说不会的,这种情况恐怕内存先不够用了,IP是区分主机的,要担心够不够用,端口号,无论如何都会够用的,一个主机上有0-65535这么多端口可以用(端口号是一个2个字节的整数),而且是要求同一时刻,不能重复,A程序这会用80,过一会A结束了,继续用80,也是ok的

协议

协议,⽹络协议的简称,⽹络协议是⽹络通信(即⽹络数据传输)经过的所有⽹络设备都必须共同遵 从的⼀组约定、规则。如怎么样建⽴连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能 相互通信交流。

最终体现为在网络上传输的数据包的格式

听起来很抽象,实际上是一个比较简单朴素的概念,其实就是一种约定,通信双方,对于通信规则的约定,一定是通信双方都得认可的,有一句话叫做:三流公司做产品,一六公司做标准

听起来感觉标准和协议类似,如果深究还是有差别的,标准往往是一个认可面非常广泛的“国家标准”,“国际标准”,协议则不一定,可以是认可面非常广,也可以是认可面不广的(甚至说只有你自己用的,也是ok的)


假设我有个朋友去相亲,相约在天桥见面,这个朋友很早就过去了,发现,果然有个妹子在那里好像是等人的样子,他俩就一边走一边聊,聊着聊着,聊了半天了,他突然感觉不对劲,你是王阿姨介绍的xxx嘛?人家说我不是啊,人家妹子问你是李阿姨介绍的xxx嘛??他说我也不是啊,这个兄弟直接抛下这个妹子,折回去找之前约好的妹子,等他溜回去之后,发现人家之前的早都不见了

假设,如果在见面之前,做好更充分的约定,就可以很好的避免上述问题,举个例子,约定见面的时候,妹子穿一个红色的裙子,男生胸前插个玫瑰花~~(通信双方都认可的一套规则,这样的规则,就可以称为是协议,即使这个协议,知识两个人之间的)

进行网络通信的时候,一定是需要通信协议的,主要是,两个用来通信的主机设备,不同的硬件,不同的操作系统,不同的应用程序,即使上述内容不同,通信也能够进行正常进行

协议分层

网络通信,是一个非常复杂的事情,这个过程中涉及到很多的细节问题,如果你使用一个协议来约定上述所有的细节,这个协议就会非常庞大,非常复杂;此时就可以把一个功能复杂的协议,拆分成多个功能更单一的协议了

确实是拆分了,但是拆出来的协议太多了,于是,就要对这些协议进行分类,甚至要进行“分层”(某个方法,非常复杂了,就可以拆分成多个方法,某个类,非常复杂了,拆分成多个类,某个文件,非常复杂了,拆分成多个文件),拆分是为了管理复杂程度,不让这个东西太复杂,每个部分负责一个功能,可以举一个例子来理解

小公司,没有复杂的组织架构,老板和大家都坐在一起,你有啥问题,都是直接和老板汇报,老板有啥活,也是直接给你安排;大公司,会对整个公司进行分组,每个组负责一部分工作,组和组之间要解耦合,每个组都会有组长,组员,把工作结果汇报给组长,组长再汇报给老板,如果组又进一步的多了,还要划分成部门

协议分层,也就是上述类似的效果,把很多协议按照功能分成不同的层级,每个层级都有对应的主线任务(目标/要解决的问题),上层协议会调用下层协议的功能,下层协议会给上层协议提供服务,不能够越级调用

协议分层的优势,主要是两个方面

封装的效果:某一层协议,不必知道其他层协议的细节,降低学习使用成本,只要会说汉语,不需要理解电话的工作原理,就能打电话,设计电话的人,可能是老外,不必懂汉语,也不妨碍他设计开发电话

任意层次的协议,都是可以灵活替换的(解耦合)

站在使用者的角度,完全感知不到任何区别,电话该咋打,还是咋打,语言协议变了,即使语言变了,电话这一层,没有任何影响,设计电话的人不需要针对“英语”做任何的改变和特殊处理

下一篇博客介绍TCP/IP五层(或四层)协议

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

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

相关文章

前端单独实现 vue 动态路由

前端单独实现 vue 动态路由 Vue 动态路由权限是指在 Vue 应用程序中,根据用户的权限动态生成和控制路由的行为。这意味着不是所有的路由都在应用启动时就被硬编码到路由配置中,而是根据用户的权限信息,在运行时动态地决定哪些路由应该被加载…

VirtualBox Install MacOS

环境搭建 git clone https://github.com/myspaghetti/macos-virtualbox 脚本配置 修改macos-guest-virtualbox.sh部分内容为 vm_name"macOS" # name of the VirtualBox virtual machine macOS_release_name"Catalina" # install &quo…

EmguCV学习笔记 C# 11.6 图像分割

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

《微信小程序实战(2) · 组件封装》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

天津大学推出“AI学长”

B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈又发生了啥新鲜事? 天津大学推出“AI 学长”海棠棠,全天候解答新生疑问 天津大学未来技术学院研发了名为“海棠棠”的新生智能体,它能够24小时不间断地为新生…

Oracle 19c异常恢复—ORA-01209/ORA-65088---惜分飞

由于raid卡bug故障,导致文件系统异常,从而使得数据库无法正常启动,客户找到我之前已经让多人分析,均未恢复成功,查看alert日志,发现他们恢复的时候尝试resetlogs库,然后报ORA-600 kcbzib_kcrsds_1错误 2024-09-15T17:07:32.55321508:00 alter database open resetlogs 2024-09-…

【iOS】push和present的区别

【iOS】push和present的区别 文章目录 【iOS】push和present的区别前言pushpop presentdismiss简单小demo来展示dismiss和presentdismiss多级 push和present的区别区别相同点 前言 在iOS开发中,我们经常性的会用到界面的一个切换的问题,这里我们需要理清…

C++11新增特性:lambda表达式、function包装器、bind绑定

一、lambda表达式 1)、为啥需要引入lambda? 在c98中,我们使用sort对一段自定义类型进行排序的时候,每次都需要传一个仿函数,即手写一个完整的类。甚至有时需要同时实现排升序和降序,就需要各自手写一个类&…

信息学奥赛初赛天天练-91-CSP-S2023基础题3-编译命令、树的重心、拓扑排序、进制转换、R进制转十进制、十进制转R进制

PDF文档公众号回复关键字:20240917 2023 CSP-S 选择题 1单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 11 以下哪个命令,能将一个名为 main.cpp 的 C 源文件,编译并生成一个…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二集:通过InControl插件实现绑定玩家输入以及制作小骑士移动空闲动画

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、通过InControl插件实现绑定玩家输入二、制作小骑士移动和空闲动画 1.制作动画2.玩家移动和翻转图像3.状态机思想实现动画切换总结 前言 好久没来CSDN看看&…

利用JS数组根据数据生成柱形图

要求 <html> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…

Python 基础 (标准库):datetime (基本日期和时间类型)

1. 官方文档 datetime --- 基本日期和时间类型 — Python 3.12.2 文档 tz — dateutil 3.9.0 documentation 2. 背景 2.1 处理时间数据的难点 计算机程序喜欢有序的、有规则的事件&#xff0c;但对于时间数据&#xff0c;其涉及的规则复杂且可能有变化&#xff0c;最典型例…

【homebrew安装】踩坑爬坑教程

homebrew官网&#xff0c;有安装教程提示&#xff0c;但是在实际安装时&#xff0c;由于待下载的包的尺寸过大&#xff0c;本地git缓存尺寸、超时时间的限制&#xff0c;会报如下错误&#xff1a; error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly&#xf…

2024永久激活版 Studio One 6 Pro for mac 音乐创作编辑软件 完美兼容

Studio One 6是一款功能强大的音乐制作软件&#xff0c;由PreSonus公司开发。它提供了全面的音频录制、编辑、混音和母带处理工具&#xff0c;适用于音乐制作人、音频工程师和创作人员。 Studio One 6拥有直观的用户界面&#xff0c;使用户能够快速而流畅地进行音乐创作。它采…

华为HarmonyOS地图服务 -- 如何实现地图呈现?-- HarmonyOS自学8

如何使用地图组件MapComponent和MapComponentController呈现地图&#xff0c;效果如下图所示。 MapComponent是地图组件&#xff0c;用于在您的页面中放置地图。MapComponentController是地图组件的主要功能入口类&#xff0c;用来操作地图&#xff0c;与地图有关的所有方法从此…

基于 onsemi NCV78343 NCV78964的汽车矩阵式大灯方案

一、方案描述 大联大世平集团针对汽车矩阵大灯&#xff0c;推出 基于 onsemi NCV78343 & NCV78964的汽车矩阵式大灯方案。 开发板搭载的主要器件有 onsemi 的 Matrix Controller NCV78343、LED Driver NCV78964、Motor Driver NCV70517、以及 NXP 的 MCU S32K344。 二、开…

【我的 PWN 学习手札】Fastbin Double Free

前言 Fastbin的Double Free实际上还是利用其特性产生UAF的效果&#xff0c;使得可以进行Fastbin Attack 一、Double Free double free&#xff0c;顾名思义&#xff0c;free两次。对于fastbin这种单链表的组织结构&#xff0c;会形成这样一个效果&#xff1a; 如果我们mallo…

记一次实战中对fastjson waf的绕过

最近遇到一个fastjson的站&#xff0c;很明显是有fastjson漏洞的&#xff0c;因为type这种字符&#xff0c;fastjson特征很明显的字符都被过滤了 于是开始了绕过之旅&#xff0c;顺便来学习一下如何waf 编码绕过 去网上搜索还是有绕过waf的文章&#xff0c;下面来分析一手&a…

分布式训练:(Pytorch)

分布式训练是将机器学习模型的训练过程分散到多个计算节点或设备上&#xff0c;以提高训练速度和效率&#xff0c;尤其是在处理大规模数据和模型时。分布式训练主要分为数据并行和模型并行两种主要策略&#xff1a; 1. 数据并行 (Data Parallelism) 数据并行是最常见的分布式…

【网络安全】逻辑漏洞之购买商品

未经授权,不得转载。 文章目录 正文正文 电子商务平台的核心功能,即购买商品功能。因为在这个场景下,任何功能错误都有可能对平台产生重大影响,特别是与商品价格和数量有关的问题。 将商品添加到购物车时拦截请求: 请求包的参数: 解码参数后,并没有发现价格相关的参数,…