计算机网络(2)-- URL、HTTP、HTTPS、HTML
1.万维网WWW
万维网WWW(World Wide Web)是一个大规模的、联机式的信息储藏所,英文简称Web。
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
万维网是一个分布式的超媒体系统,它是超文本系统的补充。超文本是指抱恨指向其他文档的链接的文本。也就是说,一个超文本由多个信息源链接成,而这些信息源可以分布在世界各地,并且数目也是不受限制的。利用一个链接可以使用户找到远在异地的另一个文档,而这又可以链接到其他的文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。
万维网以客户服务器方式工作。浏览器就是在用户主机上的万维网客户程序。万维网文档所驻留的主机则运行服务器程序,因此这台主机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
万维网必须解决一下几个问题:
- 怎样标识分布在整个互联网上的万维网文档? -- 使用统一资源定位符URL(Uniform Resource Locator)来标志万维网上的各种文档使得每一个文档在整个互联网范围内具有唯一的标识符URL。
- 用什么样的协议来实现万维网上的各种链接? -- 万维网客户程序与万维网服务器程序之间交互遵循严格的协议,即超文本传送协议HTTP(HyperText Transfer Protocol)。
- 怎样使不同作者创作的不同风格的万维网文档,都能在互联网的各种主机显示? -- 使用超文本标记语言HTML(HyperText Markup Language)。
- 怎样使用户清楚地知道在什么地方存在着链接? -- 使用搜索工具可以在万维网上方便地查找所需的信息。
2.统一资源定位符URL
统一资源定位符URL是用来表示从互联网上得到的资源位置和访问这些资源的方法。
URL的一般形式由以下四个部分组成:<协议>://<主机>:<端口>/<路径>
使用HTTP的URL:http:///<主机>:<端口>/<路径> HTTP的默认端口号是80,通常可省略。若再省略<路径>项,则URL就指到互联网上的某个主页。
3.超文本传送协议HTTP
HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
从层次的角度看,HTTP是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP协议本身是无连接的。即虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。
HTTP协议是无状态的。即同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问的相同(假设现在服务器还没有把该页面更新),因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于连接TCP连接,另一个RTT用于请求和接收万维网文档,TCP建立连接的三报文握手的第三个报文段中的数据,就是客户对万维网文档的请求报文)
HTTP/1.0的主要缺点,就是没请求一个文档就要有两倍RTT的开销。若一个主页上有很多链接的对象(如图片等)需要依次进行链接。那么每一次链接下载都导致2×RTT的开销。另一种开销就是万维网客户和服务器每一次建立新的TCP连接都要分配缓存和变量。特别是万维网服务器往往要同时服务于大量客户的请求,所以这种非持续连接会使 万维网服务器的负担很重。好在浏览器都能够打开5~10个并行的TCP连接,而每一个TCP链接处理客户的一个请求。因此,使用并行TCP连接可以缩短响应时间。
HTTP/1.1协议较好地解决了这个问题,它使用了持续连接。所谓的持续连接就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和服务器可以继续在这条连接上传送后序的HTTP请求报文和相应报文。这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
HTTP/1.1协议的持续连接有两种方式,即非流水线方式和流水线方式。
非流水线方式的特点,是客户在收到前一个响应后才能发出下一个请求。因此,在TCP连接已建立后,客户每访问一次对象都要用去一个往返时间RTT。但非流水线方式还是有缺点的,因为服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
流水线方式的特点,是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。于是一个接一个的请求报文到达服务器后,服务器就可以联系发回相应报文。因此,使用流水线方式时,客户访问所有的对象只需花费一个RTT时间。流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档效率。

每一个请求报文发出后,都能收到一个响应报文。响应报文的第一行就是状态行。状态行包括HTTP版本、状态码和解释状态码。
状态码都是三位数字的,分为5大类:
- 1xx表示通知信息,如请求收到了或正在进行处理
- 2xx表示成功,如接受或知道了
- 3xx表示重定向,如要完成请求还必须采取进一步的行动
- 4xx表示客户的差错,如请求中有错误地语法或不能完成
- 5xx表示服务器的差错,如服务器失效无法完成请求
例如:202 Accepted(接受)、400 Bad Request(错误的请求)、404 Not Found(找不到)
4.HTTPS
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
(1)HTTPS和HTTP的区别:
- HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
- HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议
- HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
- HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
- HTTP协议工作在应用层、而HTTPS协议工作在传输层。
(2)HTTPS的优点
- 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器
- HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
- HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(3)HTTPS的缺点
- SSL的证书费用很贵,以及其在服务器上的部署、更新维护非常繁琐
- HTTPS握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电,也会消耗CPU资源。
- HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此受到影响。
- 网站改用HTTPS以后,由HTTP跳转到HTTPS的方式增加了用户访问耗时(多数网站采用301跳转)。
- HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
(4)HTTPS协议的工作过程

5.HTML
要使任何一台计算机都能显示出任何一个万维网服务器上的页面,就必须解决页面制作的标准化问题。
超文本标记语言HTML(HyperText Markup Language)就是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍。
HTML并不是应用层的协议,只是万维网浏览器使用的一种语言。
计算机网络(2)-- URL、HTTP、HTTPS、HTML的更多相关文章
- XmlDocument.Load(url) url是https远程时,报错" 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。" "根据验证过程,远程证书无效。"
XmlDocument.Load(url) url是https远程时,报错" 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系." "根据验证过程, ...
- Ubuntu urllib2.URLError:<urlopen error unknown url type:https>
描述: python中urllib2 下载网页时,出现错误urllib2.URLError:<urlopen error unknown url type:https> 解决方法: pyt ...
- laravel + haproxy + https 后生成分页 url 非 https 解决办法
更合适的解决办法:在 AppServiceProvider boot 方法中使用 \URL::forceScheme('https'); 即可. 背景 近日对所有的客户都上线了 https ,本来在 ...
- 获取URL列表,设置代理请求URL,https的加密方式处理
做了一个测试的一个小工具,需求如下: 1.有一批URL列表,需要知道哪个URL请求响应内容中包含http:关键字的. 2.url请求包括http和https 2种协议 3.要部署在linux服务器上, ...
- 面试问题之计算机网络:HTTP和HTTPS的区别
https://blog.csdn.net/qq_38289815/article/details/80969419
- IIS7 / IIS7.5 URL 重写 HTTP 重定向到 HTTPS(转)
转自: http://www.cnblogs.com/yipu/p/3880518.html 1.购买SSL证书,参考:http://www.cnblogs.com/yipu/p/3722135. ...
- git url ssh和https相互切换
Changing a remote's URL The git remote set-url command changes an existing remote repository URL. Ti ...
- IIS7 / IIS7.5 URL 重写 HTTP 重定向到 HTTPS
1.购买SSL证书,参考:http://www.cnblogs.com/yipu/p/3722135.html 2.IIS7 / IIS 7.5 下绑定 HTTPS 网站(购买Wildcard SSL ...
- IIS配置Url重写实现http自动跳转https的重定向方法(100%解决)
引言 本文推荐阅读地址:https://www.52abp.com/BlogDetails/10008 这种文章网上可以说一搜一大把,但是我为什么还要写呢,因为一搜一把没把我气死,都是东抄西挪的东西, ...
- Confluence 6 通过 SSL 或 HTTPS 运行 - 为 HTTPS 修改你的 Confluence 基础 URL
在你的浏览器中,进入 > 基本配置(General Configuration). 单击 编辑(Edit). 修改服务器的基础 URL 为 HTTPS.请参考文档 configuring t ...
随机推荐
- easyui-datetimebox 控件绑定双击事件实现自动选中当前日期时间
本方法是在不改变原 js 的情况下,通过扩展方法来实现本目的 首先在 datetimebox 控件中扩展一个 绑定双击事件 的方法 $.extend($.fn.datetimebox.methods, ...
- Maven 梳理 - 使用Maven构建多模块项目
多模块实际案例 project |--business (核心业务) |--business-api |--business-service |--business-message |--busine ...
- linux mint安装ffmpge
sudo add-apt-repository ppa:mc3man/trusty-media sudo apt-get update sudo apt-get install ffmpeg
- Kotlin基本语法和使用技巧
基本语法 val value: String? = "HelloWorld" val name: String = getName() ?: return //如果是null就re ...
- vultr恢复快照后更改密码(CentOs7)
vultr恢复快照之后发现Xshell连不上了,仔细想想应该是之前换服务器的时候恢复快照导致密码更改了, 但是我已经把之前的服务器删了,没记住密码,这就很难受 只好改密码了 首先去官网 打开终端: 最 ...
- document.body.scrollTop等常见易混淆属性整理
网页可见区域宽: document.body.clientWidth; 网页可见区域宽: document.body.offsetWidth (包括边线的宽); 网页可见区域高: do ...
- C语言函数名以及取地址的区别和联系
有时看到如下的代码: /*****************************/ #include <stdio.h> #include <string.h> #inclu ...
- Be Nice!要善良
[1] It is nice to be important, but it is more important to be nice. [2] What simple act of kindne ...
- 在C#中调用Python中遇到的坑(No module named xxx)
例如Python的代码是这个样子的. # coding=<utf-> # -*- coding: utf- *- import requests import urllib def Cle ...
- Liang-Barsky算法
Liang-Barsky算法 在Cohen-Sutherland算法提出后,梁友栋和Barsky又针对标准矩形窗口提出了更快的Liang-Barsky直线段裁剪算法. 梁算法的主要思想: (1)用参数 ...