本篇主要介绍关于网络的相关概念~
相关概念
局域网: 把几个电脑连接到一起,或者几台电脑连接到同一个路由器,就能构成局域网,局域网中的电脑可以相互通信。
广域网: 将多个局域网连接起来,就构成了范围更大的广域网。
IP地址: IP地址是描述一台主机,在互联网上所处的位置,IP地址用一个32位整数表示,用点分十进制将32位的整数用点号分成4部分,如: 192.168.1.2,每一部分的范围是0~255。
端口号: 区分当前主机上指定的应用程序(进程),一台主机在使用网络的程序可以有很多个,使用端口号可以区分是哪个程序。端口号是一个两个字节的整数,范围:0~ 65535(0 ~1023有特殊含义)。
协议: 协议是网络通信的基础,也就是发送方和接收方交互数据的规则,协议确定了,双方才能进行有意义的通信。网络上传输的数据一般是:光信号、电信号、电磁波,本质上都是传输二进制数据0和1,网络通信协议需要完成的工作就是约定这些二进制数据都代表什么意思。网络通信是一件非常复杂的事情,通常会把一个协议拆分成很多个小的协议,进行分层,把功能类似的协议放在同一层,上层协议调用下层协议,下层协议服务上层,使用某个协议的时候,不需要关注其他协议是如何实现的,直接用就好了~
封装: 封装是指在传输数据时,将上层协议的数据(如应用层数据)添加到下层协议的数据包中。每一层都向数据添加特定的头部信息,以确保数据能够顺利通过不同的网络设备传输。例如,TCP会将应用层数据封装成段,IP会将段封装成数据包。
分用: 分用是封装的逆过程,即接收数据时,逐层剥离数据的头部信息,直到提取出原始的应用层数据。例如,在接收HTTP响应时,数据会从物理层逐层解析,最终由应用层处理HTTP内容。
客户端: 客户端是指向服务器发起请求的一方,通常是用户的终端设备或应用程序。例如,当用户使用浏览器访问网站时,浏览器就是客户端。
服务器: 服务器是指接收并处理客户端请求的设备或程序。服务器通常提供特定的服务,例如Web服务、数据库服务、文件服务等。例如,网页服务器在接收到客户端的请求后会返回网页内容。
请求: 请求是指客户端向服务器发送的消息,通常包含所需的服务或数据的详细信息。以HTTP为例,浏览器会向服务器发送请求,要求获取某个网页。
响应: 响应是指服务器对客户端请求的答复,通常包含所请求的资源或状态信息。例如,服务器在接收到浏览器的请求后,会返回包含网页内容的HTTP响应。
协议分层有下面两种:
1、OSI七层网络模型:没有被采用的网络模型,只存在于教科书上~
2、TCP/IP五层网络模型:现在最主流的网络协议模型
TCP/IP网络模型的简单理解:
应用层:决定了传输的数据的用处,负责应用程序之间的沟通,这是程序员可以通过网络编程进行干预的
传输层:负责主机之间的数据传输,关注传输的起点和终点
网络层:负责地址管理和路由选择,规划主机之间数据传输的路线
数据链路层:负责设备之间的数据帧传输和识别
物理层:负责电信号、光信号、电磁波等传输方式和传输介质,描述硬件设备所需要什么样的条件。
数据在网络通信中的整体流程
以QQ发消息为例子,
发送方视角:
1、发送方在输入框中输入“你好”,点击发送,QQ就会把用户输入的内容读取到,构造成一个应用层数据包,数据包的格式是程序员自定义的,例如以下格式:发送方QQ号,接收方QQ号,发送时间,发送的内容。在网络中传输数据需要把这些结构化的数据(比如应用层数据包)转换成二进制字符串,才能传输,而不是直接传输应用层数据包。结构化数据转换成二进制字符串:序列化,二进制字符串转换成结构化数据:反序列化。应用层做的工作就是序列号
2、QQ调用操作系统中的api(传输层给应用层提供的),应用程序把数据包作为api的参数传到传输层的代码部分,相关的代码会把应用层数据包进一步封装成“传输层数据包”,根据传输层中的协议的不同封装成不同的数据包。传输层有很多种协议,最主要的就是TCP和UDP,如果是UDP,会在数据包的前面加上UDP报头
3、传输层调用 网络层给传输层提供的api,把数据交给网络层。网络层有很多协议,最重要的就是:IPv4协议,也叫IP协议,如果没有特殊说明是IPv6,IP协议默认指的就是IPv4。IP协议会把拿到的数据构造成网络层数据包(添加IP报头),其实封装的本质上其实就是字符串拼接~
4、网络层调用数据链路层的api,把数据交给数据链路层,数据链路层常见的协议:以太网,IP数据包(网络层数据包)进一步封装成以太网数据帧(添加了帧头和帧尾)。
5、在物理层,通过网卡等硬件设备,把上述的二进制数据转换成光信号、电信号、电磁波等,通过网线、光纤等设备传输到接收方。
接收方视角:
1、物理层接收光信号、电信号、电磁波等,把这些信号转换成二进制数据,传给数据链路层。
2、数据链路层中,以太网拿到数据包,对数据包解析,掐头去尾,根据报头信息来判断数据包是丢弃还是转发。如果是转发则把剩下的数据传给网络层。
3、网络层拿到数据链路层中的解析好的数据,去掉报头,根据IP协议对报头进行解析。然后把剩下的数据传给传输层。
4、传输层根据UDP协议,取出UDP报头,对数据进行解析,把剩下的数据传给应用层。
5、应用层把拿来的数据进行反序列化,QQ对数据做逻辑处理,如把消息显示到界面上,播放滴滴声等。