一、关于网络通信
网络通信: 网络中主机进程间的数据传输 网络划分: (1)局域网 一般来说,某个小范围组建的网络,内部可以传输数据 典型:家里的路由器,连接多台主机 (2)广域网 多个局域网构建的一个大型网络 全球公认的广域网(一般是通过网络运营商提供的网络服务,来访问):公网,外网——广域网的子集 能够ping通,就是可以访问对应主机 一个局域网内部可以互相访问,但多个局域网之间,如果没有使用外部网络连接,是不能互相访问的 即使使用外部网络连接,但基于局域网的IP,是内部才能用,外部用不了
我的局域网IP,只有我这个局域网才能用
二、网络通信基础
1.IP地址
用于标识网络中唯一的一台主机 局域网ip是内部才能用(内部唯一),不同的局域网ip可能有重复 公网ip是全局唯一
格式:4位,每一位是0~255之间的数字(8位的二进制数) 本机ip:127.0.0.1
2.端口号
用于标识主机中的进程 发送: 发送端的进程向发送端口写数据,系统会把数据经过网卡传输到网络的其他设备 接收: 先由网卡接收数据,系统会把数据发送到指定的端口(数据中指定),再由端口对应的进程来接收
注意事项: 两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号(这里是两个不相关的进程)
例:学习测试过程中,我安装了一个mysql数据库,存在一个问题: 开发学习的时候也安装了mysql,同时存在两个mysql进程,绑定的都是3306端口 如果发现还有一个mysql:双击,改为停止,手动启动
3.认识协议
网络协议: 网络通信时,数据在网络设备中流转,都需要遵守的一组规则和约定 三要素:
- 语法
- 语义
- 时序
协议最终体现为在网络上传输的数据包的格式 http协议:协议格式 请求数据包4个部分组成 响应数据包4个部分组成 作用:双方使用一致的协议,接收端才知道如何解析
为知名协议预留的端口号
- 22端口:ssh协议
- 80端口:http协议
- 443端口:https协议
4.五元组
在TCP/IP协议中,用五元组来表示一个网络通信
- 源IP: 表示源主机
- 源端口号: 标识源主机中该次通信发送数据的进程
- 目的IP: 标识目的主机
- 目的端口号: 标识目的主机中该次通信接收数据的进程
- 协议号: 标识发送进程和接收进程双方约定的数据格式
五元组的5个字段,一次网络通信必须都指定好
查看五元组信息:
Windows:netstat -ano | findstr “查询字符串” Linux:netstat -anp | grep “查询字符串”
三、协议分层
好处: 定义了不同网络分层,是用来干嘛的,调用方不用关心实现细节,而使用统一的接口来调用
1.OSI七层模型
一种偏理论的模型,并没有实际落地(真是搭建网络,采取的网络分层,没有把OSI七层模型全部实现)
- 物理层: 网线或wifi(电磁波)来传输0,1数据
- 数据链路层: 识别数据帧(发送数据包到下一个网络硬件设备)
- 网络层: 地址与路由选择
- 传输层: 确保数据传输的可靠
- 会话层: 建立会话(什么时候建立连接,什么时候断开连接)
- 表示层: 接收端用什么方式来展示数据
- 应用层: 应用程序所处的分层
从低到高的顺序 5,6是没有落地,真实实现的
2.TCP/IP 五层/四层模型
- 对于一台主机,他的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
- 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层
- 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
- 对于集线器:他只实现了物理层
网络通信时,经过的所有网络设备,每一个网络分层,都需要使用一致的协议 中间如果经过了一些网络设备,网络分层也要使用对应一致的协议
四、封装和分用
封装: 发送数据时,需要把数据包装成某个协议的格式,再发送
一个网络设备,按从高到低的顺序,使用对应分层的协议来一层一层包装数据
分用: 接受数据时,需要把数据按照某个协议格式来解析,再使用
一个网络设备,按从低到高的数据,按对应分层的协议,来解析使用数据
发送端主机,tomcat发送一个http协议的数据 在发送端主机,需要按网络TCP/IP四层模型,从高到低的顺序,来封装数据 封装的过程有点类似发快递时,一层一层,从里到外打包 分用的过程,类似接收快递时,从外到里拆包
|