网络 (基础概念, 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. 源端口: 标识通信中源主机中的发送数据的进程
  4. 目的端口: 标识通信中目的主机中接收数据的进程
  5. 协议号: 标识通信双发约定好的 数据格式 (你发二进制的内容, 我接受二进制的内容, 别你发了二进制形式内容, 我以字符格式接收)

协议分层

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

协议分层的作用:

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

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

协议分层有两个常见划分模型: 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: 设备驱动程序及接口卡
物理层 : 负责光/电信号的转换及数据传输.

不好记吧, 总有些取巧的方式 …
先了解几个概念, 网络通信过程中会经过很多设备, 其中的每个设备称为 节点 , 数据从 源主机, 途径许多节点, 发送到目的主机

没找到合适的图, 我自己做了

以微信聊天为例
应用层: 负责源主机和目的主机上的应用程序, 即微信和微信之间的匹配
传输层: 保证源主机和目的主机之间数据传输的可靠性
网络层: 源主机到目的主机之间, 有很多条线路可供网络通信选择, 网络层负责路径规划
数据链路层: 负责相邻节点之间的数据传输
物理层: 数据在设备之间通过光信号(电缆) 传输, 而在设备上以电信号(高低电平 =>01信号) 存储, 物理层负责光/电信号的转换

网络设备所在分层

主机的操作系统内核 实现了从传输层到物理层的内容
路由器 实现了网络层到物理层的内容 (三层路由)
交换机 实现了数据链路层到物理层的内容 (二层交换)
集线器 实现了物理层的内容

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

封装和分用

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

应用层数据通过协议栈发送到网上时, 每层协议都要加上一个数据首部(header), 称为 封装(Encapsulation)
首部信息中包含一些类似于: 首部长度, 载荷长度, 数据类型, 上层使用协议 等等的信息

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

数据的封装过程

该图来自百度搜索
数据的分用过程
该图来自百度搜索

相关推荐

  1. OSI模型讲解

    2024-04-20 14:32:04       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-20 14:32:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-20 14:32:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-20 14:32:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-20 14:32:04       20 阅读

热门阅读

  1. 无人机如何远程控制其他设备

    2024-04-20 14:32:04       14 阅读
  2. Docker搭建IPFS

    2024-04-20 14:32:04       12 阅读
  3. 用例设计-微信发红包

    2024-04-20 14:32:04       10 阅读
  4. 为什么会出现乱码

    2024-04-20 14:32:04       13 阅读
  5. 【软考】敏捷方法

    2024-04-20 14:32:04       13 阅读
  6. RabbitMQ项目实战(二)

    2024-04-20 14:32:04       15 阅读
  7. 富 格 林:策划安全方案阻挠受害

    2024-04-20 14:32:04       16 阅读
  8. ZJGSU 1850 不同出栈情况

    2024-04-20 14:32:04       15 阅读