网络互连
网络互连:将多台计算机连接在一起,完成数据共享
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信
根据网络互联的规模不同,可以划分为局域网和广域网。
局域网LAN
局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的一种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。
广域网WLAN
广域网WAN
广域网,即 Wide Area Network,简称WAN。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
网络通信基础
网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。
IP地址
这里简单的理解:
源IP:发件人地址
目的IP:收件人地址
端口号
这里简单的理解:
源端口号:发件人
目的端口:收件人
认识协议
协议是构建整个网络的基础。
协议就是一种约定,发送方和接收方约定好,按照特定的格式来进行传输。
协议是两个人的事情,必须两个人都了解/遵守才有意义。
协议三要素:
1.语法:即数据与控制信息的结构或格式;
-
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
-
时序,即事件实现顺序的详细说明。
作用
举个栗子:
张三约了一起打CSGO的网友出来面基,他们约定了在工广州塔下见面,张三到了广州塔,看到一个人也在东张西望的找人,就觉得应该是他,正巧另外一个人他也正好是在约网友面基,就这样凑巧,两个人一起去吃下午茶,他们聊到一半CSGO战绩,发现,不对啊,两个人都没有见过对方的战绩,这才立马反应过来原来找错人了。
协议:他们两个人约定好了,张三胸手里揣着咖啡,网友手里揣着交通卡
他们都事先约定好协议,这样就不会找错人了。
网络通信中:之间传输的数据本质上分为光信号和电信号,那这些信号是什么意思?就需要通过约定,把这些约定称为协议。
协议分层
网络通信中,中间的过程非常复杂,要进行的约定的协议,就需要考虑到很多的细节,就会导致协议变的非常复杂。
为了让协议好学,且没那么复杂,就对协议进行拆分,分成多个方法,多个类,多个文件,多个包,多个模块。
由于协议细节太多,过于复杂,又导致了分出来的协议太多了,此时我们就按照协议对应的功能,进行分类,这就叫做协议分层。
特点:
上层协议调用下层协议
下层协议给上层协议提供服务不能隔层调用
分层的目的就是加限定条件,为了让这些协议不要太灵活
协议分成好处:
1、封装:学习理解容易
2、方便维护
OSI七层和TCP/IP五层
OSI七层
了解即可
TCP/IP五层
应用层:归属于程序员的业务层
传输层和网络层:操作系统内核实现的
数据链路层和物理层:硬件和驱动实现的
举例解释每层含义:
应用层:应用程序,程序员打交道的
传输层:端到端的传输。【发件人信息和收件人信息】
网络层:点到点的传输【发件人到收件人的路径】
数据链路层:相邻接点之间的传输
物理层:底层基础设施
封装和分用【☆☆☆☆☆】
场景假设:主机A通过微信给主机B发了个WeChat
封装
主机A发送的过程:
一、应用层
微信程序内部自己约定好了一个应用程序(具体实现我们不知道,我们给出一种简单的设计方案来理解)
QQ应用程序会把用户输入的字符串构造成约定好的应用层报文:
应用程序就会把这个数据包,交给传输层协议,来进一步处理。
传输层是操作系统内核实现的,操作系统就会提供一些API【socket API】给应用程序,代码里面调用系统的API,就可以把应用层的数据交给传输层(也就是操作系统内核)。
二、传输层
传输层这里有很多的协议,其中最典型的就是TCP协议,此处以TPC为例。TCP协议要在之前数据的基础上,加上个TCP的协议报头。
TCP报头包含很多信息,最重要的就是源端口和目的端口
从应用程序到传输层,添加TCP协议报头的操作就叫做封装。
传输层继续把这个TCB数据报交给网络层进行处理。
三、网络层:
网络层中最典型的就是IP协议。
IP协议把整个TCP数据报视为是整体,作为载荷部分,在前头加上IP协议报头
IP报头里面的信息也有很多,最关键的就是源IP和目的IP
构造好IP数据报之后,IP协议继续把整个数据交给数据链路层。
四、数据链路层
数据链路层的协议也有很多,其中最典型的就是**“以太网”**
注意:以太网整个协议,即管数据链路层,也管物理层。
以太网协议就IP数据报的报头和报尾分别插入一个帧头和帧尾
五、物理层
数据已经组织好,就通过物理层的设备(网卡)就吧上诉数据的二进制bit流转换成光信号/电信号并进行传输。
上述数据,从上到下,层层添加信息的过程就称为“封装”;
分用
分用就是封装的逆过程
假设数据已经到达了主机B;
六、物理层
接收方的网卡硬件就收到了光信号/电信号,就把这个信号转换成了二进制的bit数据 ===》以太网数据帧。
接下来这个数据就被交给数据链路层,由以太网协议负责解析。
七、数据链路层
当拿到了一个以太网数据帧,由以太网协议,去掉帧头和帧尾,取出载荷部分。
把取出的载荷就,交个网络层。
八、网络层
IP协议针对刚才拿到的IP数据包再进行解析,去掉IP报头,得到载荷部分,也交给传输层。
九、传输层
传输层TCP协议根据刚才得到的载荷数据进行解析,去掉TCP报头,得到载荷部分,再交给应用层。
十、应用层
QQ应用程序,就会把应用层数据报再进行解析,取出里面的“WeChat”信息显示在界面上。
在传输层的地方有说过,传输层给应用层提供了一套API,这套API到底是什么,下篇文章来看。