一:网络
1 局域网LAN和广域网WAN
局域网:就是Local Area Network,简称LAN,就是在一个具体的区域构建出来的网络,例如单机游戏;
网线
电脑1——————电脑2,此时这样的两台电脑,就处于局域网中了(由此可知局域网中可以是两 台电脑相连) 但是此时有多台电脑相连,连的机器多了就会变得非常复杂,会消耗更多的网线和网口 因此我们引入了交换机,可以将所有的机器,都连到交换机中相连
当然,如果交换机中的可以连接的机器已经满了,此时就需要更多的交换机来和其他机器相连,而交换机之间就会用到路由器
但是在今天,现代的交换机和路由器已经没有明显的区别了 广域网:如果把一个城市或者一个国家甚至全世界的网络连接起来,就构成了一个广域网,本质上来说,广域网其实就是一个很大的局域网; 二:网络通信基础
1 IP地址
概念:IP地址主要用于标识网络主机 ,其他网络设备的(例如路由器的)网络地址,简单来说,IP地址用于定位网络主机的网络地址;就像我们送快递一样,需要知道对方的收货地址才可以把包裹送到目的地。
MYSQL是由一个服务器和客户端组成的程序,客户端和服务端是通过网络来运输的;客户端找到服务器就是以IP地址为根据的;我们在计算机中,常常使用一个32位的整数来表示这个IP地址,但是实际上这个32位的整数往往比较大,肉眼看起来比较不方便,为了可以更好的表示需要进行标记,因此引入了一个更好的表达方式:点分十进制
我们一般都希望网络上的每个主机的IP地址都不一样,但是实际上并不是这样的,IP地址都不够用,因此会根据实际情况来进行地址的复用;
2 端口号
概念:在网络通信中,IP地址有利于表示网络主机地址,端口号用于标识主机中发送数据,接收收数据的进程。简单来说:端口号用于定位主机中的进程;
这就类似于发快递时,不光需要确定收货地址(IP地址),还需要指定收货人(端口号),当一个主机收到一个具体的数据的时候,要把这个数据交给那个程序来处理,这是就是来通过端口号来区分的;
每一个访问网络的程序,都需要有不同的端口号;端口号是一个范围是0-65535的数字,进程可以通过来绑定一个端口号,来发送和接受网络数据;两个不同的进程,不可以绑定同一个端口号;但是一个进程可以绑定多个端口号;
3 客户端和服务器
客户端:主动发起请求的一方
服务器:接收请求的一方 客户端给服务器发送的数据叫做请求,服务器给客户端返回的数据叫作响应
客户端和服务器的交互方式:
1一问一答。客户端发送一个请求,服务器返回一个响应;
2一问多答。客户端发送一个请求,服务器返回多个响应;
3.多问一答。客户端发送多个请求,服务器返回一个响应;
4 多问多答。客户端发多个请求,服务器返回多个响应;
4 协议
概念:协议,是网络协议的总称,网络协议是网络通信(及网络通信运输)经过的所有网络设备都必须遵从的一种约定,规则;例如如何建立连接,如何互相共识等;
要描述一次通信,往往是通过一个五元组来描述的,五元组包括:源IP,源端口,目的IP,目的端口,协议类型;
5 协议分层
当前网络中涉及到的协议都是很复杂的,也很多;主要是因为网络太复杂,无法通过一个协议把所有的功能都包含进去;因此需要拆分出多个协议,再按照这些协议的定位在进行分类。于是就有了协议分层;
例如打电话中用到的分层
分层的好处:
1)达到了封装的效果(这里的封装类似于java中的封装),把实现细节都隐藏了起来,降低了人们的使用成本。例如打电话的人不需要具体知道电话机的实现原理,而造电话的人也不需要即将通电话的人所说的方言,只需要输出就好了;
2)可以很方便的对其中某层/或某个协议进行灵活的替换,这样就可以针对网络协议的具体某个细节进行改造,只需要对应替换对应层的协议即可,不会对其他层次的协议造成影响
网络中对协议的分层则更复杂:
1)OSI七层模型,此模型只在教科书中存在(在真实世界中不存在),实际情况下是下面的TCP/IP五层网络模型;
2)TCP/IP五层模型:可以举个例子来理解一下
应用层:具体的应用程序 传输层:只针对起点和重点,不关注具体的通信细节 网络层:针对网络上的任意两台主机,完成了一个通信路径的规划,以及具体的运输; 数据链路层:实现了两个相邻设备中的数据通信 物理层:硬件设施,网络设备的基本设施(网线); 我想在淘宝上买一件衣服,我就需要填写我的收件人的地址和电话,买家就发货,我和卖家只关心发货起点和终点,这就相当于传输层;卖家把货交给快递公司,快递公司就会规划出一个具体的路线了,是经过上海走,还是经过北京走,这就相当于是网络层;专门有快递小哥来送货,这就相当于是数据链路层;什么铁道,公路,就是物理层;
下层协议给上层协议提供了一些功能支持,而上层协议是依赖于下层协议的,这种协议称为协议栈;TCP是传输层的协议,IP是网络层的协议,这两个协议是整个TCP/IP模型中最重要的协议
6 封装和分用
以QQ的发送方和接收方为例,此时发送方发送一个hello
发送方:
1 网络层:QQ软件会按照一定的规则(QQ程序员约定的通信协议),把Hello这个字符串构造成一个应用层数据包
朱骏瑞;1026559729;张三;12345;202
2 传输层:在传输层中,就会把刚才的数据打包成一个传输层数据包,此处会使用UDP协议
这个UDP抱头其实就是字符串拼接的意思,抱头中的信息和应用层数据包中打包的信息都是辅助网络传输的信息,传输层又把这个数据交给网络层;
3 网络层:网络层又会把刚才传输层包装好的数据再打包成一个网络层的数据包,此处使用的是IP协议
此处的IP抱头,也是一个字符串拼接
4 数据链路层:数据链路层会把这个数据包打包成数据链路层的数据包;例如:在这层协议中使用的是以太网,就会把这个数据按照以太网的数据帧的格式进行储存,此处的桢曾,就是一个字符串拼接
5 物理层:物理层会把这个数据以二进制的形式,转换成0/1这样的电信号,并进行传输,通过网络/光纤/无线电网络。放松方层层的构造数据叫做封装;
接收方:
6 物理层:光电信号到达了接收端主机后(不考虑中间的转发过程),最先到达接收端的物理层,物理层把这个光电信号转成0/1的二进制序列,也就是得到了那个以太网数据帧,把该数据帧交给数据链路层
7 数据链路层:数据链路层接收到物理层的数据帧为
数据帧再对这个以太网数据帧进行分析,将数据帧去掉帧头很桢尾,把中间的负载获取到,交给上层协议(网络层)
8 网络层:网络层获取到数据链路层传递过来的数据包后,IP协议就会按照协议格式再来解析这个数据,去掉IP抱头,获取其中的负载部分,再把这个部分交给上层的传输层
9 传输层:传输层获取到了数据包,传输层的UDP协议再去解析这个数据,去掉UDP抱头后,就交给应用层了
10 应用层:应用程序就会按照应用层的协议,再进行解析,去除其中的关键信息,尤其是发件人信息和hello这个内容,显示在屏幕上
接收方在层层解析数据,就是在进行分用,分用和封装是在进行网络运输中的具体流程,封装就是在网络运输中添加一些辅助传输的信息,而分用就是在解析这些信息;封装就好比快递上要套包装和一些标签,分用就是拆包装
发送数据的时候,上层协议要把数据传输给下层协议,由下层协议来添加一些信息
接受数据的时候,下层协议要把数据交给上层协议,由上层协议进行进一步的解析