目录
IP地址
概念
格式
端口号
概念
格式
协议
五元组
协议分层
OSI七层网络协议模型
TCP/IP五层网络模型
网络数据通信的基本流程
封装
1.应用程序层
2.传输层
3.网络层
4.数据链路层
5.物理层
分用
1.物理层
2.数据链路层
3.网络层
4.传输层
5.应用程序层
网络设备所在分层
IP地址
概念
IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说,ip地址就是用于定位主机的网络地址。
格式
IP地址是一个32位的二进制数,通常被分割为4个“8位2二进制数”(也就是4个字节),例如:01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式表示。即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制数),例如:上述地址表示为100.4.5.6
端口号
概念
在网络通信中,IP地址用于标识主机的网络地址,端口号可以标识主机发送数据,接受数据的进程。简单来说,端口号用于定位主机中的进程。
格式
端口号是范围为0~65535(两个字节)的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据。
协议
协议即网络协议,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵循的一组约定和规则。如怎么建立连接、怎么相互识别。
协议最终体现为在网络上传输的数据包的格式。
五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
- 源IP:标识主机
- 源端口号:标识源主机中该次通信发送数据的进程
- 目的IP:标识目的主机
- 目的端口号:标识目的主机中该次通信接收数据的进程
- 协议号:标识发送进程和接收进程双方约定的数据格式
五元组在网络通信中的作用,类似于发送快递:
协议分层
网络通信十分复杂,如果只设计一个协议,完成网络通信的方方面面,势必会让这个协议非常庞大且复杂。
所以我们把一个大的协议,拆分成若干个小的,功能单一的协议。
但是拆分完后的小的协议太多,不易管理。所以把这些小的协议归类分层,并规定,只有相邻两层协议之间可以进行交互:(不能跨层交互)
- 上层协议可以调用下层协议
- 下层协议可以给上层协议提供服务
这样做的好处有:
- 封装:上层协议,不需要了解下层协议的细节
- 解耦:分层之后,灵活替换其中的某一层,对于整体的工作过程影响较小
这个过程类似于打电话
OSI七层网络协议模型
OSI:即Open System Interconnection,开放系统互连
OSI七层模型既复杂又不实用,实际上的网络分层方式是TCP/IP五层(四层)模型。
TCP/IP五层网络模型
- 应用层:包裹拿到之后怎么用。负责应用程序间沟通
- 传输层:任意两个设备之间的通信,不考虑中间过程,只考虑终点和起点。负责两台主机之间的数据传输
- 网络层:任意两个设备之间通信的中间过程。负责地址管理和路由选择
- 数据链路层:完成相邻两个设备之间的通信。负责设备间数据帧的传送和识别
- 物理层:规定网络通信硬件设备符合的要求。负责光电信号的传输方式
该过程类似于网上购物:
- 我买一件商品,拿到后该如何使用——应用层
- 卖家只用关心,买家收件人的信息——传输层
- 物流公司关心,包裹以怎样的路径传输——网络层
- 快递小哥/货车司机关心,包裹怎样传给下一个节点——数据链路层
网络数据通信的基本流程
封装
数据从上层到下层,一步步添加包头的过程就是封装(不同于面向对象的封装概念)
1.应用程序层
应用程序在获取到用户的输入后,会构造一个应用层的数据包。
这个应用层数据包(结构化数据),会遵循应用层协议(开发这个应用程序的程序员规定的)
例如:我在qq上发送一条信息“hello”。qq应用程序可能就会将我的消息封装成如下的数据包:
构造完成之后,应用程序就会调用传输层的API(socket API),将数据传输给传输层
2.传输层
传输层拿到数据后,构造出“传输层数据段”,
传输层的协议主要包括两个:TCP和UDP
构造完的TCP数据段,继续调用网络层的API,把TCP数据段传输给网络层
3.网络层
网络层拿到数据后,构造出“网络层数据报”
网络层最主要的协议是IP协议
构造完的IP数据报,继续调用数据链路层的API,将IP数据报传输给数据链路层
4.数据链路层
数据链路层拿到数据后,构造出“数据链路层数据帧”
数据链路层的核心协议是,以太网
5.物理层
以太网将数据帧交给网卡这样的硬件设备
网卡就会将上述的数据帧的二进制数据,最终以光信号/电信号/电磁信号的方式传播出去。
分用
数据达到接收方主机后,逐层解析就是分用
1.物理层
数据达到接收方的网卡后,网卡将光电信号转化为二进制数字,再将其交给数据链路层。
数据链路层的协议决定了物理层的数据是怎么来的:例如以太网数据决定了数据是从网线光纤传来的,802.11协议决定了数据是从wifi来的
2.数据链路层
按照以太网协议进行解析,取出帧头和帧尾,剩下的载荷向上传递给网络层
帧头中就有专门的属性记录了网络层使用的是什么协议
3.网络层
按照IP协议进行解析,取出IP报头,剩下的载荷向上传递给传输层
IP报头中描述了传输层使用了什么协议,以及源IP/目的IP
4.传输层
按照TCP协议进行解析,取出TCP段头,剩下的载荷向上传递给应用层
TCP段头中记录了源端口号/目的端口号,这样就告知了我们数据要交给哪个应用程序
5.应用程序层
qq应用程序,按照qq的应用协议,解析应用层的数据包,取出其中的消息内容展示给用户
网络设备所在分层
- 主机:工作过程涉及物理层——>应用层,在应用层方面,通过应用程序满足网络通信需求
注意:操作系统涉及的是物理层——>传输层 - 路由器:工作过程涉及物理层——>网络层,组建局域网,进行网络数据包转发
- 交换机:工作过程涉及物理层——>数据链路层,对路由器接口的扩展,不需要考虑组网问题
传输数据的中间过程,也涉及到了封装分用
当主机的数据传输到交换机时:(二层转发)
交换机会完成物理层解析、数据链路层解析,然后重新构造出以太网数据帧,发送给下一个设备
当主机的数据传输到路由器时:(三层转发)
路由器会完成物理层解析、数据链路层解析、网络层解析,然后重新构造出IP数据报,发送给下一设备