以下是本篇文章讲解的内容,对一些网络的基本概念进行梳理:

目录
网络就是将多台计算机连接在一起,从而进行数据共享就完成了网络间的通信.
网络的作用就是完成多台主机之间的通信,具体来说是网络中不同进程之间的通信,来实现数据共享.
局域网就是通过网线直连,集线器,交换机,路由器等等将多台主机连接在一起就形成了局域网.而多个局域网相互联系在一起就形成了庞大的广域网.
这里有个重要的知识点 : 交换机在数据链路层 而 路由器在网络层
我们以上介绍了网络的作用就是实现网络之间的通信,那么如何进行通信.
比如,我要给某个人发送信息,那这条信息是发给哪个主机呢?? 发给主机的哪个进程呢 ??
这就相当于快递员送快递一样,快递员根据邮件地址确认将货送到哪里,然后根据包裹上写的电话号就知道这个包裹要给谁.
而这里收货地址就相当于网络中的IP地址(知道发信息发给哪个主机),而电话号码就相当于网络中的端口号(知道发给主机的哪个进程(正在运行的应用程序)).
IP地址就是确定发给哪个主机,IP地址是主机的唯一身份标识.
IP地址主要用来标识主机及网络设备的地址===>用于定位主机的网络地址.
(所以当我们发送消息时,必须要有IP地址,也就知道你发送给哪台主机,换句话说送快递的时候必须要知道邮件地址,知道送到哪里去).
这里还有特殊的IP地址==>环回IP地址==>127.0.0.1
什么是环回地址呢??
也就是本机到本机之间的网络通信==>自己给自己发,一般用于测试.
既然IP地址确定发送信息发给哪台主机,我们还要确定将信息发送给主机中的哪个应用程序/进程.
端口号就是确定发送给主机中的哪个进程.
端口号用来标识接收数据和发送数据的进程==>用来标识主机中的进程.
(当我们将信息确定发给那台主机,还要确定发给主机中的哪个应用程序/进程这就需要端口号来表示,换句话说,快递员到达收货地址的地点就需要进一步确定我要发送给哪个人->需要打电话号码确定这个货是谁的-->电话号码<=>端口号)
0 ~ 1023 范围的知名端口号用于绑定知名协议,但某个服务器也可以使用其他 1024~65535 范围内的端口来绑定知名协议。
这里还要注意:
服务器的端口号需要我们自己指定:因为客户端给服务器发送信息时需要确定发送到哪里(也就是要知道IP地址和端口号),客户端在发送数据时要填写将数据发送到哪个IP地址,哪个端口号,所以服务器的端口号需要我们自己指定.
但客户端的端口号一般是随机分配的,不必关系客户端的端口号.
为啥要有协议呢??
就像人说话一样,我们都是用同样国家的语言才能进行沟通,如果一个中国人只懂中文,而一个韩国人只会韩语,那么两个人是不能进行沟通的,所以我们人人都按照约定(也就是相同的语言)就能够很好地沟通和交流.
对于计算机也一样,不同的计算机会有不同的操作系统,不同的硬件厂商,不同的主机设备.....如果都按照一定的约定进行通信,那么就可以保证良好的通信=====>这就是协议(约定).
协议一般是通过数据包发送的.
接下来还有一个问题就是网络通信十分的复杂,如果只需要一个协议就把所有的都约定好,那么这个协议将会是很复杂的,所以我们就有了协议分层.
将协议分为不同的层次,每一层都做类似的事情===>协议分层
协议的分层方式


对于接收方不必关心实心细节只需要调用接口实现即可.
对于发送方将细节隐藏,暴露出接口让其调用即可.
可以将同一层的协议换层其他协议,其它层的协议无感知.
这里以TCP/IP五层模型为例,分别有 物理层,数据链路层,网络层,传输层,应用层,五层的关系是上层调用下层,下层为上层提供服务.
我们在每一层协议的传输数据包的名字都各不相同传输层叫做"段",网络层叫做"包",数据链路层叫做"帧" 我们都可以将其统称为数据包.
封装和分用的过程正是两个主机间进行通信的过程.
在从一台主机将信息交给目的主机时,都会在每一层加上数据首部(数据首部包括数据首部长度,载荷长度,上一层协议的信息,发送端及接收端地址等等一些必要的信息),在应用层将数据封装好,接下来到传输层(如果是用UDP)就加上UDP首部,接下来到达网络层再加上IP数据首部,到达数据链路层加上帧头帧尾封装成"帧",发送到传输介质中,到达目的地主机时,拆掉对应的数据首部,取出上层协议字段,依次传递给上一层==>传递信息的逆序依次拆掉对应的协议的数据首部,最终到达应用层取出数据显示给用户即可.
在将信息发送给目的主机时每到达一层就加上对应协议的数据首部,到达目的主机时,拆掉对应数据首部,取出上层协议字段,依次传递给上层.


上层协议在传递给下层协议时加上对应的数据首部,在进行解析时下层协议拆掉对应数据首部取出关键信息进行检查,然后传递给上一层,就这样上层协议调用下层协议,下层协议为上一层协议提供服务,完成了整个封装和分用的过程.
客户端 : 客户端是指发送数据的一方(理解为餐馆的客人要点菜)
服务器 : 服务器是指接收数据的一方(可以理解为餐馆==>不知道客人什么时候来要长时间运行)
请求 : 客户端给服务器发送的数据叫做请求.
响应 : 服务器给客户单返回的数据叫做响应.
一问一答
客户端给服务器发送个请求,服务器返回一个响应==>打电话(你说一句我说一句)
一问多答
客户端发送一个请求,服务器返回多个响应(比如下载文件,由于文件过多,服务器要做多次响应)
多问一答
客户端发送多个请求,服务器返回一个响应(比如上传文件,需要多次上传,服务器只显示上传成功)
多问多答
客户端发送多个请求,服务器返回多个响应(比如远程控制)
长连接 : 一次连接中相互传输多条数据
短连接 : 一次连接中只相互传输一条数据