分享

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

 天悔大哥cqm 2019-04-18

好多小伙伴,一听到软件编程,就一直摇头!不行,不行。我学不了那玩应。太高深了。太难了。

其实这就是电视剧闹的,看见那些黑客,在电脑上霹雳巴拉的敲打键盘,搞的那么高深莫测!让很多小伙伴想学软件都不敢迈出第一步!其实只要你耐心的坐下来学习了,学完之后感觉也就那么回事!没什么高深莫测的东西!

关键是要理解原理才能学习的更好!

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

今天小编就带着大家一起来了解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就是互联网的协议。

互联网的结构

互联网一词的原意是“网际网”,就是指连接一个又一个的网络。

那么连接全世界的互联网也是如此。 比如办公室网络连接办公室,形成内部网络,公司内部网络在连接整个地区的网络,就形成区域网,而各个地区的网络在相互连接,就形成了全世界的网络。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

每个网络都是由骨干网末端网组成,每个网络之间通过NOC(Network Operation Center 网络操作中心)相连。如果网络的运营商(ISP internet Service Provider)不同,它的网络连接方式和使用方法也不同(比如联通网络和移动网络)。这种异构网络就需要IX(Internet Exchange 网络交换中心)的支持。

所以一般我们公司和家庭申请入网只需要和ISP签约即可。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

了解了互联网是通过TCP/IP来进行上网的,又了解了互联网的概念和互联网的组成。

接下来聊一聊编程了。

在之前我们说过软件的架构,分B/S架构和C/S架构。

其实这两种都属于客户端/服务器架构,我们通常用浏览器来进行上网,浏览器就成为了我们的客户端,而当我们输入网址,或者点击链接之后,服务器会给我们做出相应的响应。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

只不过B/S架构的客户端是浏览器,而C/S架构师我们自己编写的客户端。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

WWW(中文叫万维网,是一种互联网上数据读取的规范,有时候也叫web、WWW、w3)是互联网能够如此普及的一个重要原动力。用户在 web浏览器的软件上借助鼠标和键盘,就可以轻轻松松读取网上的信息。

用专业一点的话说轻轻按下鼠标,架设在很远端的服务器上的各种信息,就会呈现在浏览器上。

浏览器中既可以显示文字、图片、动画等信息,还能播放声音以及运行程序。

而浏览器与服务器之间通信所用的协议HTTP(HyperText Transfer Protocol 超文本传输协议)。所传输数据主要的格式 是HTML(HyperText Markup Language 超文本标记语言)。WWW中的HTTP属于上篇文章OSI应用层的协议(建立在TCP/IP之上的协议,属于TCP/IP协议族中的一员),而HTML属于表示层的协议。

通俗一点的说法,就是利用http协议来传输,传输的内容是html,而我们之所以看到的图片、文字、内容、是由浏览器来解释,展现出来的。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

而我们上网时候,当我们输入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 + 域名的方式来查询。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

当然像非常大型的网站都是服务器集群部署的。所以ip地址肯定有很多的。

也可以利用 nslookup +域名 来查询域名对应的ip地址

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

一般DNS解析是需要有DNS解析服务器来进行解析的,当然我们家的路由也有DNS解析的功能。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

上图就能看出来DNS解析呢就是将域名和IP地址关联映射起来。

那么当我们输入 网址 的时候,浏览器是如何进行DNS解析的呢?

当我们在浏览器,输入域名,按下回车第一件事情,就是DNS解析了。

解析的过程如下:

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

首先、我们的浏览器是有DNS缓存的,如果你曾经利用这个浏览器,成功解析过域名,它就会为他缓存该域名。

以chrome浏览器为例子,我们在浏览器的地址栏,输入chrome://net-internals/#dns 就会显示浏览器的DNS缓存。当然也可以查看其它信息!

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

我们可以看到光app.toutiao.com的浏览器dns缓存就有很多个ip地址。

如果查询到了结果,就直接返回ip地址了嘛,如果没有查询到,就到我们的第二步了。

本机HOST文件DNS解析查询

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

本机host文件存储位置为:C:\Windows\System32\drivers\etc 这个目录下,如果要修改该文件需要取得管理员身份哦。

用途:比如我把服务器搭载到了我自己的本机。 让浏览器访问一个没有的域名来访问自己的机器,就通过 127.0.0.1这个本地回环地址来访问自己的机器。

懂web 编程的小伙伴都知道 ,localhost 就可以访问自己的电脑。原理就是在Host文件将localhost 映射到 127.0.0.1 本机才能访问自己的电脑的。

如果依然没有找到,就要看自己的电脑是否设置了DNS服务器了。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

拿阿里巴巴公共DNS来举例

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

我们可以指定阿里巴巴的公共DNS解析服务器来解析。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

路由解析

如果没有指定DNS解析服务器,就到自己局域网的路由,通常路由都有DNS(缓存)解析的功能。

上级 ISP 路由解析

如果还没找到,就到区域级运营商ISP的路由来解析。如果还没有找到,就在到上一级,到了顶级,依然没有找到 该域名的解析, 那么就返回 404错误了。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

上面就是整个DNS解析的过程了。

当我们将域名 解析成为 ip地址之后,就需要和对应的计算机发出请求了。

在发出请求之前,需要建立发送数据的连接!

在发送数据连接之前,就是我们所谓的 三次握手了!

三次握手

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了!

握手的过程可能有点复杂,说的简单一点就是:A向B发送一个信息“你是李小三吗?”,B向A回复“我是李小三”,A向B在发送个信息“这有你的包裹,等着接包裹啊”

对于我们搞编程的,并不是搞网络的,所以这一步我们了解即可。

当我们建立了数据的连接,就会发送http协议请求的报文,来给服务器,而服务器返回一个http协议响应的报文。(具体报文在ajax部分讲解)

浏览器收到了http协议的响应报文,根据报文中的内容 html文档,来渲染我们所看到的图文、影音等信息。

编程难学?其实web编程很简单,跟着淼哥学php全栈之路5

今天小编就编写到这里了,明天继续分享。手写不宜,如果觉得写的还不错的话,请给小编一个赞吧!十分感谢。

如果有php编程方面的问题,可以私信我,我也有很多视频可以分享给大家!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多