1. 协议小结:HTTP协议与TCP/IP协议

现代Web应用开发的基础是HTTP协议,那么HTTP协议与我们熟知的TCP/IP协议有什么关系呢?

这个要从网络通信模型说起,简单的说,计算机通信就像两个人在互相交流,怎样才能互相听懂呢?很简单,就是使用一致的语言和表达方式。

计算机之间通信的语言就是网络协议。网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,比如传统的开放式系统互连参考模型(OSI)中,定义了7个层次的模型,从底到上依次为:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第 n层与另一台设备上的第n层进行通信的规则就是第n层协议。在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够相互交换信息。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。

常见的3种协议各有不同特点,也就导致了有不同的适用范围。最适合使用在Internet上的就是TCP/IP 协议。该协议系统并没有使用传统的7层,而是提出了简化的4层模型,从底到上依次为:网络接口层,网络层,传输层,应用层。同样的,只有为每一层定义好交流的协议,网络中的计算机之间才能互相通信。例如:网络层的IP协义,传输层的FTP,UDP,TCP协议等,应用层的HTTP,SMTP,POP3,FTP,TELNET等协议。

HTTP协议是一个叫超文本传输协议的应用层协议,是提供网页服务的协议。没有HTTP 协议是不能浏览网页的,但是其他的像邮件服务(只要协议在)都还是正常的。

2. 请求过程:HTTP请求

我们在浏览器中访问网站,与服务器进行交互都是通过HTTP请求发出的。当你点击一个连接时,浏览器首先找到站点的IP地址(通过DNS来实现)。在找到IP地址后建立TCP连接,连接建立后我们就可以发送请求了。每个交互都会转化成相应的HTTP请求,最常用的如GET(第一次请求页面),HEAD,POST(附带参数,请求页面),PUT等等。转化后的HTTP请求是有一定格式的,这个有兴趣的可以参考相应的HTTP请求格式说明。

服务器处理完请求后,会返回HTTP响应给客户端并断开连接,这个响应同样包含了很多的信息。浏览器收到响应以后,解析该响应并显示在浏览器中。响应内容中最有用的就是响应的状态(数字表示,如200表示成功,404表示没找到页面等)和返回请求的各种文本(如页面HTML,CSS文件,JavaScript文件等等)。

3. HTML语言

浏览器从服务器获得到HTML后,就负责解释并展现HTML表示的内容。HTML代表超文本标记语言,其最初的目的就是格式化文本,方便浏览器解释,并展示给客户端。但是随着网络的发展,网络传输和显示的内容也日渐丰富,页面不再只包括静态的图片和文字,而是包括了列表,选项,交互等内容。扩充后的HTML提供了更为丰富的标签。其中最突出的就是<form>表单,它是应用程序与用户进行交互的前提。<form>表单提示浏览器,这个标签与</form>标签之间的内容会返回给服务器。表单的数据会被“投递”给服务器处理,这个过程就是回发。

典型的HTTP请求通常就是先进行GET获取,再进行POST投递 - 前者获取最初的文档,后者用于在必要的时候将数据返回给服务器,进行更为复杂的计算和处理。

直接使用HTML开发无疑是很麻烦的,为了更好的完成现代动态Web开发,不同的公司提供了不同的运行环境和开发工具,微软提供的就是ASP.NET。它提供了很多集成的对象,简化了开发的难度。但是还是有很多的问题不能很好的解决。比如HTTP是无状态的,如何保持页面POST前后的状态,实在是一个困难的问题。

4. Web开发思想

从上面的分析我们可以看到,归根结底,Web开发无非是要处理两大问题:

(1). 在无连接的HTTP协议上通过HTML管理用户的界面

(2). 在无状态的HTTP协议上管理应用程序的状态。

虽然有像ASP这样的框架出现了,使得Web的开发更加简单,但是开发者仍然要自行开发许多的“标准”功能,例如安全系统,管理UI状态,数据访问等等。所有这一切促使了更高级,更智能的像ASP.NET这样的编程框架的产生。

了解了这个基本问题,以及让开发者开发更快速,更简单这样最直接的目的,我们可以想象,具体的开发框架必定会继续向前发展,不断推陈出新,并提供更加完整,更加智能的功能。

当然了,HTML5中WebSocket的出现已经引发了有连接的状态,这个在前面的文章中已经提及了,就不多说了。

JavaScript大杂烩0 - WEB基础知识的更多相关文章

  1. Web基础知识和技术

    WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...

  2. Python全栈开发之17、tornado和web基础知识

    一.web基础知识 学习web框架之前,先来看一下web基础知识,首先要明白其本质就是socket,用户对应一个socket客户端,但是如果从socket开始开发web应用程序那么效率太了,正确的做法 ...

  3. day29—JavaScript中DOM的基础知识应用

    转行学开发,代码100天——2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ...

  4. javascript中BOM部分基础知识总结

    一.什么是BOM      BOM(Browser Object Document)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管 ...

  5. JavaScript中BOM的基础知识总结

    一.什么是BOM      BOM(Browser Object Model)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管理窗口 ...

  6. Vue 2.0入门基础知识之全局API

    3.全局API 3-1. Vue.directive 自定义指令 Vue.directive用于自定义全局的指令 实例如下: <body> <div id="app&quo ...

  7. web基础知识,

    # web基础 网上冲浪 surfing the Internet weibo.com 域名,主机名,微博服务器的地址名 当用户在地址栏输入一个URL(uniform resource,locator ...

  8. web基础知识汇总

    HTML&XML 1.JavaWeb的概述 A: 什么是Web----->就是网页或者网站 B: 什么是JavaWeb----->就是使用java语言做web C: 浏览器访问网站 ...

  9. WEB 基础知识(一)

    1. 系统架构 1.1 B/S系统架构 1.2 C/S系统架构 1.3 对比与区别 1.3.1 概述 C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过 ...

随机推荐

  1. TI 开发板安装USB转串口驱动

    使用TI开发板的时候,USB转串口驱动没有,显示,无法识别设备.搜了好久才搜到相关驱动. 做个记录. 链接: https://pan.baidu.com/s/1ZT5zzVcU727jrYacKVoT ...

  2. iOS开发笔记(Swift)-通用App安装引导页的实现

    之前一直做的项目都是基于OC开发的,最近开始尝试使用Swift语言来重写整个项目. 本篇文章主要是讲述如何使用Swift来实现常见的通用App安装引导界面. 效果预览: 实现思路: 主要是采用了UIS ...

  3. Liferay7 BPM门户开发之12:acitiviti和liferay用户权限体系集成

    写到第12章才出现Liferay的内容,希望可以厚积薄发. 我们的目标是不使用不维护Activiti的用户组织架构,只维护Liferay的体系,这样的好处是非常明显的,即不用做组织架构的同步工作. 原 ...

  4. python(33)——【re模块】

    re模块(正则表达式) 就其本质而言,正则表达式是一种小型的.高度专业化的编程语言 在Python中(它内嵌在python中),并通过re模块来实现,正则表达式被编译成一系列的字节码,然后由C编写的匹 ...

  5. docker环境 宿主机和容器之间复制文件

    容器往宿主机:docker cp 3234234324234:/database_dump_bak/db_bak.dmp /home/test 宿主机往容器:docker cp wenjian_001 ...

  6. Hadoop生态系统之Yarn

    Apache YARN(Yet Another Resource Negotiator) 是Hadoop的集群资源管理系统.YARN被引入Hadoop2最初是为了改善MapReduce的实现,但它具有 ...

  7. Android开发之漫漫长途 XIX——HTTP

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  8. springboot将项目源代码打包

    springboot将项目源代码打包并发布到仓库 如果我们有一些类和方法是公用的,可以打开公用包,而这时使用默认的build方式都所有依赖都打进去,而且你当然项目的文件虽然在包里,但却在boot-in ...

  9. 从零开始学 Web 之 DOM(二)对样式的操作,获取元素的方式

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  10. Spring Security OAuth笔记

    因为工作需要,系统权限安全方面可能要用到Spring Security OAuth2.0,所以,近几天了解了一下OAuth相关的东西.目前好像还没有系统的学习资料,学习主要是通过博客,内容都是大同小异 ...