完整的http请求

HTTP请求是由客户端发出的消息,用来使服务器执行动作.发出的消息包括起始行,Headers,Body.

转载 http://blog.51cto.com/linux5588/1351007

当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?

 

以下过程仅是个人理解:

 

Http 的header会给我们的请求包装,比如AF中经常设置的可接受的Accept(text/html) --》域名解析,根据域名找到服务器的IP --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

 

每次都请求都会经过  客户端的应用层(http协议)-->  客户端的传输层(tcp或udp协议) -->客户端的网络层(ip协议) --> 客户端的链路层(网卡,路由器等) -->  ------------------经过dns解析,穿越多个isp(互联网服务提供商,移动,联通,电信等),各种数据交换,找到了服务器------------------- 服务器的链路层  -->服务器的网络层  -->服务器的传输层  -->服务器的应用层。 这个请求完成了。

服务器响应  与请求相反,倒过来看即可。

 

一、什么是HTTP协议
http协议是Hyper Text Transfer Protocol(超文本传输协议),是用于万维网服务器传输超文本到本地浏览器的传输协议,http协议是基于TCP/IP通信协议来传送数据。http协议工作于B/S架构的系统时,浏览器作为http的客户端通过URL向http服务端即WEB服务器发送访问请求,WEB服务器收到请求后再将相应的请求内容返回到客户端。

二、HTTP的主要特点
1.无状态性
http是没有状态的,即协议对事务处理是没有记忆的,同一个客户端第二次访问位于同一服务器上的页面时,服务器是不认识不记得这个客户端的,它并不知道这个客户端曾经访问过它。这样的好处是简化了服务端的设计,能够更加容易的支持大并发量的http请求。

2.灵活
http允许传输任意类型的数据对象

3.无连接
即限制每次连接只响应一个请求,服务端回应了客户端的请求并得到客户端的回应后,断开连接,采用这种方式可以节省传输时间。

三、请求和响应的过程
1.在浏览器中输入网址
2.浏览器根据用户输入的网址来解析出相应的IP地址(DNS查找过程)
(1)浏览器缓存
如果在一定的时间内已经访问过这个网址,那么浏览器缓存DNS记录一段时间(不同的浏览器保存缓存的时间也不一样)

(2)系统缓存
如果在浏览器缓存中没有查找到相应的域名,那么就会在操作系统的缓存中进行查找(浏览器会做一个系统调用)

(3)路由器缓存
如果在系统缓存中也没有查找到相应的域名,那么就是在路由器的缓存中来进行查找

(4)ISP DNS缓存
如果在路由器缓存中还是没有查找到相应的域名,那么就需要到ISP(Internet   Service   Provider即网络服务提供商)的DNS缓存中进行查找,这里一般都可以查到对应的缓存记录

3.浏览器与服务器建立一个TCP连接
4.浏览器给WEB服务器发送一个http请求
http请求的常见请求方法有GET、POST、HEAD

GET和POST的区别


5.服务器永久重定向响应
服务器会给浏览器一个301永久重定向响应,这样的话样浏览器就会访问"http://www.baidu.com/" 而非"http://baidu.com/",服务端一定要重定向而不是直接把用户想看的内容直接返回客户端是为什么呢?其中一个原因是和搜索引擎的排名有关,例如"http://www.baidu.com/"和"http://baidu.com/",服务端会将它们看成是两个网页,这样的话就降低了两个域名的搜索排名,搜索引擎明白301状态码的意思是什么,就会把带有www和不带有www的两个地址归到同一个网站名下。另一个原因是会造成缓存友好性变差,如果一个页面有好几个名字的话,在缓存中会出现好几次。

6.浏览器跟踪重定向的地址,并向改地址发送http请求
7.服务器处理请求
8.服务器发回一个HTML响应
9.释放TCP连接
10.客户端将接到的HTML文本解析并显示出来
11.浏览器获取嵌入在HTML中的其他对象
在浏览器显示HTML时,这个HTML文本中可能会包含一些其他地址的资源,这个时候浏览器就要再向这些地址发送http请求来获得相应的资源。
--------------------- 
作者:渔溪大王 
来源:优快云 
原文:https://blog.youkuaiyun.com/weixin_41047704/article/details/82591760 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值