网络 (基础概念, OSI 七层模型, TCP/IP 五层模型)

简介: 网络 (基础概念, OSI 七层模型, TCP/IP 五层模型)

网络互连

网络互连: 将多台计算机连接在一起, 完成数据共享

数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数, 也叫做网络通信

根据网络互连的规模不同, 将网络划分为局域网广域网

注意: 局域网和广域网是相对的概念

局域网LAN

又称内网, 局域网和局域网之间在没有连接的情况下, 无法通信

局域网组建网络 (组网) 的方式有多种:

  1. 基于网线直连
  2. 基于集线器组建
  3. 基于交换机组建
  4. 基于交换机和路由器组建 (二层交换机,三层路由)

广域网WAN

通过路由器, 将多个局域网连接起来, 就形成了广域网

如果属于全球化的公共型广域网, 则称为互联网

IP, 端口号

IP 和 端口号用于定位在网络世界(局域网/广域网)中的位置

IP 用于标识网络主机, 网络设备的地址, 即一台设备的网络地址

  • IP 地址是一个32位的二进制数
    eg: 01100100.00000100.00000101.00000001
    通常以点分十进制的形式表示:
    eg: 100.4.5.1

端口号用于定位一台主机上的某个进程

  • 端口号范围: 0~65535 (2^16 个)
  • 其中有个概念叫知名端口号: 0~1023
    他们被一些常用软件: QQ, 微信, 浏览器 … 占用
    所以如果你要指定某个端口的使用, 最好设定在 1024~65535 的范围内

注意:

一个端口号只能绑定一个进程(一个端口号不能同时被多个进程使用)

但是一个进程可以绑定多个端口号

(比如开一个"QQ游戏软件", 里面有一堆游戏: 妈祖,象棋 …

“QQ游戏软件” 是一个进程,里面的每个单独的游戏占用一个端口

么一个进程就绑定了多个端口)

网络协议

网络协议: 网络通信警告的所有网络设备都必须共同遵守的一组约定, 规则.

通常由三要素组成:

  1. 语法: 数据和控制信息的结构或格式
  2. 语义: 请求和响应的格式
  3. 时序: 事件实现顺序的详细说明

协议最终体现为网络上的数据包的格式

网络协议的作用:

由于存在无数种数据格式: 二进制, 文本, 光信号, 电信号 …

网络协议用来规定通信过程中, 使用什么类型的数据, 用什么方式请求, 用什么类型响应 等等

所以协议就是一组约定,规则, 即大家共同遵守的秩序

五元组

在 TCP/IP 之中, 使用五元组来标识一个网络通信:

  1. 源IP: 标识源主机
  2. 目的IP: 标识目的主机
  3. 源端口: 标识通信中源主机中的发送数据的进程
  1. 目的端口: 标识通信中目的主机中接收数据的进程
  2. 协议号: 标识通信双发约定好的 数据格式 (你发二进制的内容, 我接受二进制的内容, 别你发了二进制形式内容, 我以字符格式接收)

协议分层

将网络协议分成几个部分, 每个部分专门处理某些内容

协议分层的作用:

  • 对于使用者来说, 不必关注提供方是如何实现的, 只需要使用接口即可
  • 对于提供方来说, 利用封装的特性, 隐藏实现细节, 只需要开放接口即可

不同分层之间, 上层应用调用下层接口, 下层接口实现上层应用

协议分层有两个常见划分模型: OSI 七层模型, TCP/IP 五层模型(或者有的地方也说是四层模型)

OSI 七层网络模型

这是只存在于教科书上的网络分层模型(没被真正实现, 只是提出了这样一种七层划分的概念)

应用层: 针对特定应用的协议 (微信, 网页, 邮件 …)

表示层: 设备固有数据格式和网络标准 数据格式的转换

会话层: 通信管理. 负责建立和断开通信连接

传输层: 管理两个节点之间的数据传输, 即 端到端的数据传输 (节点: 网络通信中所有的设备, 主机, 路由, 交换机 …)

网络层: 地址管理和路由选择 (路径选择)

数据链路层: 互连设备之间传送和识别数据帧, 点到点之间的数据传输

物理层: 比特流(0/1)和电子信号之间的转换, 负责光 / 电信号的转换及数据传输

挺抽象的, 了解就好, 重点是学习我们正在用的 TCP/IP 五层模型

TCP/IP 五层模型

有的时候也说是 TCP/IP 四层网络模型, 原因是有人认为物理层是硬件相关的操作, 和我们网络通信有什么关系 (不是) , 所以把物理层删掉了, 这里不用太过在意, 知道是怎么回事就好.


这里有个便于记忆的点: TCP/IP 就是把 OSI 七层模型中的表示层和会话层合并到了应用层里 (有些大佬认为这仨层都是和应用相关, 没必要分的那么细 …) (考试的时候我死活记不住表示层和会话层 =^= )


应用层: 负责应用程序间的沟通, eg: HTTP, FTP, Telnet …

传输层: 负责两台主机之间的数据传输, eg: TCP, UDP, 保证数据可靠的从源主机发送到目的主机.

网络层: 负责地址管理和路由选择, eg: IP, ICMP, 在IP协议中, 通过 IP 地址标识主机, 并通过路由表来规划两台主机之间的数据传输路线.

数据链路层: 负责设备之间的数据帧的传送和识别. eg: 设备驱动程序及接口卡

物理层 : 负责光/电信号的转换及数据传输.


不好记吧, 总有些取巧的方式 …

先了解几个概念, 网络通信过程中会经过很多设备, 其中的每个设备称为 节点 , 数据从 源主机, 途径许多节点, 发送到目的主机

image.png

以微信聊天为例

应用层: 负责源主机和目的主机上的应用程序, 即微信和微信之间的匹配

传输层: 保证源主机和目的主机之间数据传输的可靠性

网络层: 源主机到目的主机之间, 有很多条线路可供网络通信选择, 网络层负责路径规划

数据链路层: 负责相邻节点之间的数据传输

物理层: 数据在设备之间通过光信号(电缆) 传输, 而在设备上以电信号(高低电平 =>01信号) 存储, 物理层负责光/电信号的转换

网络设备所在分层

主机的操作系统内核 实现了从传输层到物理层的内容

路由器 实现了网络层到物理层的内容 (三层路由)

交换机 实现了数据链路层到物理层的内容 (二层交换)

集线器 实现了物理层的内容

此处的路由器和交换机都是指传统意义上的路由器和交换机 (因为目前已经有 四层的路由器 和 三四层的交换机 了, 科技的发展是多么伟大 …)

封装和分用

不同协议层对数据包有不同的称呼, 在传输层叫做 段(segment), 在网络层叫做 数据报(datagram), 在链路层叫做 帧(frame)


应用层数据通过协议栈发送到网上时, 每层协议都要加上一个数据首部(header), 称为 封装(Encapsulation)

首部信息中包含一些类似于: 首部长度, 载荷长度, 数据类型, 上层使用协议 等等的信息


数据封装成帧后发送到传输介质上, 到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理, 这个过程叫做 分用

数据的封装过程

数据的分用过程



IP 地址 (Internet Protocol Adress) 互联网协议地址,又称网际协议地址

作用 : IP 地址时 IP 协议提供的一种统一的地址格式, 它为互联网上的每一个网络和每一台主机分配一个逻辑地址. 依次来屏蔽物理地址的差异.

格式 : 32位二进制数 & 点分十进制

组成 : 网络号 + 主机号


子网掩码

网络号 = 子网掩码 “按位与” IP地址

一般用于判断目的 IP 和本机 IP 是否位于同一网段


MAC 地址 (Media Access Control Address)

用于标识网络设备的硬件物理地址 (用来识别数据链路层中相连的节点)


网络设备及相关技术

集线器

发送到集线器的任何数据, 都会被转发到其他所有端口 (指集线器内部端口)

交换机

内部维护一张 MAC 地址转换符, 该表记录了 MAC 地址与(交换机中的)端口之间的映射. 交换机用于主机和主机间的数据报转发

路由器

作用 :

  • 作为网关
  • 划分公网和局域网
  • 将局域网划分为不同网段的多个子网
  • 路由
  • 路由即能够找出端到端的路线 (主机到主机)

ARP

ARP 协议 : 介于网络层和数据链路层之间的协议. ARP 协议建立了 IP 地址 和 MAC 地址的映射关系

ARP 寻址 : 在数据链路层, 寻找下一路设别 MAC 地址的过程, 称为 ARP 寻址

ARP 缓存表 : 记录了 IP 地址和 MAC 地址的对应关系. 主机和路由中均有各自的 ARP 缓存表

冲突域 (基于物理层)

主机之间通过网络设备 (集线器, 交换机)的物理端口, 网线相连时, 多个主机在同一时刻同时发送数据报. 如果存在冲突, 则该网络范围为一个冲突域 (碰撞域)

  • 集线器的所有端口, 为一个冲突域
  • 交换机可分割冲突域. 分割后, 一个端口为一个冲突域

广播域 (基于数据链路层)

广播是指某个网络中的主机, 同时向网络中的其他主机发送数据, 这个数据所能传播到的范围即为广播域

  • 集线器的所有端口为一个广播域
  • 一个交换机为一个广播域
  • 路由器可以隔离广播域, 其划分的一个网段为一个广播域
目录
相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
6天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
22 5
|
3天前
|
机器学习/深度学习 算法 搜索推荐
图神经网络综述:模型与应用
图神经网络综述:模型与应用
|
8天前
|
存储 机器人 Linux
Netty(二)-服务端网络编程常见网络IO模型讲解
Netty(二)-服务端网络编程常见网络IO模型讲解
|
11天前
|
存储 安全 数据处理
探索未来网络:量子互联网的概念与前景
本文将探讨量子互联网的基本概念、技术原理以及其潜在的应用前景。我们将从传统互联网的局限性出发,逐步引入量子力学的基本知识,解释量子纠缠和量子叠加的独特性质如何赋予量子互联网以全新的通信能力和安全性。最后,我们将讨论量子互联网在金融、医疗、国家安全等领域的应用潜力,并对其技术挑战与未来发展进行展望。
20 1
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习模型之深度神经网络的特点
深度神经网络(Deep Neural Networks, DNNs)是一类机器学习模型,通过多个层级(层)的神经元来模拟人脑的工作方式,从而实现复杂的数据处理和模式识别任务。
32 1
|
29天前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
29天前
|
网络协议 C语言
C语言 网络编程(十一)TCP通信创建流程---服务端
在服务器流程中,新增了绑定IP地址与端口号、建立监听队列及接受连接并创建新文件描述符等步骤。`bind`函数用于绑定IP地址与端口,`listen`函数建立监听队列并设置监听状态,`accept`函数则接受连接请求并创建新的文件描述符用于数据传输。套接字状态包括关闭(CLOSED)、同步发送(SYN-SENT)、同步接收(SYN-RECEIVE)和已建立连接(ESTABLISHED)。示例代码展示了TCP服务端程序如何初始化socket、绑定地址、监听连接请求以及接收和发送数据。
|
29天前
|
网络协议 C语言
C语言 网络编程(十四)并发的TCP服务端-以线程完成功能
这段代码实现了一个基于TCP协议的多线程服务器和客户端程序,服务器端通过为每个客户端创建独立的线程来处理并发请求,解决了粘包问题并支持不定长数据传输。服务器监听在IP地址`172.17.140.183`的`8080`端口上,接收客户端发来的数据,并将接收到的消息添加“-回传”后返回给客户端。客户端则可以循环输入并发送数据,同时接收服务器回传的信息。当输入“exit”时,客户端会结束与服务器的通信并关闭连接。
|
29天前
|
算法
基于GA遗传优化的离散交通网络双层规划模型设计matlab仿真
该程序基于GA遗传优化设计了离散交通网络的双层规划模型,以路段收费情况的优化为核心,并通过一氧化碳排放量评估环境影响。在MATLAB2022a版本中进行了验证,显示了系统总出行时间和区域排放最小化的过程。上层模型采用多目标优化策略,下层则确保总阻抗最小,实现整体最优解。
下一篇
无影云桌面