1.IP地址
描述了一个设备在网络上的地址。一般情况下会把IP地址给表示成0-255之间的十进制数字,并且使用三个点进行分隔,点分十进制。
2.端口号
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。
端口号是一个整数(两个字节)
一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口。
2字节=0-65335
注意:0一般不使用,1-1023这个范围的端口号,系统留作特殊用途。自己写的程序不应该占用。
在实际的通信过程中,IP和端口往往是”一对“。
3.协议
协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
协议(protocol)最终体现为在网络上传输的数据包的格式。
网络本质上是通过光电信号来传输数据。
例如:
低电平表示1,高电平表示0;
高频光信号表示1,低频光信号表示0。
4.协议分层
网络通信的场景,可能会比较复杂,有很多场景要通过协议来进行解决。这时如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大,不利于人们的理解。
此时我们就可以将大的协议拆分成多个小的协议,让每个小的协议各自完成自己的事情。
但是这么多的小协议又需要管理,于是就可以将协议进行分层。
上层协议调用下层协议,下层协议给上层协议提供支持
1.协议分层的好处
1.协议分层后,上层和下层彼此之间就进行了封装,上层不必管下层,下层不必管上层。这降低了协议的使用成本。
2.每一层协议都可以根据需要灵活替换
2.两种网络模型
1.OSI七层网络模型
分层 | 功能 |
应用层 | 网络服务与最终用户的一个接口(可理解为人机交互界面) |
表示层 | 数据的表示,安全,压缩 |
会话层 | 建立,管理,终止会话 |
传输层 | 定义传输数据的协议端口号,以及流控和差错校验 |
网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 |
数据链路层 | 建立逻辑连接,进行硬件地址寻址,差错校验等功能 |
物理层 | 建立,维护,断开物理连接 |
2.TCP/IP 五层网络模型
1.应用层:如何使用这个数据
2.传输层:关注起点和终点
3.网络层:进行路径规划
4.数据链路层:两个相邻节点之间的数据传输情况
5.物理层:描述的是网络通信的硬件设备
3.网络设备所在分层
-
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
-
对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
-
对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
-
对于集线器,它只实现了物理层;
注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两 层)、三层路由器(工作在TCP/IP五层模型的下三层)
5.封装和分用
描述了网络通信中基本的数据传输流程。
举个例子:qq发送消息
1.发送方
1.应用层
QQ应用程序,QQ就会把用户的“Hello”给打包成一个应用层的数据报。
源QQ-目的QQ-发送时间-发送内容
123456-654321-2023年10月31日13:14:22-Hello
2.传输层
就要对刚才的应用层数据再进行打包,变成传输层的数据报。
这里的打包过程,本质上还是“字符串拼接”,在刚才的应用层数据基础上拼接上传输层的包头
3.网络层
最重要的协议:IP协议
IP报头-UDP的报头-123456-654321-2023年10月31日13:14:22-Hello
4.数据链路层
以太网报头-IP报头-UDP的报头-123456-654321-2023年10月31日13:14:22-Hello
以太网报头中,包含了最重要的信息,就是源Mac地址,目的Mac地址
5.物理层
把上述数据转换成二进制的数据,以光电信号传输
数据发送出去后就会进行一系列的交换机和路由器进行进行转发。
2.接收方
1.物理层
拿到的光电信号转换成二进制数据,得到以太网数据报
2.数据链路层
通过以太网协议,针对以太网数据报进行解析。这会解析出头和尾以及中间的载荷。将载荷部分进一步给网络层的协议处理
3.网络层
IP协议针对网络层数据报进行解析。去掉报头,拿到载荷,再进一步将其给上一层。
4.传输层
此处使用UDP协议,针对这个数据报进行解析。拿到载荷,去掉报头。把载和数据给上一层。
5.应用层
把上述数据根据端口号,交给QQ程序