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

初识计算机网络

在这里插入图片描述

文章目录

  • 一、网络发展史
    • 独立模式
    • 网络互连
    • 局域网LAN
    • 广域网WAN
  • 二、网络通信基础
    • IP地址
    • 端口号
    • 协议
    • 五元组
    • 协议分层
    • OSI七层模型
    • TCP/IP五层模型
    • 简单的传输流程
      • 发送方
      • 接收方

一、网络发展史

独立模式

独立模式:顾名思义,也就是我们的每台计算机直接是相互独立的
在这里插入图片描述

网络互连

时间在进步,我们的计算机与计算机之间需要相互通信,共享软件和数据,就有了网络互联
网络互连:将多台计算机连接在一块,完成相互通信,本质上是网络数据传输,就是计算机与计算机之间通过网络来传输数据,也称为网络通信
根据网络互联的规模大小,可以划分为局域网和广域网。

局域网LAN

局域网: Local Area Network,简称为LAN,局域网是本地,局部组建的一种私有网络,组建局域网的目的是,为了局域网内部的主机之间能够方便的进行网络通信,称之为内网,但是连接的前提是保持网络的连接。
在这里插入图片描述

广域网WAN

广域网:Wide Area Network,简称WAN,通过路由器,将多个局域网连接起来,形成一个范围更大的网络,这就称为广域网。广域网下的局域网都属于其的子网。
在这里插入图片描述
我们这里的局域网和广域网只是一个相对的概念,一个广域网也可以看作是一个比较大的局域网。

二、网络通信基础

网络互连的目的就是进行网络通信,那么我们组建的网络当中,如何判断从那台主机将数据传输到那台主机呢? 就需要用一系列信息来标识。

IP地址

IP地址:主要用于标识网络主机、其他网络设备(路由器等)的网络地址。说的简单一点就是 IP地址标识了网络上设备所在的位置

就像是我们发快递类似,我们需要明确收件地址(IP地址),也能成功将快递发出。
我们的IP地址是一个32位的二进制数,通常用"点分十进制"的方式来表示: 01101111 00010011 01100000 01001111表示为: 111.19.96.76。

也有一些特殊的IP,本机回环地址(127.*),通常用127.0.0.1表示,主要用于本机到本机的网络通信,不走网络的方式传输。

我们的IP地址明确了设备的位置,但是到达主机后,传给那个程序接受,就引入了一个新的概念:端口号。

端口号

端口号:端口号可以标识主机中发送数据、接收数据的应用程序。

我们在发快递时,不仅要填写收货地址(IP地址),还要填写收货人(端口号).

我们用0 ~ 65535范围的数字,来标识一个端口号,网络通信中,我们的一个应用程序绑定一个端口号来收发网络数据,两个不同的应用程序不能绑定同一个端口号。

我们现在已经可以准确的定位到网络中唯一的一个应用程序,但我们的网络通信是基于电信号/光信号进行传输的,那么如何向对方说明我们发送的数据是什么样的呢?
基于网络传输数据,我们需要用协议来规定双方的数据格式

协议

协议(网络协议):网络通信经过的所有网络设备必须遵守的一组规定,最终体现在网络上传输的数据包的格式。简单地说就是,通信的双方进行一个约定,发送方约定好发送的数据是啥样的,接收方按照固定的形式进行解析,这样接收方才能够准确无误的接受。

五元组

在TCP/IP协议中,我们用五元组来标识一个网络通信:

1.源IP:标识源主机
2.源端口号:标识源主机发送数据的应用程序
3.目的IP:标识目的主机
4.目的端口号:标识目的主机中接受数据的应用程序
5.协议:标识发送端和接收端双方约定的数据格式

我们可以类别发快递:
在这里插入图片描述
我们可以在cmd命令中,查看网络通信中的五元组信息:
在这里插入图片描述

协议分层

网络通信是一个比较复杂的事情,我们实现起来会比较复杂,如果我们的协议太复杂了,那么我们的使用成本,维护成本都会非常高,所以我们会将一个大的协议,拆分成若干了相对简单的小协议。
我们拆分为一些小协议之后,发现某些协议之间起到的功能和作用是相似的,于是我们就叫将这些小协议分层(分类)。
我们协议的分层有以下好处:

1.降低了学习和维护成本(封装)
2.灵活的可以针对某一层的协议进行替换

我们的协议分层有两大风格:

  1. OSI七层网络模型(教科书上的)
  2. TCP/IP五层网络模型(实际上的情况)

OSI七层模型

OSI: Open System Interconnection,开放系统互连
在这里插入图片描述
我们的OSI七层模型复杂且不实用,所以OSI七层模型没有实现。我们实际组件网络时,使用的主要是TCP/IP五层模型来实现,所以我们着重介绍TCP/IP五层模型。

TCP/IP五层模型

TCP/IP模型是OSI的简化实现版本
在这里插入图片描述
我们越靠近物理层越接近硬件设备,越靠近应用层就越接近用户。
上层协议调用下层协议,下层协议为上层协议提供服务。

**应用层:**描述了两个主机的两个应用程序之间进行相互交流的数据格式
**传输层:**解决了端到端可靠性问题,能确保数据可靠的到达目的地,甚至能保证数据按照正确的顺序到达目的地
**网络层:**网络层的作用是在复杂的网络环境中为要发送的数据报找到一个合适的路径进行传输。网络层负责将数据传输到目标地址。
**链路层:**我们有些地方将物理层和数据链路层统称为一层:链路层, 链路层有时也称作数据链路层或网络接口层,用来处理连接网络的硬件部分。该层既包括操作系统硬件的设备驱动、NIC(网卡)、光纤等物理可见部分,还包括连接器等一切传输媒介。在这一层,数据的传输单位为比特。

简单的传输流程

发送方

我们来模拟一个QQA用户给B用户发送一个 hello world!
我们用户在聊天界面输入hello world!时,QQ就会将这个字符串给构造成一个应用层数据报

1.应用层
我们QQ的应用层的具体数据格式我们是不清楚的,我们假设这里的应用层协议的格式是: 发送方QQ,接收方QQ,发送时间,消息内容。
在这里插入图片描述
程序调用操作系统API,将这个应用层数据交给传输层

2.传输层(操作系统内核)
在传输层中,我们要将应用层的数据构造成传输层的数据报,我们传输层常用的协议是TCP/UDP,假设我们这里使用的是TCP协议,那么我们就需要构造出TCP的数据报
在这里插入图片描述
我们这里的TCP报头,是一个特定格式的字符串(涉及源端口,目的端口)。
然后传输层将TCP数据报交给网络层.

3.网络层
网络层最常用的协议是:IP协议,将TCP数据报构造成一个IP数据报
在这里插入图片描述
我们这里的IP报头也相当于是一个特定的字符串,包含一些其他信息(源IP和目的IP)
然后将IP数据报交给数据链路层

4.数据链路层
我们数据链路层最常用的协议:以太网,将上述的IP数据报打包成一个以太网数据帧,
在这里插入图片描述
然后将以太网数据帧交给物理层

5.物理层
物理层将上述的以太网数据帧的二进制数据转换为电信号/光信号,然后进行真正的发送。

我们网络传输数据的单位:
包(packet),报(datagram),帧(frame),段(segment)

接收方

1.物理层
我们接收方的网卡接收到了光信号或者电信号,然后将这个信号转换回二进制数据,转回的这个数据是一个以太网数据帧,然后交给数据链路层。

2.数据链路层
我们数据链路层对这个数据进行解析
在这里插入图片描述
数据链路层去掉帧头帧尾,取出中间的载荷,然后交给网络层IP协议
为什么知道这是IP数据报,因为我们以太网数据帧帧头会记录这个载荷是不是IP数据报

3.网络层
IP协议进行解析,取出IP数据头,将得到的传输层数据报交给传输层
在这里插入图片描述
我们的IP报头里会记录,载荷是TCP还是UDP协议

4.传输层
TCP进行解析,取出TCP报头,然后将载荷交给应用层对应的应用层程序
在这里插入图片描述
我们的TCP报头里有一个目的端口,目的端口标识着一个具体的应用程序。、

5.应用层
QQ就会对上述数据进行解析,然后显示到用户界面上。
在这里插入图片描述
这就是一个简单的网络通信流程,我们整个网络协议,分成了许多层,上层协议调用下层协议(上层将数据交给下层,继续封装),下层协议为上层协议提供服务(下层对数据进行解析,然后交给上层)。
但是我们这里的几层协议之间是有层级关系的,只有相邻的层级之间才能进行交互。

相关文章:

  • 无痕埋点在Android中的实现
  • 全网最详细地介绍mybatis-plus框架
  • C语言及算法设计课程实验五:循环结构程序设计
  • Java 定时任务详解
  • h5实现相机
  • 字节跳动青训营--前端day6
  • 浅谈估值模型:PB指标与剩余收益估值
  • 深度解读 python 实现 dbscan算法
  • 2023年“华数杯”国际大学生数学建模A题完整思路
  • C++ 入门
  • 机器学习研究的 12 个宝贵经验
  • LabVIEW更高的吞吐量与更少的延迟2
  • 【C语言练习】杨氏矩阵、杨辉三角
  • 【Java】到底什么是包?|最通俗易懂讲解|保姆级
  • 【YBT2023寒假Day4 B】人人人数(数学)
  • php的引用
  • [译]前端离线指南(上)
  • AngularJS指令开发(1)——参数详解
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • JavaScript 奇技淫巧
  • Laravel Telescope:优雅的应用调试工具
  • Mac转Windows的拯救指南
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring-boot 启动时碰到的错误
  • STAR法则
  • Sublime Text 2/3 绑定Eclipse快捷键
  • TCP拥塞控制
  • Theano - 导数
  • 多线程事务回滚
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聊聊flink的BlobWriter
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 少走弯路,给Java 1~5 年程序员的建议
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 阿里云重庆大学大数据训练营落地分享
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #14vue3生成表单并跳转到外部地址的方式
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (42)STM32——LCD显示屏实验笔记
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (八)Flask之app.route装饰器函数的参数
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (十)c52学习之旅-定时器实验
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET Core跨平台微服务学习资源
  • .NET NPOI导出Excel详解
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET微信公众号开发-2.0创建自定义菜单