IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络 - 初识网络 -> 正文阅读

[网络协议]计算机网络 - 初识网络

1. 网络互连
2. 局域网和广域网
3. IP地址和端口号
4. 网络协议
5. OSI七层模型
6. TCP/IP模型
7. 模拟实现网络通信


1. 网络互连

??几十年前, 在计算机刚刚兴起的时候, 计算机之间是相互独立的, 然而, 随着时代的发展, 越来越需要计算机之间的相互通信, 需要计算机之间进行共享数据, 传输数据, 也就是多个计算机协同完成业务, 于是, 网络互连由此产生.

??网络互连:多台计算机连接在一起, 实现数据的共享. 数据共享的本质其实就是网络中的数据传输, 即计算机通过网络来传输数据, 又叫做网络通信. 根据网络互连的规模大小, 我们将网络的互连划分为局域网广域网.

局域网和广域网

??局域网(local area Network), 又叫LAN, 局域网是在本地范围内局部组建的一种私有网络(例如一间办公室内的网络, 一个家庭里的网络)

??广域网(wide area Network), 又叫WAN, 通过路由器将多个局域网连接起来, 形成一个非常庞大的网络体系, 就构成了一个广域网, 广域网内部的局域网都属于其子网, 全球最大的广域网为 - “Internet”(因特网)

??局域网和广域网之间没有明显的划分, 也就是没有规定多少米范围内的网络属于广域网还是局域网, 要判断一个网络属于广域网还是局域网, 从宏观上判断即可, 范围小的网络即为局域网, 范围大的网络即为广域网.

IP地址和端口号

在进行网络互连时, 网络中的设备非常多, 像主机, 交换机, 路由器等设备都属于网络互连中的设备, 那么,如何将这么多的设备进行区分呢?

这就用到了IP地址, IP地址用于标识网络主机以及其他网络设备(如路由器)的网络地址, 简单来说, IP地址定位了网络中每台设备的位置.

IP地址的格式是一个4字节(也就是32个比特位)的二进制数, 通常情况下, IP地址都被分割为4个"8位2进制数", 每个数字之间用点号" . “连接, 而每个8位二进制数的范围为 0~255, 因此, 最大的IP地址为"255.255.255.255”.

IP地址解决了设备在网络中的地址问题, 然而, 一台主机中可能同时运行着多个进程, 数据传输到相应的主机之后, 要由哪个进程来进行接收呢?

在网络通信中, 端口号用于标识主机中发送和接收数据的进程, 也就是说, 数据通过IP地址发送给主机,然后通过端口号来定位到需要获取这些数据的进程.

端口号是一个范围为0~65535的数字, 在网络通信中, 进程可以通过绑定一个端口号来实现网络数据的接收和发送. 例如, MySQL服务器的默认端口号为3306.

注意:在网络通信中, 同一个进程可以有多个不同的端口号, 但是, 不同进程的端口号不可以相同.

引入网络协议

?? 有了IP地址和端口号之后, 就可以正确地定位到网络中特定主机上的进程, 那么, 进程和进程之间是如何实现数据传输的呢?例如, 我通过我的主机向其他人的主机发送了一条消息, 一个文档, 又发送了一张图片, 那网络是如何精准无误地将不同类型的数据传输到其他人的主机呢?

基于网络传输, 可以通过协议来规定双方的数据格式.

4. 网络协议

?? 网络协议是网络通信过程中所有网络设备都必须遵守的一组约定和规则, 如怎样建立设备间的连接, 怎样互相识别等. 只有所有的设备都遵从网络协议, 才能实现设备间的通信交流.

网络协议的三要素:

  1. 语法:数据与控制信息的结构或格式
  2. 语义:即需要发出何种控制信息, 完成何种动作以及做出何种响应
  3. 时序:规定了事件实现的先后顺序

为什么要使用网络协议呢?

??使用网络协议是为了消除网络中的差异. 例如, 如果没有物理层协议(网络协议中的一种), 不同的生产厂家生产出的计算机可能各不相同, 甚至是接口的大小和形状可能都会各有千秋.

??为了统一进行管理所有的网络设备, ISO提出了一个模型, 也就是OSI七层网络模型, 每层都有其对应的网络协议.

5. OSI七层模型

OSI:即Open System Interconnection, 开放系统互联

OSI七层模型的体系结构为:
请添加图片描述
??OSI模型将网络从逻辑上分为了七层(注意:分层仅限于逻辑层面, 而并非物理层面), 其最大的好处就是将服务, 接口和协议明确地区分开, 概念清楚, 理论完整, 通过七个层次化的结构模型使不同的系统, 不同的网络之间实现可靠的通讯.

??但是, OSI模型有着明显的缺点, 这个模型太过理想化, 庞大的体系结构使得它既复杂又不实用, 这样的缺点使得这个模型几乎只存在于理论中, 生活中实际应用的是另一种模型 - TCP/IP五层模型, 这也是我们需要重点学习的.

6. TCP/IP模型

请添加图片描述
可以看到, 五层模型将OSI七层模型中的上面三层(应用层, 表示层, 会话层)合并在了一起, 组成了新的应用层.

TCP/IP模型中每层的功能:

  1. 物理层:负责网络通信中的硬件设备, 所有针对硬件设备的约定都是物理层协议所负责的, 物理层协议需要保证所有的主机和网络设备之间是相互匹配的
  2. 数据链路层:负责相邻两个设备之间的通信(相邻设备就是通过网线连接起来的设备)
  3. 网络层:负责点到点之间的通信, 也就是在网络中的任意节点到任意节点之间, 由网络层协议负责在这两个节点之间规划出一条合适的路线
  4. 传输层:负责端到端之间的通信, 与网络层不同, 传输层只关注结果不关注过程, 也就是只需要关注起点和终点, 不需要关心数据是通过哪条网络路径到达的
  5. 应用层:和应用程序密切相关, 数据对于不同的应用程序有不同的用途

7. 模拟实现网络通信

发送方向接收方发送一条消息:

  1. 发送方的应用层协议开始生效, 发送消息的进程会根据该进程的应用层协议构造出一个应用层的协议报文(报文:遵从网络协议的数据)
    请添加图片描述
    创建好应用层报文之后, 应用层协议就会调用操作系统的API(也就是socket), 将应用层的数据交给传输层处理

2.传输层将应用层传过来的协议进行封装, 也就是为协议加上传输层协议的报头.

传输层最典型的协议有TCP协议, UDP协议等, 以TCP协议为例:
请添加图片描述TCP报头中存放了源端口和目的端口等信息, 封装好之后, 传输层会将报文传给网络层

  1. 网络层获取到传输层传来的报文之后, 会根据当前正在使用的网络层协议(例如IP协议)继续对报文进行封装, 再次为报文加上报头, 将TCP数据报构造成IP数据报(网络层的操作是在操作系统内核中进行的)
    请添加图片描述
    IP数据报头中存放了源IP和目的IP等信息, 封装好之后, 网络层将报文传给数据链路层

  2. 报文传输到数据链路层之后, 数据链路层会根据当前的协议(数据链路层最常用的协议是以太网协议)构造出一个数据链路层的数据报, 例如以太网协议帧

请添加图片描述
以太网数据帧的帧头中存放的是下一个要到达的设备的地址(类似于中转站), 帧尾中存放的是校验和(后面会学到), 封装完成之后, 数据链路层会将以太网数据帧发送给物理层

  1. 物理层收到数据链路层发来的以太网数据帧(一组二进制数据)之后, 会将其中的1和0分别变为高点平和低电平, 然后通过光纤或无线的方式传送出去, 至此, 这些数据就脱离了发送方的主机, 经过若干个路由器或交换机的转发, 将数据送往接收方.

接收方收到消息:

  1. 接收方的物理层率先感知到一组高低电平, 然后将这组点平翻译为0和1的二进制编码(也就是一个完整的以太帧), 将这个以太帧发送到接收方的数据链路层

  2. 数据链路层接收到以太帧之后, 将以太帧的帧头和帧尾去掉, 取出其中的IP数据报, 将去掉帧头和帧尾的报文发送给网络层

请添加图片描述

  1. 网络层接收到报文之后, 将IP报头去掉, 取出里面的TCP数据报交给传输层
    请添加图片描述

  2. 传输层又会对获取到的报文进行解析, 去掉TCP报头, 取出应用层报文并传给应用层
    请添加图片描述

  3. 应用层调用socket API从内核中读取到报文, 并按照应用层协议对该报文进行解析, 并将结果显示出来.

??至此, 一次数据的发送过程就执行完了. 可以看出, 在这个执行过程中, 发送方的每一层都在对报文添加相应的信息, 这个过程叫做封装, 而接收方对报文中每一层信息的去除, 这一操作叫做分用.

对于上面的数据传输操作, 我们忽略了中间的转发过程, 实际上, 数据转发的过程是非常复杂的, 用于数据转发的路由器, 交换机等设备也都实现了TCP/IP模型, 只不过这些设备只实现了一部分, 例如:

??交换机实现了物理层和数据链路层, 交换机转发的大致操作为:先对报文进行分用(也就是拆分), 将报文解析到数据链路层, 更新以太网数据帧的帧头中的地址, 然后重新封装, 再进行转发.

??路由器实现了物理层, 数据链路层和网络层, 路由器进行转发的大致操作为:路由器对报文进行分用, 一直将报文解析到网络层, 拿到IP地址后进行下一阶段的路线规划, 然后向下封装, 并进行转发.


The end

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:40:35  更:2022-04-15 00:45:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 3:30:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码