Web基础与HTTP协议
Posted 橘淮南枳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web基础与HTTP协议相关的知识,希望对你有一定的参考价值。
目录
- 域名概念
- 域名注册
- DNS的查询类型
- DNS域名解析方式
- 网页的概念
- HTML
- HTML 基本标签
- 静态网页与动态网页
- HTTP 协议概述
- HTTP 方法
- GET 和 POST 比较
- HTTP 状态码
- HTTP 请求流程分析
- 总结(必背)
域名概念
1、网络是基于 TCP/IP 协议进行通讯和连接的,每一台主机都有一个唯一的标识(固定的IP地址),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的主机和网络时,均采用一种唯一、通用的地址格式;即每一个与网络相连的计算机和服务器都被指派一个独一无二的地址。
2、为了保证网络上每台计算机的IP地址的唯一性,用户必须向特定的机构申请注册,分配IP地址;网络中的地址分为两套:IP地址系统和域名地址系统。
这两套地址其实是一一对应的关系,由于IP地址是数字标识,使用时难以记忆,因此在IP地址的基础上又发展出一种符号化的地址方案来代替。
- 早期使用Hosts文件解析域名
1、主机名称重复
2、主机维护困难 - DNS(Domain Name System 域名系统)
1、分布式
2、层次性 - 域名空间结构
1、根域
2、顶级域(组织域,国家/地区域名)
3、二级域名
4、FQDN=主机.DNS后缀
域名注册
- 域名注册是 Internet 中用于解决地址对应问题的一种方法
- 遵守先申请先注册原则
- 域名注册步骤
准备申请资料==>寻找域名注册网站==>查询域名==>正式申请==>申请成功
DNS的查询类型
1. 从查询方式上划分
递归查询:客户端得到结果只能是成功或失败
迭代查询:服务器以最佳结果作答
2. 从查询内容上划分
正向查询:由域名查找IP地址
反向查询:由IP地址查找域名
总结:
1、网络上交互是基于TCP/IP协议的,每个主机在逻辑上都有一个唯一的IP地址,物理地址为MAC地址。
2、为了保证地址的唯一性,用户协议向特定的机构申请注册,分配IP地址网络中的地址有两套方案:1、IP地址系统 2、域名地址系统。
3、由于IP是由32位二进制数字标识的,不方便记忆,所以以IP地址为基础发展了符号化的地址来代替解决,也就是域名。
DNS域名解析方式
1、 /etc/hosts
Linux系统中负责快速解析的文件,包含了IP地址和主机名的映射关系,在没有DNS服务器的情况下,使用本地etc/hosts完成解析/映射,实现快速访问。
PS:主要用于主机之间(IP和主机名)的映射/解析关系;示例:
192.168.154.10 master
192.168.154.11 node1
192.168.154.12 node2
2、 /etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,这个文件是由域名解析器(resolvr,一个根据主机名解析IP地址的库)使用配置文件。
PS:主要用与匹配DNS服务器,示例:
nameserver 114.114.114.114(是国内移动、电信和联通通用的DNS)
nameserver 8.8.8.8(GOOGLE公司提供的DNS)
nameserver 218.2.135.1(江苏南京的DNS)
3、 /etc/sysconfig/network-scripts/ifcfg-ens33
我们也可以在网卡配置文件中定义DNS1= DNS2=
生效顺序:1hosts文件==> 2网卡配置文件==> 3 /etc/resolv.conf
网页的概念
- 网页
纯文本格式文件
编写语言为html
在用户的浏览器中被 “翻译” 成网页形式显示出来 - 网站
由一个一个页面构成的,是多个网页的结合体 - 主页
打开网站后出现的第一个网页称为网站主页(或首页) - 域名
浏览网页时输入的网址 - HTTP
用来传输网页的通信协议 - URL
是一种万维网寻址系统 - HTML
用来编写网页的超文本标记语言 - 超链接
是网站中点击这个链接后就能跳转至其他页面 - 发布
将制作好的网页上传网站
HTML
HTML叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。
HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为”.html”或“.htm”即可。
HTML 基本标签
(1)HTML 语法规则
HTML标签采用双标记符的形式,前后标记符对应,分别表示标记开始和结束,标记符中间的内容被标签描述。前标记符由“”表示,结尾标记符多了一个“/”,由“”表示。
(2)HTML 文件结构
HTML文件最外层由表示,说明该文件是用HTML语言描述的。在它里面是并列的头标签()和内容标签(),最基本的
●HTML 文件结构如下:
<html>
<head>网页的内容描述信息</head>
<body>网页显示的内容</body>
</html>
●头标签中常用标签:
标签 描述
<title> 定义了文档的标题
<base> 定义了页面链接标签的默认链接地址
<link> 定义了一个文档和外部资源之间的关系
<meta> 定义了 HTML 文档中的元数据
<script> 定义了客户端的脚本文件
<style> 定义了 HTML 文档的样式文件
●内容标签中常用标签
标签 描述
<table> 定义一个表格
<tr> 定义了表格中的一行
<td> 定义了表格中某一行的一列
<img> 定义了一个图像
<a> 定义了一个超链接
<p> 定义了一行
<br> 定义了换行
<font> 定义了字体
<h1> 定义字体大小
静态网页与动态网页
1.静态网页
在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,静态网页是标准的HTML文件,它的文件扩展名是.htm、.html。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。静态网页也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字幕等。这些“动态效果”只是视觉上的,与下面将要介绍的动态网页是不同的概念。
2.动态网页
所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着HTML代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非是修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。动态网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见网页制作格式,而是以.aspx、.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。
动态网页是基本的html语法规范与Java、PHP、C#等高级程序设计语言、数据库编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因此,从这个意义上来讲,凡是结合了HTML以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。
3.动态网页语言
早期的动态网页主要采用通用网关接口 CGI(Common Gateway Interface)技术,虽然 CGI 技术已经发展成熟而且功能强大, 但由于编程困难、效率低下、修改复杂,所以有逐渐被新技术取代的趋势。
目前常用的动态网页编程语言如下:
●PHP
即 Hypertext Preprocessor(超文本预处理器),它是当今 Internet 上最为火热的脚本语言,其语法借鉴了 C、Java、PERL 等语言,但只需要很少的编程知识你就能使用 PHP 建立一个真正交互的 Web 站点。
●JSP
即 Java Server Pages(Java 服务器页面),它是由 Sun Microsystem 公司于 1999 年 6 月推出的新技术,是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术。
●Python
是一种面向对象、跨平台的动态类计算机程序设计语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的大型项目开发。
●Ruby
是一种简单快捷的面向对象(面向对象程序设计)脚本语言,在 20 世纪 90年代由日本人松本行弘(Yukihiro Matsumoto) 开发,遵守GPL 协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。
HTTP 协议概述
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。
(1)HTTP/0.9:已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。
(2)HTTP/1.0:这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
(3)HTTP/1.1:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,能很好地配合代理服务器工作。还支持管道方式机制,即在同一个TCP连接里面,客户端可以同时发送多个请求,以便降低线路负载,提高传输速度。
(4)HTTP/2.0:完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。引入了头信息压缩机制,使用gzip或compress压缩后再发送。支持服务端推送,允许服务器未经请求,主动向客户端发送资源。
HTTP 方法
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法, 告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST、PUT。
HTTP 方法 描述
GET 对服务器资源获取的简单请求
PUT 向服务器提交数据,以修改数据
DELETE 删除服务器上的某些资源
POST 用于发送包含用户提交数据的请求
HEAD 请求页面的首部,获取资源的元信息
1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作
GET 和 POST 比较
-
GET 方法:从指定的服务器上获得数据
GET请求能被缓存
GET请求会保存在浏览器的浏览纪录里
GET请求有长度的限制
主要用于获取数据
查询的字符串会显示在URL后缀中,不安全,比如 http://www.test.com/a.php?Id=123 -
POST 方法:提交数据给指定服务器处理
POST请求不能被缓存
POST请求不会保存在浏览器的浏览纪录里
POST请求没有长度限制
查询的字符串不会显示在URL中,比较安全
HTTP 状态码
HTTP 状态码(HTTP Status Code)是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一 URL 时, 服务器根据处理情况返回相应的处理状态。
通常正常的状态码为2xx,3xx(如200),如果出现异常会返回4xx,5xx(如404)。
状态码首位 已定义范围 分类
1xx 100-101 信息提示
2xx 200-206 成功
3xx 300-305 重定向
4xx 400-415 客户端错误
5xx 500-505 服务器错误
HTTP 常见状态码
状态码 功能描述
200 一切正常
301 永久重定向
302 临时重定向
401 用户名或密码错误
403 禁止访问(客户端IP地址被拒绝)
404 请求的文件不存在
414 请求URI头部过长
500 服务器内部错误
502 无效网关
503 当前服务不可用
504 网关请求超时
HTTP 请求流程分析
用户在浏览器输入URL访问时,发起HTTP请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体。
1.请求报文
请求行:请求行由请求方法、URL 以及协议版本三部分组成。
请求头:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一行非常重要,必不可少。
请求体:请求体是请求提交的参数,GET 方法已经在 URL 中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。
常用的请求头:
请求头 描述
Host 接受请求的服务器地址,可以是 IP:端口号,也可以是域名
User-Agent 发送请求的应用程序名称
Connection 指定与连接相关的属性,如 Connection:Keep-Alive
Accept-Charset 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式
Accept-Language 通知服务端可以发送的语言
2.响应报文
状态行:状态行由协议版本,状态码,状态码描述三部分组成。
响应头:响应头与请求头部类似,为响应报文添加了一些附加信息。
空行:响应头部的最后会有一个空行,表示响应头部结束。
响应体:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。
常见响应头:
响应头 描述
Server 服务器应用程序软件的名称和版本
Content-Type 响应正文的类型(是图片还是二进制字符串)
Content-Length 响应正文长度
Content-Charset 响应正文使用的编码
Content-Encoding 响应正文使用的数据压缩格式
Content-Language 响应正文使用的语言
总结(必背)
1、域名空间结构
主机名 . 子域[. 二级域]. 顶级域 .
末尾的点代表根域
2、HTML文档结构
文件名以 .html 或 .htm 为后缀
3、网页基本标签
<html>
<head>this is first html</head>
<body>Hello,World!</body>
</html>
4、http/1.0与http/2.0区别
http/1.0:纯文本传输;http响应后立即关闭tcp连接;显示http头部信息(比如http协议版本号、状态码等)
http/1.1:支持长连接(连接保持、持久连接);支持管道机制(同时发送多个http请求)
http/2.0:支持长连接;支持完全多路复用(同时发送多个请求);支持网页头部压缩;支持服务端主动推送;二进制传输
5、http请求方法
http请求方法 | |
---|---|
GET | 发送查询请求获取网页资源 |
PUT | 提交数据,修改数据 |
DELETE | 删除资源 |
POST | 提交数据,插入添加数据 |
HEAD | 请求网页的首部信息 |
6、HTTP协议报文格式
请求报文:请求行 (http请求方法、URL路径、协议版本) 请求头 请求体
响应报文:响应行 (协议版本、响应状态码) 响应头 响应体
7、响应状态码
请求正常的:2XX 3XX
请求异常的:4XX 5XX
200 一切正常
301 永久重定向
302 临时重定向
400 请求错误,客户端发送的请求有语法错误
401 用户名或密码错误
403 禁止访问,客户端IP被拉黑拒绝
404 请求的文件不存在,请求的URL路径有误,服务器没有对应的文件
500 服务器内部错误,服务器端程序存在缺陷
502 错误网关,代理服务器接收到了来自远端服务器的无效响应
503 服务不可以,服务器过载或正在维护
504 网关超时,代理服务器无法在规定的时间内收到来自远端服务器的响应
Web基础与http协议!
一.web基础
1.web概述
web就是全球广域网,也称万维网,是一种分布式图形信息系统,是建立在Internet上的一种网络服务。
2.web1.0和web2.0的区别
web1.0
web1.0是以编辑为特征,网站提供给用户的访问内容是编辑后的,是属于静态页面,典型代表是早期的黄页。
web2.0
web2.0是属于动态页面的形式,用户既是浏览者也是制造者,是一个交互的页面形式;加强了网站与用户的互动,实现了网站和用户的交流与参与。web2.0的主要特征就是活跃的用户开放的平台,以话题兴趣分享为聚合点形成社群。
3.域名和DNS
(1)域名的概念
网络中的地址方案分为IP地址系统和域名地址系统。
网络上的数字型IP地址相对应的字符型地址就是域名。
通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。
(2)域名的结构类型
一个域名由根域,顶级域,子域,主机名构成。
①根域
位于域名空间最顶层,一般用一个".”表示 6基础单位,除了根域其他都只有一个上级域,有0或多个子域,同层域不可重复的子域或域名
②顶级域
一般代表一种类型的组织机构或国家地区(主要有此两种类型构成),如 net(网络公司)、com(商业)、org(民间团体组织)、edu(教育)、gov(政府)、mil(军事) 、cn(中国)、jp(日本)、hk(中国香港)
③二级域
在顶级域之前的域名,指域名注册人的网上名称,如baidu,yahoo等
④主机名
主机位于域名空间的最下层,就是表示一台计算机,www,mail都是表示计算机的名称
www.baidu.com.是完全合格域名(FQDN),也是计算机在域名中的全名。
(3)域名注册
域名注册是internet中用于解决地址对应问题的一种方法。
遵循先申请先注册的原则,每个域名都是独一无二,不可重复的。
域名注册的一般步骤:
①准备申请资料
②寻找域名注册网站
③查询域名
④正式申请
⑤申请成功
(4)DNS
DNS是域名解析系统,域名和IP地址是一一对应的。
DNS解析的3种方式
①在本地/etc/hosts映射文件中手动添加映射记录
②到客户端配置文件/etc/resolv.conf添加映射记录
③进入网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33手动定义DNS
生效顺序1./etc/hosts 2.网卡配置文件 3./etc/resolv.conf
4.静态页面
(1)静态页面的定义
静态网页是标准的HTML文件,扩展名是.htm、 .html
例如文本、图像、声音、Flash动画、客户端脚本和Activex控件及Java小程序等
静态页面是网站建设的基础,早期网站一般都由静态网页制作
没有后台数据库、内容固定,没有交互性,不含程序和不可交互的网页
内容稳定,容易被搜索引擎检索
(2)静态页面特点
每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,而不含有"?”
网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的
静态网页的内容相对稳定,容易被搜素引擎检索
静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难
静态网页的交互性较差,在功能方面有较大的限制
静态页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面
5.动态页面
(1)动态页面
网页URL不固定,能通过后台与用户交互在动态网页网址中有一个标志性的符号—“?
常用的语言有PHP、JsP、Python、 Ruby等
(2)动态页面的特点
交互性:网页会根据用户的需求二进行改变和响应
自动更新:不需要手动更新html文档,会自动生成新页面,节省工作量
根据需要产生不同页面:不同的时间,不同的用户访问会根据需求和场景产生不同的页面
6.网页与HTML
网页是构成网站的基本元素,是承载各种网站应用的平台,网页由HTML(超文本标记语言)编写。
(1)网页概述
网页是一个文件,存放于计算机中,计算机必须联网才能读取网页。网页由网址(URL)来识别与存取。
网页包含的内容
文本,图像,FLASH动画,声音,视频,表格,导航栏,交互式表单
网页相关的概念
域名:浏览网页是输入的地址
HTTP:用来传输网页的通信协议
URL:是一种万维网寻址系统,表示网络上资源的位置路径
HTML:是编写网页的超文本标记语言
超链接:将网站中不同页面链接起来的功能
发布:将制作好的网页上传到服务器供用户访问的过程
(2)HTML概述
HTML叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符来标记要显示的网页中的各个部分。
(3)HTML基本标签
HTML文件结构
头部部分
标题部分
主题部分
网页内容,包括文本图像等
网页基本标签
标题标签
行控制相关标签
范围标签
图像标签
超链接标签
特殊符号
(4)网站和主页
网站由网页组成,包含多个网页页面,是具有独立域名,独立存放空间的内容合集。
主页是用户打开浏览器是默认打开的网页首页。
二.http协议
1.http协议概述
http协议是超文本传输协议,是应用最广泛的一种网络协议,是基于tcp协议的应用层传输协议,是客户端和服务端进行数据传输的一种规则。
http是建立在tcp之上的,客户端和服务器要经过三次握手连接,之后发送http请求与http响应都是通过访问socket接口来调用tcp协议实现的,并且每次都会进行调用。
http是一种无状态协议,本身不会对发送的请求和相应的状态进行持久化处理。所以http就比较简单高效,能够提高速度,处理大量事务。
但是在很多场景中,需要保持用户的登录状态和相关信息,http是无状态协议无法做到,所以要引入一些技术来记录管理状态,例如cookie。cookie可以实现http的短期持久化处理。
cookie
是缓存在用户端(client)浏览器中的(默认缓存一天),当下次客户端通过同一个浏览器访问客户端的时候,会优先读取cookie中的缓存信息,向服务端进行请求,同时服务端收到客户端请求的时候,读取到cookie文件,知道客户端之前找的是服务器A处理的任务,为了省事儿,省资源,干脆直接讲请求直接再交给服务器A处理
http的版本
http 0.9已经过时,有http1.0,http1.1,http2.0
2.HTTP1.0和HTTP1.1之间的区别
(1)缓存处理
在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
(2)带宽优化及网络连接的使用
HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接
(3) 错误通知的管理
在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除
(4)Host头处理
在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)
(5)长连接
HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点
3.http获取web资源的方法
GET,PUT,DELETE,POST,HEAD
常用的方法是GET和POST
GET:请求获取request-URI所表示的资源
PUT:请求服务器存储一个资源,并用request-URI作为其标识
DELETE:请求服务器删除request-URI所标识的资源
POST:在request-URI所标识的资源后附加新的数据
HEAD:请求获取由request-URI所标识的资源的响应消息报头
4.http的状态码
当使用浏览器访问某一个URL,会根据处理情况返回相应的处理状态
通常正常的状态码为2xx,3xx (如200 ok)
如果出现异常会返回4xx,5xx(如404)
生产环境中的常见状态码
5.http请求流程分析
用户在浏览器中输入URL访问时,发起HTTP请求报文,其中包括请求行,请求头,请求体;服务器收到请求后返回响应报文,包括状态行,响应头,响应体。
用户输入URL(地址链接)(http://www,baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先找自身的缓存,如果有解析结束,如果没存客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNs缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。
客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接
(1)请求报文
请求行
由请求方法,URL,协议版本组成
请求头
添加了一些附加信息
Accept:客户端可以接受的数据类型
Accept-Language:客户端可以接受的语言类型
Referer:表示请求发起时,浏览器地址栏中的地址
User-Agent:浏览器的信息
Content-Type:发送的数据类型Content-Length:发送的数据长度
空行
请求头结束会有个空行,表示请求结束
请求体
请求提交的参数,就是发送给服务端的数据
(2)响应报文
状态行
由协议版本,状态码,状态码描述组成
响应头
与请求头类似,添加了一些附加信息
空行
表示响应头结束
响应体
服务器返回的相应HTML数据,浏览器对其解析后显示页面
以上是关于Web基础与HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章