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

计算机网络——网络基础1

网络基础一

1.初识网络

​ 网卡也是一种文件,所以对于网络的编程也是一种文件操作;

​ 早期由于不同的计算机之间要根据数据进行协作,但是计算机之间是独立的,所以使用了光驱或者软盘之类的进行协作;对于将计算机连接在一起完成数据的共享是历史发展的必然;后来出现了局域网LAN,之后随着历史的推动使得子网之间继续进行集连;但是长距离传输过程中需要进行主机的定位使用IP地址MAC地址等,还有传输过程中数据的安全问题等各种问题,需要进行解决;不同的子网通过交换机和路由器连接起来;最后形成了广域网将所有的局域网全部连接了起来;

2.认识协议

​ 由于数据经过了长距离的传输,沟通的成本变得很高;实际上在网线中传递的是光电信号;

​ 协议本质就是一种约定,通信双方通过规定约定可以很大程度地降低成本;协议有很多种,计算机通过协议解决不同的通信问题;

通信时有如下问题,需要每一层都要设计协议进行解决:

​ 1.如何处理发来的数据;应用层协议http/https/ftp/smtp等各种协议解决;

​ 2.长距离传输的数据丢失问题;传输层使用TCP/UDP协议进行解决;

​ 3.如何定位主机的问题;网络层的IP协议进行解决;

​ 4.保证数据准确地到达下一个设备;数据链路层的协议进行解决;

​ 网络通信的过程中会产生其他字段 ,这些字段叫做协议的报头;这些协议本质上就是一种结构体,保存着各种属性字段,将结构体对象的属性和数据拼接起来就构成了一个报文;只要通信双方都有这样的结构体对象,即可实现通信;现在的主机都是用的是TCP/IP四层体系结构,标准是一样的,所以都内置了协议,所以可以进行通信;

​ 可以通过物理性质的区别来定制0/1信号,这样计算机就能够识别二进制序列;

​ 必须有业内权威人士来定制一整套网络标准,所有的入网设备都遵守标准这样才能实现通信,否则标准不一样,导致协议不一样等各种问题,就无法在网络各层进行解析报文,达到通信的目的;

3.协议分层

​ 继承和多态的实现本质上就是在做软件分层,还有线程库中线程的执行函数实现和线程的执行进行软件分层;分层可以是上下的关系也可以是左右的关系;分层后最大的特点就是每一层的修改不会影响到其他层,实现高内聚低耦合

​ 网络分层是因为整体规模大,长距离传输问题多所以要对网络进行分层,具体的创建每一层的协议来解决每一层的问题;

​ 逻辑上是层内直接交互的,实际上层与层之间进行交互,贯串式地执行;正是因为从逻辑方面看待问题所以有了不同的网络层并且定制了不同的协议,使得层内通信双方可以进行通信;协议分层使得层与层之间低耦合,层内是高内聚的,当某一层要进行修改的时候并不会影响其他层,提高了可维护性和可扩展性;

4.OSI七层模型

​ 网路是需要一套标准的,OSI组织是当时的权威组织建立了七层网络模型,从低向上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;

​ 每一层要考虑调用下层问题还要考虑给上层提供调用问题;还需要解决层内通信的问题;实践中发现有些层是不可以在操作系统中实现的,所以就剩下了物理层、数据链路层、网络层、传输层、应用层;而物理层更关心的是电器特性,所以在软件方面真正关心的是四层协议;

相关文章:

  • 在django中使用kindeditor出现转圈问题
  • Leetcode 3.26
  • 图像处理与视觉感知---期末复习重点(4)
  • 【前端】-【性能优化常识】
  • Midjourney AI绘图工具介绍及使用
  • GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示
  • checkpoint 大模型、VAE、LoRA、Embedding、Controlnet这些是什么模型
  • excel创建和部分使用
  • leetcode88-Merge Sorted Array
  • Intellij IDEA构建Android开发环境
  • 业务服务:xss攻击
  • QT_day5:使用定时器实现闹钟
  • C# wpf 嵌入hwnd窗口
  • DNS协议 是什么?说说DNS 完整的查询过程?
  • 【C语言】【Leetcode】70. 爬楼梯
  • __proto__ 和 prototype的关系
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • CSS 专业技巧
  • ES10 特性的完整指南
  • FastReport在线报表设计器工作原理
  • HTML中设置input等文本框为不可操作
  • js数组之filter
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mysql_config not found
  • php面试题 汇集2
  • Python 反序列化安全问题(二)
  • Unix命令
  • 阿里云前端周刊 - 第 26 期
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 简单基于spring的redis配置(单机和集群模式)
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 使用 Docker 部署 Spring Boot项目
  • (3)nginx 配置(nginx.conf)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (第二周)效能测试
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (一)Java算法:二分查找
  • (转)ObjectiveC 深浅拷贝学习
  • (转)大型网站架构演变和知识体系
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net反混淆脱壳工具de4dot的使用
  • .net中我喜欢的两种验证码
  • .project文件
  • .ui文件相关
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [Avalon] Avalon中的Conditional Formatting.
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C/C++随笔] char与unsigned char区别
  • [C++]C++入门--引用
  • [CQOI 2010]扑克牌
  • [Docker]六.Docker自动部署nodejs以及golang项目