当前位置: 首页 > article >正文

初识网络原理

网络的发展史

  • 电报时代(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.kler.cn/news/308513.html

相关文章:

  • 前端基于Rust实现的Wasm进行图片压缩的技术文档
  • 中间件常见漏洞
  • android API、SDK与android版本
  • 【Qt | QLineEdit】Qt 中使 QLineEdit 响应 鼠标单击、双击事件 的两个方法
  • php语言基本语法
  • 若依的使用
  • LeetCode:1184. 公交站间的距离 一次遍历数组,复杂度O(n)
  • Comsol 利用多孔材料填充复合吸声器,拓宽低频完美吸声
  • 【我的 PWN 学习手札】Unsortedbin Attack
  • Chrome谷歌浏览器登录账号next无反应
  • C++ 重点的关键字
  • vue嵌入第三方页面
  • Java中分布式锁
  • mac新手入门(快捷键)
  • Vue面试题4
  • 缺陷(Bug)的一生
  • 【iOS】UIViewController的生命周期
  • 校园管理系统创新:Spring Boot框架应用案例
  • 文心智能体 城市印象之漫行北京 开发分享
  • 大舍传媒-日本媒体发稿推荐今日东京tokyotoday
  • grep 命令:文本搜索
  • 无畏契约 (Valorant)YOLO 模型数据集
  • 在Unity UI中实现UILineRenderer组件绘制线条
  • 音视频直播应用场景探讨之RTMP推流还是GB28181接入?
  • 仓储管理系统的设计与实现SSM框架
  • python数据分析 pandas库-数据的读取和保存
  • 【Linux 从基础到进阶】KVM虚拟化配置与管理
  • unity3d入门教程四
  • SprinBoot+Vue宠物寄养系统的设计与实现
  • PCL 曲线点云提取