美文网首页产品经理产品经理进阶
读书笔记-网络技术的基础知识(下)

读书笔记-网络技术的基础知识(下)

作者: JJ_Hope | 来源:发表于2019-04-14 16:06 被阅读1次

    ​上文提到了好多网络技术相关知识,但奈何还差好远,只能继续了。虽然大家都不喜欢这么生涩不贴地气的文章,事实呢?三爷也非常不喜欢……但是还是继续吧……

    · 正 · 文 · 来 · 啦 ·

    CDN

    CDN(Content Delivery Network,内容分发网络):Content,内容,指静态的资源,比如一张图片,一个文本文件,一段视频等,都可以部署在CDN上;Delivery,分发,把所有内容快速分发给用户,提升用户访问内容的体验,是CDN的主要任务。Network,网络,CDN落定于网络,他是部署在全国或者全世界的一大堆服务器,这些服务器基于当前互联网的基础架构,在上层又构建了一个专用网络,这个专用网络的主要责任就是提供优质的内容分发服务。

    总结,CDN是基于互联网的数量巨大的服务器集群,专注于内容和资源分发,为用户提供快速访问资源的能力,进而提升内容访问的体验。

    作者举例:

    肯德基的总部在美国,但作者楼下就有一家肯德基分店,并且出售的汉堡包与总部的也一模一样,这些分店就构成了肯德基汉堡包的CDN,肯德基部署了很多个CDN(肯德基分店)节点在世界各地,用户购买肯德基汉堡包只需要到距离自己最近的节点,这个就叫做就近接入原则。

    假设有一天,临近的节点客流量过大,这时,店长通过CDN中控查询到距本地1000米的另一个分店顾客不太多,就可以引导排队在最后的顾客到另一家分店消费,两家店的服务压力得到均衡。

    当肯德基总部研发出来了新菜,要把菜谱向全世界分发,短时间内每一个分店都可以卖了,这个类似于内容分发网络的分发功能。

    断点传续

    如在Chrome中下载一个文件,下载未完成的时候,突然被提示”下载失败“,单击”重试“,Chrome没有接着下载,而是傻傻地从头开始,这就是不支持断点传续的功能。

    长连接

    推送服务已经是各大APP的标配功能,长连接是推送服务的技术核心,推送服务的所有功能都是基于长连接实现的。

    一般情况下,我们讨论的长连接都是基于TCP/IP:

    客户端用TCP/IP从服务器上获取数据时,需要一个联通客户端和服务器端的连接,连接通过”三次握手“建立,通过”四次握手“释放。

    如果每次获取数据都创建一个独占的连接,并在数据传输完毕后释放,这种连接就叫做”短连接“,而一个能够供多个请求多次传输数据,并在数据传输后不会立刻释放的连接称为”长连接“。

    长连接使用的场景:

    1、短时间内,向同一个服务器发起多次数据请求

    如小红去餐馆点菜,如果服务员不耐烦,小红点完一道菜,服务员就走了,小红再点一道菜还需要把服务员叫回来,如此点菜延长了点餐时间,体验非常差。这个场景就如果一个浏览器加载网页,一个网页有很多个元素组成,每个元素都需要一个HTTP连接去拉取,如果每个元素下载完后,都把HTTP对应的TCP连接关闭,那么下载完一个元素又需要建立连接和断开TCP,而连接和关闭TCP都需要大量的资源,有时建立连接比传输数据更消耗资源。

    2、实现PUSH功能

    PUSH功能的实现,正是基于长连接的全双工通信能力,每当客户端与服务器建立长连接后,服务器就能随时随地的找到客户端并PUSH数据,衡量一个PUSH服务器的关键指标是并发连接数和宽带,当每条PUSH信息的数据量一定时,服务器的并发连接数和宽带越高,越能在短时间内触达全体目标用户。

    HTTPS技术

    HTTPS(Hyper Text Transfer Protocol Secure,超文本传输安全协议)比HTTP多了一个secure。

    HTTP将应用程序提供的数据封装后,明文交给运输层TCP,而后发送到网络里,由于是明文传输,发送的信息在传输过程中,可以被任意篡改,甚至被完全替换,安全性低则是HTTP的主要缺点。

    为了解决这个问题,HTTPS在HTTP和TCP之间添加了一层SSL协议,SSL是用来保障网络上数据传输安全的一套协议,他在传输层对HTTP进行封装加密,私钥加密的数据需要用公钥解密。

    SSL(Secure Sockets Layer 安全套接层),SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。——度娘

    SSL协议可分为两层: SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

    HTTPS的具体流程:

    1、客户端发起HTTPS请求;

    2、服务器端将公钥发送给客户端,验证服务器的身份;

    3、客户端生成一个加密密钥,公钥加密后,将密钥传输给服务器,服务器用私钥解密报文,获得客户端密钥。

    4、服务器和客户端的数据传输都是通过客户端密钥进行加解密的。

    WIFi技术

    WIFi的中文名是”无线保真度“,是WiFi联盟持有的一个品牌,这个联盟专门解决各个符合IEEE802.11标准产品间的连通性问题,WiFi对应的技术就是IEEE802.11标准,其中IEEE802.11ac标准就是我们常说的5G网络,他的理论传输速度可以达到6.93Gbit/s,5G网络的频带较高,所以他的”穿墙“能力略差。

    用一张无线网卡和一个无线网络接入点(Wireless Access Point)就可以在组成WiFi系统,家用的无线路由器,就是无线网络接入点功能的路由器。无线网卡和无线网络接入点建立数据连接之前,经历两步:1)SCAN扫描2)Authentication认证。

    当用户在路由器的设置界面配置了”启用SSID广播“后,需要接入WiFi网络的设备,如手机,才能识别到路由器创建的无线网络,识别的手段有主动扫描和被动扫描。

    主动扫描:接入设备向自己支持的所有WiFi信道上发送广播,询问对应的信道上是否有无线接入点。无线路由器接收到接入设备的认证广播后,就会对接入设备做出回应,并告知对方自己的SSID,支持的认证方式,加密算法等基本信息。

    被动扫描:无线路由器定期向自己所在的信道上发送广播,广播的内容与主动扫描中的响应大致相同,一旦接入设备收到广播,就能识别无线路由器建立的WiFi网络。

    当接入设备确定要接入路由器的WiFi网络后,就进入IEEE802.11标准的认证流程,即使WiFi网络没有设置密码,也会指定认证流程,即”开放系统认证“。认证流程图如下:

    image

    DNS

    如果你在访问某一个网站时,打开网址特别慢,有可能就是触发了跨运营商访问。

    DNS(Domain Name System,DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

    举例说明,小红想访问www.a.com网站,则浏览器首先发起DNS请求,把www.a.com(域名)转换成一个TCP/IP认识的IP地址,每个IP地址具备地理位置属性,DNS则把离这个IP地址最近的,同一个运营公司的IP地址返回给用户,小红则顺利的访问www.a.com的主页。

    image

    就近接入就是利用DNS服务找到离用户最近的机器,从而达到经由最短路径提供服务的目的,DNS服务还能找到公司的所有机房和IP,从而进行流量调度。

    Socket

    Socket是什么?反正我也不懂,只能听作者的,作者说Socket是一套API,封装了TCP/IP,而TCP/IP是一套协议,规定了互联网上的两台计算机通信的标准。但是TCP/IP规定了互联网的通信手段,却没有告诉用户到底怎么去做,于是Socket出现了,封装了TCP/IP并提供了一套标准的API供调用。

    那么实现的过程呢,是酱紫的:

    1、有一个服务端和一个客户端;

    2、服务端设置好自己的IP地址和端口号,然后进入阻塞状态;

    3、客户端输入服务器端的IP地址和端口号,把服务端从阻塞状态唤醒;

    4、配对成功,实现通信。

    其中,服务端用的是服务端的Socket,客户端用的是客户端的Socket,两端都是Socket,都具备连接千里之外的计算机的能力。

    HTTP也是用Socket传输数据的,但有一点需要注意,基于HTTP的连接是短连接,客户端请求一次数据,就主动和服务端断开了,Socket则不是,默认情况下,双方一直保持联系,所以Socket是长连接

    另外,Socket可以传输任何内容,不仅限于HTML文本,而且不光在两台计算机之间进行通信,还可以在两个进程间进行通信,比如说你的支付宝和你的微信,都在你的手机上,但是可以用过Socket进行通信。

    HTTP 302跳转

    网络传输中有很多不确定性,会导致传输失败或者其他非常规的情况,网络协议为了识别这些不确定性,定义了一系列状态码,302就是HTTP协议里的一个状态码。

    302状态码对应的情况可以类比手机的呼叫转移功能,假设电话打进了A手机,均被转移到B手机上接听。

    302状态码应用的场景就是服务器页面路径的重新规划,假设一个portal页面换了新的域名,但仍有很多用户在使用旧的域名地址,就可以对他进行配置302状态码,用户输出旧的域名,会自动跳转到新域名地址,保证服务的延续。

    整个流程可以这样说明,用户点击一个页面链接,随即会看到一个新的网页展示在浏览器内,在这个过程中,浏览器其实是在不断接收服务器端的应答(应答是服务器端的状态,所以返回码叫状态码),以此来决定下一步做什么,这个状态码(status code),在HTTP协议里以三位数标识,共分为5类,分别是1XX、2XX、3XX、4XX,5XX。

    image

    Hosts文件

    如果要访问一个URL,首先要将域名解析对应的IP地址,再通过IP地址访问服务器,域名解析服务器(前文说到的DNS)一般是由用户使用的运营商提供,那么解析了一个连接比较快的IP给用户则罢,如果解析的是比较慢的IP,则用户也只能认了。而hosts给了一个用户指定IP的机会,用户可以在hosts文件中指定某个域名对应的IP地址,系统在发起网络请求时则优先使用hosts文件中的IP地址,这样就自主决定使用哪台服务器的目的。

    下载速度

    想快速下载,选择合适的下载协议很重要,现在常用的有P2P和HTTP。P2P(Peer to Peer),常说的BT就是P2P协议中的一种,最大的特点是没有中心服务器,任何人下载的同时也要上传数据供其他人下载,下载的人越多,上传的人也就越多,下载的速度也就越快。所以,如果是BT下载的话,资源的热门程度决定了下载的关键因素之一。

    HTTP是最早的下载方式,他直接复用了HTTP传输数据,浏览器下载和APP store中的软件下载都是采用HTTP协议下载。HTTP要求有一个服务器来响应所有请求,因此服务器的响应速度直接影响了用户的下载速度。

    现在互联网的规模大了,很多公司会在各地部署CDN来减轻下载压力。从客户端角度来说,多线程下载是可以加快下载速度的,但不代表线程越多越好。

    下载劫持

    我想读者都有体会,本来就想下载一个游戏软件,可是手机偏偏让你先下载个手机助手,类似的情况就是下载劫持。

    那么一个正常下载微信的流程应该是下图:

    image

    但是,如果DNS被挟持了,则流程应该是酱紫的:

    image

    还有一种是,运营商的主机出了问题,则流程是酱紫的:

    image

    总之,总机和骗子服务器就这样一起骗取客户端的下载量。

    讲真,三爷为了记笔记,原样抄图也是很累人的。

    VPN

    VPN(Virtual Private Network)虚拟专用网络,在公用网络上建立专用网络,进行加密通讯。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。——度娘

    作者用隧道比喻VPN,在各种道路之间建立一条秘密隧道,隧道就是连接上VPN服务器的外网地址,外网的网卡收到从隧道传来的数据(客户端请求),转发给内网的网卡,内网的网卡负责找到内网里真正的服务器,请求别人指路要付报酬,所以很多VPN都是收费的。

    总之,VPN就是一条在公共网络上虚拟出来的专用通道,来满足用户自由交流不被窃取的需求。

    ◆ ◆ ◆ ◆ ◆

    贺三少爷:一只嗷嗷待哺,急需提升的产品🐶

    相关文章

      网友评论

        本文标题:读书笔记-网络技术的基础知识(下)

        本文链接:https://www.haomeiwen.com/subject/zlkswqtx.html