目录
一、IP地址
1、定义
2、格式
(1)、A类地址
(2)、B类地址
(3)、C类地址
(4)、特殊地址
二、端口号
三、协议
四、协议分层
1、定义
2、分类
(1)、OSI七层网络模型
(2)、TCP/IP五层网络模型(当下广泛使用的网络模型)
五、封装和分用
1、封装
(1)、应用层封装数据
(2)、传输层处理应用层的数据
(3)、网络层处理传输层的数据
(4)、数据链路层处理网络层的数据
(5)、物理层处理数据链路层的数据
2、分用
(1)、物理层收到二进制数据
(2)、数据链路层接收物理层数据
(3)、网络层接收数据链路层数据
(4)、传输层接收网络层数据
(5)、应用层接收传输层数据
3、交换机和路由器
(1)、交换机
(2)、路由器
六、主机之间的网络通信流程
1、客户端
(1)、定义
(2)、核心工作
2、服务器
(1)、定义
(2)、核心工作
3、请求
4、响应
5、网络通信流程
一、IP地址
1、定义
IP地址是描述的一个主机在互联网的具体位置,互联网上的每一台主机和网络都被分配了一个IP地址。
IP地址是一个32位的二进制数,通常是4个8位二进制数即4字节。
IP地址通常表示成a.b.c.d的形式,其中每一位可以表示0-255的十进制整数。
每个IP地址又可分为两部分即网络号部分和主机号部分:网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号。根据网络规模大小还可以分成A,B,C,D,E五类。
2、格式
(1)、A类地址
在IP地址的四段编码中,第一段编码为网络编码,后三段编码为主机编码。用二进制表示A类IP地址由1字节的网络地址和3字节主机地址组成。A类IP地址中网络的标识长度为8位,主机标识的长度为24位。
A类网络地址数量较少,可以用于大型网络,地址范围从1.0.0.0到126.255.255.255,子网掩码为255.0.0.0。
(2)、B类地址
在IP地址的四段编码中,前两段编码为网络编码,后两段编码为主机编码。用二进制表示B类IP地址由2字节的网络地址和2字节主机地址组成。B类IP地址中网络的标识长度为16位,主机标识的长度为16位。
B类网络地址适用于中等规模的网络,地址范围从128.0.0.0到191.255.255.255,子网掩码为255.255.0.0。
(3)、C类地址
在IP地址的四段编码中,前三段编码为网络编码,最后一段编码为主机编码。用二进制表示C类IP地址就由3字节的网络地址和1字节主机地址组成。C类IP地址中网络的标识长度为24位,主机标识的长度为8位。
C类网络地址数量较多,适用于小规模的局域网络,地址范围从192.0.0.0到223.255.255.255其子网掩码为255.255.255.0。
(4)、特殊地址
- 地址0.0.0.0对应当前主机。
- 地址127.0.0.1到127.255.255.255是用于回路测试
二、端口号
服务器有很多应用程序,每个应用程序都对应一个端口号。只有通过端口号客户端才能访问服务器。端口号常用来区分一个主机上的应用程序,我们可以通过端口号去寻找应用程序,并且每台电脑的端口号不能重复。
两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。
三、协议
协议是通信双方遵守的同一组约定,发送方约定了一个发送数据的格式,接收方也得理解这个格式,双方相互匹配才能够进行正确的通信。
例:
网络传输本质上都是通过网线等进行传输信息,传输的是一系列高低电平表示0和1的二进制位数,因此在传输前就需要让发送发和接收方约定好每组0和1的意思,这就是协议.
四、协议分层
1、定义
在网络通信中面对复杂的环境需要约定的协议也非常复杂,但是一个协议太复杂不利于管理和使用,因此可以将其拆分为多个协议。
因为协议是可以拆分的,所以存在有些小的协议作用或者定位是类似的。对此我们可以针对这些小协议进行分类,同时针对这些不同的类别进行分层。
分层相当于是约定了层级与层级之间的调用关系:要求上层协议调用下层协议,下层协议给上层协议提供支持,不能跨层调用。
优点:
- 分层后层次间耦合程度低,上层协议不必了解下层的细节,下层也不必了解上层的细节
- 方便后续对某一层的协议进行替换
例: 类似于公司的管理机制,上层管理下层,下层为上层服务,但不能跨级调用
2、分类
(1)、OSI七层网络模型
注:仅仅存在于教科书
(2)、TCP/IP五层网络模型(当下广泛使用的网络模型)
网络通信的下四层不关心传输的数据是做什么的,只有应用层才真正关心数据的用途。
应用层对应的是程序员写的应用程序,下四层则是操作系统内部已经封装好的,因此我们写代码进行网络编程主要工作还是围绕应用层展开的。
五、封装和分用
- 封装:发送方发送数据,要把数据从上往下,依次交给对应的层次的协议进行封装
- 分用:接收方收到数据,要把数据从下往上,依次交给对应的层次的协议进行解析
例:A向B发送QQ信息
1、封装
(1)、应用层封装数据
拿到用户数据进行封装,封装成应用层数据包(本质上就是字符串拼接)
(2)、传输层处理应用层的数据
传输层拿到上述数据后,应用层要调用传输层提供的API来处理这个数据。传输层有很多协议,最典型的是TCP和UDP。此处以UDP为例,UDP针对上述数据包再进行封装。
一个典型的数据报都是通过报头+载荷的方式构成的,本质上还是字符串拼接。
将整个应用层数据包作为UDP数据包的数据部分(载荷),UDP协议给应用层数据报加上一个UDP报头,就是为了再贴一层标签,从而在标签上填写必要的属性。
(3)、网络层处理传输层的数据
UDP数据报已经有了,接下来就要把这个数据报交给网络层的协议。网络层最常见的协议就是IP协议。上述的UDP数据报道道网络层还需要进一步的封装,添加上IP协议报头。
源IP和目的IP就描述了这次传输中,最初的起点和最终的终点。
加上一个IP协议的报头,整个UDP数据报作为IP的载荷
(4)、数据链路层处理网络层的数据
数据链路层最典型的协议叫做以太网,是最常见的网络,平时使用网线上网就是用以太网。
mac地址也叫做物理地址,是描述一个主机在网络上的位置。
它的功能和IP地址很相似但是当下把这两个地址分别作用于不同的用途:
- IP用来进行网络层的路径规划
- mac用来描述数据链路层中两个即将进行传输的相邻节点。
mac是和网卡绑定的,理论上每个设备都会有一个自己的唯一的mac地址,但是IP则不是。
(5)、物理层处理数据链路层的数据
数据链路层就要把上述以太网数据帧交给物理层,物理层要把上述的二进制数据转换成光信号、电信号等进行传输。
2、分用
接受数据过程和上述封装过程相反,发送方从上到下依次封装新增报头,接受方从下到上依次分用去掉报头。
(1)、物理层收到二进制数据
物理层收到二进制数据后就会对其进行解析,还原成二进制序列。
(2)、数据链路层接收物理层数据
此时把上述二进制序列数据当作一个以太网数据帧,此处从以太网收到的数据就是要交给以太网协议来处理了。
把帧头和帧尾去掉,取出中间的载荷,再往上交给网络层。
以太网数据帧帧头中有一个消息类型,根据这个类型就可以知道网络层是IP协议。
(3)、网络层接收数据链路层数据
此时就由网络层的IP协议进行解析数据报,也是去掉IP报头。最重要的还是取出载荷,交给更上层的传输层IP数据报。
报头也有一个字段,标识当前传输层用的是哪个协议。
(4)、传输层接收网络层数据
此处是由UDP来解析处理,去掉报头取出载荷,把数据交给应用层。借助端口号来区分具体的应用程序,每个要接受网络数据的程序都需要关联上一个端口号。
(5)、应用层接收传输层数据
由QQ这个程序进行解析应用层数据报,取出下列字段放到程序界面中。
3、交换机和路由器
真实的网络环境中,数据的传输中间可能要经历很多节点进行转发。
(1)、交换机
交换机会进行分用,从物理层分用到数据链路层,直到当前这个数据报的目的mac不对就行了。
交换机针对这个数据重新封装,从数据链路层封装到物理层,把数据继续转发。
中间的交换机只需要封装分用到数据链路层(只需要重新封装源mac和目的mac)
(2)、路由器
路由器收到的数据,会从物理层分用到网络层。根据当前得到的目的IP进行下一阶段的寻路操作。IP协议是在一边传输的过程,一边规划路径。
中间的路由器则需要封装分用到网络层(需要重新封装mac地址,同时还需要根据目的IP进行下一阶段的路径规划)
六、主机之间的网络通信流程
1、客户端
(1)、定义
客户端是指与服务器相对应的、为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,客户端一般安装在普通的客户机上,需要与服务端互相配合运行。
客户端为用户提供服务。
(2)、核心工作
- 读取用户输入
- 构造请求,并发送
- 客户端读取服务器的响应
- 客户端把响应转成字符串,并显示出来
2、服务器
(1)、定义
服务器端是向网络上的其他机器提供某些服务的计算机系统。接收并储存客户端发送过来的数据或请求,并且对请求进行响应,发送数据给客户端。
(2)、核心工作
- 读取请求并解析
- 根据请求计算响应
- 把响应返回客户端
3、请求
请求是指向服务器发送要求来获取数据进行相关操作。
4、响应
响应是指向服务器申请相关操作,服务器在进行处理之后返回相关内容或者返回请求失败的一个回应。