网络初识
局域网
如果机器多了,再这样两两相连,就非常麻烦了。就需要消耗很多的网线和网口.
所以就出现了交换机
如果主机更多了,一台交换机都连不下了,接下来就需要把更多的交换机,给进行相连.
在一个具体的区域之内构建出来的网络就叫做局域网.
交换机
路由器
站在现代的角度,交换机和路由器之间已经没有明显的区分了.
现在咱们平时买的都是路由器,很少会专门买个只有交换功能的交换机.
如果把一个城市或者一个国家甚至全世界的网络都互相连接起来.....
就构成了一个"广域网"
广域网,其实就是一个很大的局域网.
IP地址
MySQL是一个客户端服务器这样的程序.
客户端和服务器之间通过网络进行数据传输.
客户端得能找到服务器在哪.
IP地址,就是标识一个主机在网络上的位置的信息.
在计算机中使用一个32位的整数,来表示这个IP地址
由于这个32位的整数往往比较大,肉眼看起来不太方便
为了更好的进行标识,更方便人进行看和记
引入了另外一种表示方法:点分十进制,使用三个 . 把这个32位的整数分成四个部分,每个部分都是一个一个字节的整数.每个部分的取值范围就是0~255.
一般我们希望网络上的每个主机IP地址都不一样.
但是,实际上事与愿违,还是会有很多情况下,多个主机共用一个IP的.(IP地址不太够用)
端口号:
用来区分一个主机上的应用程序.
通过IP地址,只能确定一台主机.
但是这个主机还有很多程序,例如:qq.微信.网易音乐......都在使用网络.
当这个主机收到一个一个具体的数据的时候,要把这个数据交给哪个程序来处理?
就是通过端口号来区分.
每个访问网络的程序,都需要一个不同的端口号
端口号也是一个整数(2个字节,取值范围0~65535)
一台主机上,不能用两个进程尝试关联同一个端口号.
如果第一个进程绑定了端口号n,第二个进程也尝试绑定这个端口号n的时候,就会失败.
客户端:
主动发起请求的一方.
由于服务器无法确定客户端啥时候发送请求过来,所以服务器能做的事情就是"随时待命"
服务器:
被动接受请求的一方.
客户端给服务器发送的数据 => 叫做请求(Request)
服务器给客户端返回的数据 => 叫做响应 (Response)
客户端和服务器的交互方式,有很多种:
1.一问一答,客户端发送一个请求,服务器给一个响应.(最常见也最经典的情况)
2.一问多答,客户端发一个请求,服务器返回多个响应.
3.多问一答,客户端发送多给请求,服务器返回一个响应.
4.多问多答,客户端发送多个请求,服务器返回多个响应.
协议:
一种约定.协议概念本身并不复杂,但是由于网络通信这件事,涉及到方方面面的细节,因此真实的网络通信协议,往往也并不简单.
网络通信中的五元组:
两台主机之间的通信,往往是通过一个五元组来描述这一次通信的.
五元组就包含了:源IP,源端口,目的IP,目的端口,协议类型.
1
当前的网络中涉及到的协议,是有很多的.
主要就是因为网络里面比较复杂,然后无法通过一个协议,来把所有的功能都涵盖进去.就需要拆分出多个协议.为了更好的来组织这么多协议,就按照这些协议定位,再进行分类,于是就有了"协议分层".说白就是一个场景里面问题太复杂,没法通过一个协议全部搞定.
这个事就类似于写Java代码,如果问题比较复杂,光通过一个类来完成所有的功能,这可能就比较困难了.为了更好的解决这个问题,就需要进行拆分,把这个代码拆成多个类.
如果类太多了,又需要创建出一些包,把一些功能定位类似的类放到一个包里.
2.TCP/IP五层网络模型
物理层:最底层,硬件设备,网络通信的基础设施.
数据链路层:实现了两个相邻设备之间的数据通信.
网络层:针对网络上的任意两台主机,完成一个通信路径的规划,以及具体传输.
传输层:只关注起点和终点,不关注具体的通信细节.
应用层:在最上面一层:具体的应用程序
下层协议给上层协议提供了一些功能支撑.
上层协议要依赖下层协议.
上述两条统称为协议栈
TCP:传输层的协议
IP:网络层的协议
这俩协议就是整个TCP/IP中最重要的协议
这段话是为了应付笔试,有这样的结论
但是真实的情况不是这样的!!
路由器和交换机,现在的概念已经比较模糊了
像一些好的路由器交换机,也往往会实现一些传输层以及应用层的内容......
封装和分用
封装的过程:
当我们把这个数据通过这些物理介质传输过去之后,在接收端这边又是怎么处理的呢?
这个过程就和刚才封装的过程正好相反,也就称为分用.
发送方层层的构造数据,称为封装.
接收方层层解析数据就是在进行分用.