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

数据通信基础

文章目录

  • 一、OSI七层网络模型
    • 物理层
    • 数据链路层
    • 网络层
    • 传输层
    • 应用层
  • 二、IP地址
    • 私有IP地址
    • 子网掩码(NetMask)
    • IP网络通信类型
    • 广播地址与网络号
  • 三、TCP/UDP
  • 四、数据分装
  • 五、数据报文

一、OSI七层网络模型

OSI网络模型

物理层

比特流传输

  • 不管通过什么样的介质,将信息的二进制能够传递到另外一个节点,这个过程就是物理层
  • 物理层定义了一系列传输介质的电气标准,这个是弱电工程师关心的
    • RJ45俗称水晶头
    • T568B
      • 线序标准,目前市场上绝大多数网线是这个标准
        • 橙白 橙 绿白 蓝 蓝白 绿 棕白 棕
      • T568A
    • SFP
      • SFP看拉环颜色
        • LC连接器,进出分开
        • SC连接器,单根纤进出

数据链路层

提供介质访问、链路管理等

封装成帧、差别检错、透明传输

  • 将物理层传递过来的二进制信号内容进行翻译,翻译的结果被称为数据帧
  • 以太网传递的最终形式是二进制,以太网卡都会内置处理芯片,用来处理最初的112个二进制
    • 前48位是目的地MAC地址(媒体访问控制,相当于网卡的身份证号码)
      • 之后的48位是发送者的MAC地址
      • 之后的16位,表示数据包的类型
    • 0x0800,ipv4数据报文
      • 0x80dd,ipv6报文
      • 打开cmd,输入ipconfig/all,可用查看window所有网卡的MAC地址
    • MAC地址
      • 前24位是组织唯一标识符,可以看出来网卡的品质
  • 物理层被认为是不可靠的,有可能接触不良,有可能是电测干扰,有可能闪电风暴
    • 数据链路层通过CRC循环冗余校验生成验证码,放在数据包最后的FCS,用来保证数据正确,如果错误则丢弃

网络层

寻址和路由选择

  • 路由,寻址功能
  • 当计算机从网卡后获得后数据是ipv4之后,就以ipv4的格式去理解后续的内容
  • 需要注意的关键内容如下
    • protocol
      • 17:UDP
      • 6:TCP
    • 源与目的ip地址
      • mac地址比作为身份证号,那么ip地址就是当前你所处的位置,快递小哥通过你的位置找到你,通过你的身份证确认你

传输层

建立主机端到端连接

端对端连接

  • 当计算机限制已经确定这个数据就是给我的之后,就需要判断这个数据是什么业务
  • 需要注意的关键内容
    • 源目的端口号
      • 范围是1-66535
      • 默认情况下,所有端口都是关闭的,当有程序需要网络通信的时候,就会选择一个端口号占用
      • 正常情况下,电脑上大多数软件端口号是随机的,因为不需要被访问,只需要回复
      • 有些服务是需要被访问的,所以这些访问需要占据固定的众所周知的端口号
        • 在电脑上的C:\windows\system32\dreivers\etc\service文件中保存着windows主动访问其他主机时候默认使用的端口号
        • http 80/tcp
        • ftp 20/tcp 21/tcp
        • mstsc 3389/tcp 3389/udp
        • dns 54/tcp 53/udp
        • telnet 23/tcp
        • ssh 22/tcp
      • 在cmd中输入netstat-ano可以查看ip地址、端口号、进程号对应的关系

应用层

提供应用程序间通信

  • 产生用户数据,为用户提供用户交互的接口

二、IP地址

  • IP地址是32位二进制,类似手机号码有归属地和号码字段,归属地字段一样,说明在同一个运营商同为一个范围
  • 为了让人类能够记住,不眼花,使用点分十进制
  • IP地址网络位
    • IP地址网络位表示一样是同一个局域网的
    • 局域网是多台设备组成,可以直接不受控制的访问
    • 正常情况下,一家公司为了安全、财务、研发、it、业务等部门之间相互隔离或者受控
  • IP地址主机位
    • 在网络位相同的情况下(也就是一个局域网),主机位不能重复
    • 主机位是为了帮助局域网内的设备相互之间进行更高层的通信封装使用
  • 网络类型
    • A:1.0.0.0~126.255.255.255/8
      • 127开头的作为本地的测试地址
      • A类地址的局域网可以存在2^24-2个主机
    • B:128.0.0.0~191.255.255.255/16
      • B类地址的局域网可以存在2^16-2个主机
    • C:192.0.0.0~223.255.255.255/24
      • C类地址的局域网可以存在2^8-2个主机
    • D组播没有网络位概念
    • E用不到
    • 使用子网掩码来区分网络位和主机位,因为用类的方式使用ip地址空间太土豪
    • 子网掩码可以让IP地址自由的划分网络位数,子网掩码也是32位二进制,所以可以和IP地址进行一一对应,规定子网掩码为1,那么所对应的IP地址就是属于网络位

私有IP地址

  • 如果要取得互联网合法地址用于通信,必须要找iana.org组织分配
  • 很多企业内部都有大量的网络设备,大多数时候这些设备只需要内部通信即可
  • 企业的网络管理员可以从如下网段中自行分配地址
私有IP地址范围地址范围
10.0.0.0/810.0.0.0到10.255.255.255
172.16.0.0/12172.16.0.0到172.31.255.255
192.168.0.0/16192.168.0.0到192.168.255.255
  • 私有IP地址空间中的地址不需要申请,随意使用,但是不能在互联网上与合法地址通信(因为对方没法回复你这个地址,因为世界上私有IP地址段无数个重复的,怎么指定回到谁那里呢)
  • 而我们明明用的私有IP地址,也可以上网,因为我们需要先把自己的上网请求提交给网络中的网关(就是你家的路由器),再由网关代替我们去获取内容转交给我们的电脑手机,而网关往往能从运营商哪里得到一个合法的公有IP地址

子网掩码(NetMask)

  • 网络掩码与IP地址搭配使用,用于描述一个IP地址中的网络部分及主机部分
  • 子网掩码32bits,与32bits的IP一一对应,掩码中为1的位对应IP地址中的网络位,掩码中位0的位对应IP地址中的主机位
    在这里插入图片描述
  • 减少一个局域网中的设备数量可以有效降低广播报文消耗资源
  • 可变长子网掩码可以将一个局域网中的主机地址分配的更加小
    在这里插入图片描述

IP网络通信类型

  • 单播(Unicast)
  • 广播(Broadcast)
  • 组播(Multicast)

广播地址与网络号

  • 在局域网中经常会有广播的需要(比如,mac地址查询,地址冲突检测等等),所以将主机位全为1的地址做为本局域网的广播地址(广播并不能跨越不同的局域网)
  • 在网络中需要表示整个局域网,就像邮政编码表示一个大的区域一样,所以将主机位全为0的地址作为本局域网的网络号,用来代指整个网段

三、TCP/UDP

1-65535

  • tcp全称传输控制协议,传输层用来保障数据的可靠传输,并且携带基本的端口号
    • 可靠的协议,可以知道数据丢失和差错的信息
      tcp建立连接
  • udp全称用户数据报文协议,只携带了基本的端口号
    • 尽力而为的协议,无法获知数据的接受情况

四、数据分装

在这里插入图片描述

  • 数据从产生到传递到目的地的过程中会经历好几个过程,每个过程都负责加工自己这部分内容,类似于工厂流水线

数据解封装的过程和数据封装过程正好相反,数据封装是由发送者执行,数据解封装是由接收者执行

五、数据报文

在这里插入图片描述

相关文章:

  • gcd得最大公约数,辗转相除法理解
  • Dockerfile镜像实战
  • ReactHooks:渲染与useState
  • openssl3.2 - 在VS2019下源码调试openssl.exe
  • 如何通过Burp Suite专业版构建CSRF PoC
  • 【纯CSS特效源码】(二)精美的立体字
  • JavaScript基础05
  • css 怎么绘制一个带圆角的渐变色的边框
  • UGUI Image图像控件替换图片
  • Java 8 中的 Stream 轻松遍历树形结构
  • 视频转为序列图的软件,让视频批量转为序列图
  • Object.keys()
  • Go语言学习记录——用正则表达式(regexp包)来校验参数
  • mysql进阶-索引基础
  • 高效构建Java应用:Maven入门和进阶(五)
  • 【译】JS基础算法脚本:字符串结尾
  • “大数据应用场景”之隔壁老王(连载四)
  • in typeof instanceof ===这些运算符有什么作用
  • Javascripit类型转换比较那点事儿,双等号(==)
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript中的对象个人分享
  • Laravel核心解读--Facades
  • Spring-boot 启动时碰到的错误
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 使用 Docker 部署 Spring Boot项目
  • 我的面试准备过程--容器(更新中)
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 整理一些计算机基础知识!
  • #include
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (70min)字节暑假实习二面(已挂)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (转)shell调试方法
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET 8.0 发布到 IIS
  • .Net Memory Profiler的使用举例
  • .Net MVC + EF搭建学生管理系统
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 常见的偏门问题
  • @RunWith注解作用
  • @Valid和@NotNull字段校验使用
  • @取消转义
  • [20171102]视图v$session中process字段含义
  • [Android学习笔记]ScrollView的使用
  • [BZOJ] 2044: 三维导弹拦截
  • [C#C++]类CLASS
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日
  • [ffmpeg] av_opt_set 解析