《网络是如何连接的》第五章和第六章,以及读完总结

在这里插入图片描述
在这里插入图片描述
本章两章的思维导图如上。
上一章讲了包怎么传输到运营商进行远距离传输和怎么在运营商中间传递。

现在就是讲到了服务器了,服务器那边有什么,怎么处理信息的。
因为第五章讲的是服务器里有什么,怎么处理的,第六章讲的是服务器怎么处理信息,信息回到浏览器怎么处理的。
【PS:因为服务器里TCP/IP和处理信息的方式与客户端别无二致,所以不复述了。】

首先一个,服务器部署在哪?

一般情况是部署在公司里的,然后通过路由器,通过POP接入互联网。 然后会发现一个问题,如果直接连网,很容易被入侵,所以需要防火墙
再后来发现服务器可以部署在服务商的数据服务中心,接入网络速度高,而且数据服务中心建筑又安全,防护上也有防火墙等数据过滤服务。

防火墙 为什么要有防火墙?

因为有各种类型的网络攻击,而生产环境的服务一旦宕机或者数据被窃走、删除那都是很严重的事情。 总体防护的要点是,阻止除了必须服务以外的所有应用程序包。

防火墙的防护方式:包过滤、应用层网关、电路层网关等 目前主流的方法是包过滤型
所谓包过滤,就是根据包里面TCP头、IP头、端口头等控制信息判断这个包该不该丢弃。比如根据TCP协议,发起TCP的包SYS=1
ACK=0,发送方IP是服务器,那这种包就可以丢掉。进而就能实现不让服务器发起TCP连接这个防护功能。
【PS:之所以要有不让服务器发起TCP连接的功能,是因为有传播式病毒,浸入服务器后通过服务器进而传播。】

然后需要注意的就是公共区域的包过滤,一旦设置不好,网络包就可以毫无阻拦的从公共区域和公司内部进行交互。

负载平衡 一台服务器的处理性能是有上限的,让几个服务器分功能一起进行任务,这类架构统称分布式架构

但是问题来了,如果有三个服务器接收客户端的请求,那谁分配请求发给服务器呢?

方法一:轮询机制 通过DNS服务器来分配
给一个域名三个不同的IP地址记录,然后每有一次请求就换一个请求IP返回给客户端。
但是这又一个问题,如果连续两次请求都是有关联的呢,这类任务是不能通过轮询方式处理的。

方法二:使用负载均衡器分配
通过采集服务器的CPU、内存使用情况来决定把请求分配到谁那,并添加规则,比如跨多个页面的请求就强行分配给一台服务器处理。那如何确定几个请求之间有关联呢,这就可以在请求里面加参数了,这也涉及到cookie等保存用户信息的技术。

方法三:通过缓存服务器处理
缓存服务器:通过代理机制对数据进行缓存服务的服务器。
将整个系统按功能分成不同的服务器。把数据放到缓存服务器上,当客户端访问的时候直接拿缓存服务器上的数据即可。但是缓存不是永久的,毕竟服务器里数据更新了,缓存服务器里返回旧数据是不应该的,所以有更新机制。
首先请求到缓存服务器请求资源的时候,缓存服务器会问服务器资源是否更新,没更新就拿缓存服务器的资源给客户,如果更新了就从服务器上更新。
更新机制一个是定时更新,但是还是不好。后来就实时更新了,每当服务器上资源更新的时候,都会通知缓存服务器来更新资源。

代理

服务器方反向代理
客户端方正向代理
综合考虑透明代理
但是透明代理不必须在网络转发的必经之路上。具体详情可以百度查询。

内容分发服务

内容分发:CDS,WEB运营者可以和网络商签约,把缓存服务器放在客户端的运营商处。
这样的好处是不用担心网络中的拥塞点会卡住信息的传输,使得服务更稳定。

那怎么判断使用哪个缓存服务器呢?
那需要判断哪个缓存服务器和客户端近,怎么判断?
通过判断客户端查询的DNS服务器的位置来判断客户端的大概位置,然后计算哪个缓存服务器近用哪个缓存服务器。
后来还有更精准的重定向机制,虽然延迟会大一些,但是判断距离的效果更精确。

#########
#########
下面是服务器内部的内容

客户端和服务器的区别

服务器是启监听服务,每有一个客户连接进来启动一个程序,实现程序客户一对一
服务器操作系统有多任务、多线程的功能,原理是:在短时间内在不同任务间切换,看起来像是在同时运行多个服务

关于接受、收发信息和断开连接

和客户端别无二致,已在第二章内讲过

服务器处理请求信息

会把请求信息里的URI转换为实际的文件名
需要注意的是:客户端看到的目录结构和实际的目录结构是不一致的

运行CGI程序

1、通过扩展名判断
2、把所有CGI程序放在一个文件夹里,都当作CGI程序处理

Web的访问控制

1、客户端IP
2、客户端域名
3、用户名和密码

全书总结

这本书的定义在全书开头就写了
不了解网络的全貌,也就无法理解每一个网络技术背后的本质意义

浏览器是个综合的处理软件,所以需要确定使用哪些协议,然后通过参数确定访问哪些。
因为浏览器本身不具备网络访问功能,于是就把信息交给系统统一转发,系统调用Socket库进行网络访问。
第一件要做的事是找到访问网址的IP,这就涉及概念域名IP地址DNS服务器DNS解析器

返回了IP地址后怎么发送呢?
UDPTCP,前者不需要校验,出错重发,后者确保已发过的东西传递到了,并不需要把所有内容都重发。
关于TCP:三次握手SYS位ACK位窗口ACK字段等等

但是上面只涉及了怎么把包分割并确保传送到,那怎么确保传送到的是对应的IP地址呢?
IP协议,确保传到了正确的地方,而且还有套接字描述符等相关概念,确保协议栈内能够正确定位对应的服务。

再然后到了网卡,就需要MAC头部了,但是MAC头部的功能就是把包传递到下一个设备去,然后到底是MAC协议还是什么协议其实已经不重要了,功能是一致的。

之后的问题就是包传出去了,怎么在集线器交换机路由器里传递,我想这仨东西的区别还是能分清楚的,它们的端口有无MAC地址?他们是怎么处理转发表里找不到对应地址的包的?他们的转发表是怎么维护和处理的?这就是本章重点。

再后来就是包怎么从小小的局域网到互联网的。第一个问题就是如何抗噪音?双绞线,至于双绞线为什么抗噪应该是清楚的。然后是怎么传递到远方的?调制ADSL,把方波变换为正弦波。

之后怎么到BAS的还记得吗?整条线路里各种各样的信号转换,还有FTTH相关的一堆概念,比如单模和多模OUNOLT。协议方面也是一堆PPPPPPoEPPPoA它们的区别是什么?还记得HDLC部,这就是PPP要用到的东西。总之这里一堆概念是需要理清楚的。

之后就到了互联网内部,运营商之间怎么处理信息了,POPNOCIX转接对等这里概念不太多,但是要清楚这些说的是什么。

再到了服务器,服务器的分布式架构防火墙防火墙防护机制正向/反向/透明代理缓存服务器CDS内容分布服务,还得了解服务器部署在哪比较好。

之后到了服务器内部,我们得知道服务器和客户端有啥不同,也就是一个客户对一个程序。之后内容返回到浏览器,浏览器会区分数据类型然后展示在浏览器上。

总之,浏览器上终于有内容了,我的总结中一方面总有遗留,另一方面也忽略了部分内容,比如HTTP相关的,因为我之前看了一本《图解HTTP》。但是大致的传输流程还是有的。至于如何确定是否学会了这本书,就是自己能否把这本书的内容有条例的表达出来。即使这本书有很多内容、英文名称记不住,但是要记住中文名称,确定有这么个概念,了解为什么要有这个概念,并且能用简单的语言表述出来。