目录
一、基础概念
1、 IP地址
IP地址是指互联网协议地址(网际协议地址)。是
IP 协议
提供的一种同一的地址格式。描述了
网络上一个主机的位置(收货地址)
。
IP地址本质上是一个 32 位的整数,但是由于 32位的整数不方便人们来读和记忆,所以采用了 “点分十进制”。
(这部分只简单介绍,是为了更好的理解后面的内容,详细的 IP地址 的内容在 IP协议部分)
(1)点分十进制
将 32位的 IP地址(4个字节),按照每个字节,分成四个部分,这四个部分中间用 . 隔开。
例如: 123.139.170.255
因为一个字节8个比特位,因此每一部分的取值范围:0~255。
注意:
127.0.0.1
是一个特殊的IP地址,叫 环回IP,表示自己这个主机。
2、端口号
IP地址表名了哪个主机,但是主机上还有很多进程,因此要通过端口号来确定是哪个进程。
端口号描述了一个主机上的某个应用程序(收件人电话)。
端口号本质上是一个 2 个字节(16位)的无符号整数,范围是 0 ~ 65535 。
使用时,两个进程不能绑定同一个端口号,但是一个进程可以绑定多个端口号。(当服务器程序启动时,就需要绑定一个端口号,以便客户端程序来访问)
例如: 3306:mysql 默认的端口号
3、协议
协议是 网络协议 的简称,本质上就是 “约定”(发出来的数据是啥样的格式,接收方按照对应的格式来进行解析)。要想进行有效的通信,就需要明确通信协议。
协议 最后再网络通信中,表现为
网络上传输的数据报的格式
。
(1)协议的 组成部分
① 语法:数据和控制信息的 结构 或 格式 。(打电话:约定都说普通话)
② 语义:需要发出某种控制信息,完成某种动作 以及 做出某种响应。(双方怎么做,打电话我问:在吗,对方回答:在)
③ 时序:事件实现顺序的详细说明。(打电话先讲什么后讲什么)
(2) 协议的 作用
网络通信的时候,本质上传输的是 光信号 和 电信号,通过光信号 的 频率(高频率 和 低频率)电信号 的 电平(高电平 和 低电平)来表示 0 和 1 。
这些 0 和 1 组合起来到底是什么意思,协议就可以对这些进行规定了。
4、五元组
在 TCP/IP协议(很重要的协议)中,用五元组来表示一个网络通信。
- 源IP :标识源主机。
- 源端口号 :标识源主机中进行这次网络通信中 发送数据 的 进程。
- 目的IP :标识目的主机。
- 目的端口号 :标识目的主机中进行这次网络通信中 接收数据 的 进程。
- 协议号 :标识发送数据进程 和 接收数据进程 双方约定的 数据格式 。
网络通信的过程,类似发快递的过程:
5、协议分层
对于网络协议(协议)来说,往往分成几个层次进行定义。
如果网络通信只通过一整个协议来进行规定,那么里面的细节就会很多,会很庞大复杂。因此更好的方法就是,把一个大的复杂的协议,拆分成多个小的更简单的协议,每个协议仅仅只负责它那部分的工作。(类似于将一个复杂程序代码,分成很多小的部分代码,让他们实现其各自的功能,最后再进行汇总)
(1)分层的 好处
① 每层协议不需要理解其他层的协议
打电话的人,不需要理解电话的工作原理,就可以完成打电话的操作。
制造电话的人,不需要考虑打电话的人说英语还是汉语。
② 可以把对应层的协议换成其他协议
打电话的人,可以使用有线电话,也可以使用无线电话。可以使用英语,也可以使用汉语
(2)OSI 七层模型
OSI 七层模型(Open System Interconnection 开放系统互连)是指 把网络从逻辑上分了 7 层。
OSI 七层模型 虽然实现了分层,但还是比较复杂,并且不实用。因此在实际组建网络时,使用的是 TCP/IP 五层 模型。
(3)TCP/IP 五层模型
TCP/IP 是一组协议的代名词,它包括了很多协议(有了TCP/IP协议栈)。它采用了 五层结构。
- 应用层:负责说明传递的这个数据是干嘛的。
-
传输层:负责 端 到 端 之间的通信,即 起点 -> 终点。
(进程 -> 进程)
-
网络层:负责 点 到 点 之间的通信,即路线规划。
(全局)
-
数据链路层:负责两个相邻的设备之间的通信。(相邻:同一根网线)
(局部)
- 物理层:负责网络通信的硬件设备。网线、网卡……针对硬件设备进行的约定。
类似:
- 应用层:买的喷壶,这个喷壶是用来浇花?还是消毒?
- 传输层:我负责下单,商家负责发货,我们都只关心货到了没有。
- 网络层:快递公司选择路线:①广州 -> 西安 ; ②广州 -> 郑州 -> 西安。
- 数据链路层:若网络层选择了 广州 -> 郑州 -> 西安,这里就只负责 广州 -> 郑州 这一小部分。
- 物理层:运输用 飞机?火车?火车?
6、封装和分用
封装和分用是在网络传输中对数据的操作。因为分层的原因,所以每层只看得懂它负责的数据,而我们在实际传输时(在网线中),是整个数据进行传输的。因此要用到封装(快递打包)和分用(快递拆包)。
(1)封装
主要用在发送数据的过程中。
假设现在要 QQ发送数据 (使用 TCP/IP 五层模型):
上图中,在主机上发送数据,就是从应用层开始,逐层进行封装的过程。
(2)分用
主要用在接收数据的过程中。
以另一台主机接收 QQ 消息 为例:
注意:
在整个网络通信的过程中,还要经过交换机和路由器,经过时,也需要进行封装和分用。
唯一的区别是:
- 交换机有两层:物理层、数据链路层
- 路由器有三层:物理层、数据链路层、网络层