目录
1.网络互连
将多台计算机连接在一起,完成数据共享
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。
1.局域网:
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的
2.广域网WAN
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
2.网络通信基础
网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基
于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址
来标识。
3.IP地址:端口号
- IP地址表示了主机在网络上的地址,类似于收件人与发件人地址
- 端口号表示了主机中的某一个进程,使用网络的进程在启动时都会分配一个端口号
- 两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。
作为服务端:主动申请
作为客户端:被动分配
IP地址本质上是一个32位的整型,每8位做了分割
表示的最大范围是255.255.255.255
以目前IPv4协议,IP地址总共有42亿个
IPv4的地址个数不够用,所以现在大力推行IPv6
基于网络数据传输,需要使用协议来规定双方的数据格式。
4.协议
1.五元组
1. 源IP:标识源主机2. 源端口号:标识源主机中该次通信发送数据的进程3. 目的IP:标识目的主机4. 目的端口号:标识目的主机中该次通信接收数据的进程5. 协议号:标识发送进程和接收进程双方约定的数据格式
![](https://i-blog.csdnimg.cn/blog_migrate/f5331db99bbca13ff967023a83b5072d.png)
通过五元组就可以明确知道网络中,那台主机向哪台主机发送了什么类型的数据
2.协议分层
1.为什么要用网络分层?
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接
- 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
- 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可
3.OSI七层模型
不用
4.TCP/IP五层(或四层)模型
- 应用层:程序员关心的层,我们的工作主要在这一层,数据的编码解码方式
- 传输层:操作系统工作在这一层,主要是确定程序的端口号,负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机
- 网络层:规划出一条端到端的路径,包括其中要经过的其他网络设备,五元组到这一层就确定下来了
- 数据链路层:负责设备之间的数据帧的传送和识别,解决的是路径之间的传输
- 物理层:负责光/电信号的传递方式,比如网线或者其他网络设备
TCP/IP四层不包含物理层
5.封装和分用
以QQ发送消息为例,模拟一下消息在网络中的封装与分用过程
1.应用层
对于应用层,双方要按照相同的编码规则去组织与解析数据
应用层会消息组织好,统一发给操作系统的API(传输层)socket api
2.传输层API
在传输层有几个非常著名的协议,TCP,UDP
系统操作可以确定下来端口号
3.网络层
确定下来源IP和目标IP
4.数据链路层
5.物理层
6.物理层
把光信号和电信号还原成数据链路层可以解析的格式
7.数据链路层
用帧头找到 对应的主机,用帧尾校验数据的有效性
脱掉帧头与帧尾把载荷交给网络层
8.网络层
脱掉IP协议头,把数据交给传输层
9.传输层
10.应用层
应用程序按照规定好的编目规则来解析消息体,完成通信
注意: