一、相关名词解释

  1. 超文本:是指包含指向其他文档的超链接的文本

  2. 万维网:简称web,是一个分布式的超媒体系统,它是超文本系统的扩充,以客户-服务器方式工作

  3. 超媒体:文档包含文本,图片,音频,视频

  4. URI:     统一资源标识符

  5. URL:    统一资源定位符,用来表示万维网上的各种文档,每个万维网文档在整个英特尔网上的URL是惟一的

    URL格式:协议 ://主机:端口/路径  http协议默认端口是80,可以省略

  6. 超文本传输协议:Hyper Text Tranfer Protocol,万维网客户程序和万维网服务程序之间交互所遵守的协议

  7. 超文本标记语言:Hyper Text Markup Language,为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起而创建的一种标记语言

    不是编程语言,通过标识符来标识网页中内容的显示方式,浏览器能够对这些标记进行解释,按照要求显示出文字、图像、动画、媒体等网页内容。

二、万维网的工作流程简介

  1. 监听:每个万维网网点都有一个服务器进程(常驻进程), 不断监听tcp的80端口,一遍发现是否有访问事件。

  2. 事件处理:监听到访问事件  建立请求--建立tcp连接--浏览器发送请求--服务器接收请求---处理请求---响应到浏览器---释放tcp连接

    标红部分为一个完整的http请求。整个过程严格遵守协议规则。

三、HTTP协议内容

  1. http协议定义了浏览器怎样向web服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。是面向事物的应用层协议

  2. 规定客户端与服务器之间每次交互,都由一个ascii码串构成的请求和包含MIME类型的响应组成。即一个完整的http交互包含2部分请求和响应

  3. http使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。

四、HTTP协议特点

  1. 无连接:客户端和web端通信时交换http报文之前,不需要先建立http连接

  2. 无状态:没有记忆,同一客户端n次访问都和第一次访问一样处理。不能区分访问的客户,和访问的次数,简化了服务器设计,支持大并发

五、浏览器上网流程

  1. 目标URL:用户在浏览器地址栏输入URL或点击页面的某个超链接

  2. 解析URL:浏览器分析地址栏或超链接中URL的主机名

  3. 确定主机IP:浏览器在本机host文件中查找是否有与主机对应的IP,没有则去万维网的DNS服务器中查找对应的IP,没有找到IP则报错

  4. 建立tcp连接:根据IP地址,浏览器与目标主机建立TCP连接,默认端口80

  5. 发起http请求报文:发起前浏览器会先检测是否有目标主机相关的cookie,有则加在请求头上。

  6. web服务器接收并处理请求:web服务器解析出请求的资源地址,在本机上找到该资源,并组成响应报文。没找到资源则报错

  7. web服务器发送响应报文:

  8. 浏览器接收并处理响应报文:浏览器根据响应的MIME类型来展示响应内容,html则显示为网页,二进制流则弹出下载窗口。html中的媒体文件再单独请求获取。

  详细流程参见: https://blog.csdn.net/u013777975/article/details/80496121  

六、http1.0和http1.1

  

      http1.1持续连接的工作方式:流水线方式,非流水线方式

    非流水线方式:客户端接收到前一个响应后才能发出下一个请求。在浏览器发完请求到接受到响应的这段时间,tcp连接是空闲的。每一次访问完成都会花费一个RTT时间。速度稍慢

    流水线方式:可以同时发多个请求,服务器再一一响应,多个请求完成总共花费一个RTT时间,速度更快。

随机推荐

  1. 深度学习之TCN网络

    论文链接:https://arxiv.org/pdf/1803.01271.pdf TCN(Temporal Convolutional Networks) TCN特点: 可实现接收任意长度的输入序列 ...

  2. cocos:C++ 导出到lua, genbindings.py修改

    cocos:C++ 导出到lua, genbindings.py修改 1. 准备 把tools目录下的cocos2dx_extension.ini, genbindings.py, userconf. ...

  3. 阿里云 azkaban 发邮件的坑

    azkaban : 是一个 任务调度平台 安装文档: https://azkaban.readthedocs.io/en/latest/getStarted.html 因为阿里云是禁止掉是STMP 2 ...

  4. Spring Security教程之Jsp标签(八)

    目录 1.1     authorize 1.2     authentication 1.3     accesscontrollist Spring Security也有对Jsp标签的支持的标签库 ...

  5. Python OpenCV4获取轮廓最大内切圆和外接圆

    为了方便讲解,我们先来创建一个多边形做演示 第一步:创建图像,并绘制一个六边形.代码和生成图像如下: # Create an image r = 100 src = np.zeros((4*r, 4* ...

  6. win10 .net framework 3.5 离线安装 不需要外网

    win 10如果安装系统时没有安装.net 3.5 那么在以后安装时就必须联网. win10 .net framework 3.5 离线安装工具: 链接: https://pan.baidu.com/ ...

  7. LeetCode dp专题

    1. 动态规划的适用场景 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法. 2. 动态规划的基本思想 动态规划背后的基本思想非常简单.大致上,若要解一个给 ...

  8. Sitecore 个性化 - 近距离和过于个人化?

    Sitecore个性化为营销人员提供了前所未有的强大功能,可以创建引人入胜一旦您发现 营销个性化 错误,就很有可能使用您的新技能来定制您网站的各个方面.但强大的力量带来了巨大的责任.在这篇文章中,我将 ...

  9. Git系列 —— github提交一个空目录

    转载自github提交一个空目录 github默认不上传空目录,有的时候需要空目录来保持程序的结构. 两种场景 1.始终保持空目录,即时里面有文件,也全部忽略掉. 建立一个.gitignore文件放到 ...

  10. .Net Core 指定编码格式的问题

    我们在读取txt文件时,如果文件格式不是utf8,则获取的中文会乱码,所以要么另存文件为utf8格式,要么使用和文件相同的编码来读取. 如果文件为utf8,则: //一种 StreamReader s ...