好多小伙伴,一听到软件编程,就一直摇头!不行,不行。我学不了那玩应。太高深了。太难了。 其实这就是电视剧闹的,看见那些黑客,在电脑上霹雳巴拉的敲打键盘,搞的那么高深莫测!让很多小伙伴想学软件都不敢迈出第一步!其实只要你耐心的坐下来学习了,学完之后感觉也就那么回事!没什么高深莫测的东西! 关键是要理解原理才能学习的更好! 今天小编就带着大家一起来了解web的一些原理。 为以后的学习打下坚实的基础。 我们先回忆下昨天学习的东西,我们通过TCP/IP协议可以连接世界上任何一台有网络的电脑。 那么到底什么是TCP?什么是IP? IP(Internet Protocol)网际互联协议将 消息 从一个地方传送到另一个地方。 TCP(Transmission Control Protocol)传输控制协议用于保证被传输信息的完整性。 刚入行的小伙伴可能会明白了。IP协议主要负责 消息的传递,而TCP则负责保证数据的完整。 而我们每一台电脑都会有IP地址的设置。(具体IP地址的详细讲解就在这里不多说了,我们只需要知道每台电脑都一个IP地址,要么是固定IP,要么是ISP给你分配的IP地址) 那么互联网和TCP/IP又有什么关系呢? 互联网究竟是什么呢? “互联网”英文单词为“internet”。从字面上理解,internet指的是将多个网络连接使其构成一个更大的网络,所以internet一词本意 是 网际网。将两个以太网(局域网) 网段用路由器相连就是互联网,将企业内部各个部分的网络,或者公司内网与其他企业相连,并实现相互通信的网络也是互联网,甚至一个区域的网络与另一个区域的网络,相互连接形成全世界规模的网络也可以称作 互联网。 互联网定义:互联网 是指由ARPANET网发展而来,互连全世界的计算机网络。 互联网与TCP/IP的关系 互联网进行通讯时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是TCP/IP,TCP/IP就是互联网的协议。 互联网的结构 互联网一词的原意是“网际网”,就是指连接一个又一个的网络。 那么连接全世界的互联网也是如此。 比如办公室网络连接办公室,形成内部网络,公司内部网络在连接整个地区的网络,就形成区域网,而各个地区的网络在相互连接,就形成了全世界的网络。 每个网络都是由骨干网和末端网组成,每个网络之间通过NOC(Network Operation Center 网络操作中心)相连。如果网络的运营商(ISP internet Service Provider)不同,它的网络连接方式和使用方法也不同(比如联通网络和移动网络)。这种异构网络就需要IX(Internet Exchange 网络交换中心)的支持。 所以一般我们公司和家庭申请入网只需要和ISP签约即可。 了解了互联网是通过TCP/IP来进行上网的,又了解了互联网的概念和互联网的组成。 接下来聊一聊编程了。 在之前我们说过软件的架构,分B/S架构和C/S架构。 其实这两种都属于客户端/服务器架构,我们通常用浏览器来进行上网,浏览器就成为了我们的客户端,而当我们输入网址,或者点击链接之后,服务器会给我们做出相应的响应。 只不过B/S架构的客户端是浏览器,而C/S架构师我们自己编写的客户端。 WWW(中文叫万维网,是一种互联网上数据读取的规范,有时候也叫web、WWW、w3)是互联网能够如此普及的一个重要原动力。用户在 web浏览器的软件上借助鼠标和键盘,就可以轻轻松松读取网上的信息。 用专业一点的话说轻轻按下鼠标,架设在很远端的服务器上的各种信息,就会呈现在浏览器上。 浏览器中既可以显示文字、图片、动画等信息,还能播放声音以及运行程序。 而浏览器与服务器之间通信所用的协议是HTTP(HyperText Transfer Protocol 超文本传输协议)。所传输数据主要的格式 是HTML(HyperText Markup Language 超文本标记语言)。WWW中的HTTP属于上篇文章OSI应用层的协议(建立在TCP/IP之上的协议,属于TCP/IP协议族中的一员),而HTML属于表示层的协议。 通俗一点的说法,就是利用http协议来传输,传输的内容是html,而我们之所以看到的图片、文字、内容、是由浏览器来解释,展现出来的。 而我们上网时候,当我们输入www.xxxx.com的网址的时候,在按下回车!就相当我们给www.xxxx.com这个网址发送了一个请求,在www.xxxx.com这个网址收到这个请求了之后,就会给你一个响应(返回了一个html网页),我们就可以查看浏览器渲染出来的html页面了。 这里有的小伙伴可能就会问了。互联网上不都是通过ip地址来找到服务器(服务器也是计算机的一种)的吗? 我们都知道ip地址通常有两种,一种是ipv4的,一种是ipv6的。如果让你记住一长串的数字的ip地址,你记得住吗? 反正我是记不住,而相反,我们却可以记住字符连接起来的字符串,比如baidu、taobao这样的字符串。 更容易一点。 这时候就出现了 一种叫 DNS 解析的技术。就是将我们的 www.xxxx.com类似这种的域名映射成为具体的ip地址,这样你就可以通过域名来访问你的ip地址计算机了。 在计算机上如何才能查询的具体ip地址呢? 比如我们使用cmd 的命令 ping + 域名的方式来查询。 当然像非常大型的网站都是服务器集群部署的。所以ip地址肯定有很多的。 也可以利用 nslookup +域名 来查询域名对应的ip地址 一般DNS解析是需要有DNS解析服务器来进行解析的,当然我们家的路由也有DNS解析的功能。 上图就能看出来DNS解析呢就是将域名和IP地址关联映射起来。 那么当我们输入 网址 的时候,浏览器是如何进行DNS解析的呢? 当我们在浏览器,输入域名,按下回车第一件事情,就是DNS解析了。 解析的过程如下: 首先、我们的浏览器是有DNS缓存的,如果你曾经利用这个浏览器,成功解析过域名,它就会为他缓存该域名。 以chrome浏览器为例子,我们在浏览器的地址栏,输入chrome://net-internals/#dns 就会显示浏览器的DNS缓存。当然也可以查看其它信息! 我们可以看到光app.toutiao.com的浏览器dns缓存就有很多个ip地址。 如果查询到了结果,就直接返回ip地址了嘛,如果没有查询到,就到我们的第二步了。 本机HOST文件DNS解析查询。 本机host文件存储位置为:C:\Windows\System32\drivers\etc 这个目录下,如果要修改该文件需要取得管理员身份哦。 用途:比如我把服务器搭载到了我自己的本机。 让浏览器访问一个没有的域名来访问自己的机器,就通过 127.0.0.1这个本地回环地址来访问自己的机器。 懂web 编程的小伙伴都知道 ,localhost 就可以访问自己的电脑。原理就是在Host文件将localhost 映射到 127.0.0.1 本机才能访问自己的电脑的。 如果依然没有找到,就要看自己的电脑是否设置了DNS服务器了。 拿阿里巴巴公共DNS来举例 我们可以指定阿里巴巴的公共DNS解析服务器来解析。 路由解析 如果没有指定DNS解析服务器,就到自己局域网的路由,通常路由都有DNS(缓存)解析的功能。 上级 ISP 路由解析 如果还没找到,就到区域级运营商ISP的路由来解析。如果还没有找到,就在到上一级,到了顶级,依然没有找到 该域名的解析, 那么就返回 404错误了。 上面就是整个DNS解析的过程了。 当我们将域名 解析成为 ip地址之后,就需要和对应的计算机发出请求了。 在发出请求之前,需要建立发送数据的连接! 在发送数据连接之前,就是我们所谓的 三次握手了! 三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了! 握手的过程可能有点复杂,说的简单一点就是:A向B发送一个信息“你是李小三吗?”,B向A回复“我是李小三”,A向B在发送个信息“这有你的包裹,等着接包裹啊” 对于我们搞编程的,并不是搞网络的,所以这一步我们了解即可。 当我们建立了数据的连接,就会发送http协议请求的报文,来给服务器,而服务器返回一个http协议响应的报文。(具体报文在ajax部分讲解) 浏览器收到了http协议的响应报文,根据报文中的内容 html文档,来渲染我们所看到的图文、影音等信息。 今天小编就编写到这里了,明天继续分享。手写不宜,如果觉得写的还不错的话,请给小编一个赞吧!十分感谢。 如果有php编程方面的问题,可以私信我,我也有很多视频可以分享给大家! |
|