http请求(一)

49 篇文章 1 订阅
37 篇文章 0 订阅

HTTP请求详解

首先http请求如下

域名解析—-发起TCP的三次请求—建立TCP连接后发起http请求—服务器响应http请求,浏览器得到html代码—浏览器解析html代码,并请求代码中的资源(js css 图片)—浏览器渲染页面

以chrome为例

1.域名解析(DNS)

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库

浏览器会解析你输入域名所对应的IP地址

localhost--->127.138.1.1

2.发起TCP的三次握手

①有客户端发出SYN消息

②服务器端使用SYN+ACK表示接收到这个消息

③客户端以ACK消息响应

以上三步在服务器端和客户端建立连接,才能进行数据通信

下面一段内容引自https://www.cnblogs.com/engeng/articles/5959335.html

拿到域名对应的IP地址之后,User-Agent(一般是指浏览器)会以一个随机端口(1024 < 端口 < 65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。这个连接请求(原始的http请求经过TCP/IP4层模型的层层封包)到达服务器端后(这中间通过各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB程序(本文就以Nginx为例),最终建立了TCP/IP的连接。

3.发起HTTP请求

指由客户端像服务器端发送的信息,这个信息有如下三部分

①请求行

请求行的写法是固定的,有三部分构成
第一部分是请求方法,有我们常见的GET和POST方法
第二部分是请求的网址
第三部分是http版本

例 GET www.baidu.com http/1.1

②HTTP请求头

HTTP头在HTTP请求可以是三种头

请求头(header header)

普通头(general header)

实体头(entity header)

GET没有实体头

③内容

在POST请求中才有

4.服务器端HTTP响应请求

当服务器收到HTTP请求,会根据信息做某些处理(比如当页面中含有php代码,会 交给apche中的php模块去解析后返回),相应的返回一个HTTP响应。

响应体的结构类似于请求头

1.状态行

第一部分是http的版本号
第二部分是响应的状态码
第三部分是对状态码的描述
  + 信息类  100-199
  + 响应成功 200-299
  + 重定向 300-399
  + 客户端信息错误 400-499
  + 服务器端错误类 500-599

2.http头

HTTP响应体包括

响应头

普通头

实体头

3.返回内容

HTTP的相应内容可以是一个html页面,也可以是一个图片

相应数据的格式通过content-Type字段获得

5.浏览器解析代码,并请求代码中的资源

有时候获取到一个HTML页面,在浏览器解析过程中发现还有url,就会再次发起http请求,

许多的HTTP请求只依靠一个TCP连接,这就是所谓的持久连接。HTTP/1.1和之前版本的显著区别是HTTP/1.1默认使用持久连接。即,除非服务端在应答中明确指出(请求中Connection域的值是”close”),客户端应当假定服务端会维持一个持久连接,即使从服务端收到的应答是报告错误。

6.浏览器渲染页面

HTTP长连接 短连接 持久连接

HTTP长连接

客户端与服务器端建立连接,建立连接之后不断开,在进行报文的发送和接收

步骤如下:建立连接—-数据传输(保持连接)数据传输—关闭连接

使用场景

监控系统:后台硬件的热插拔,LED,温度,电压变化

即时通讯系统:其他用户登录,发送信息

橡这些链接,如果每次都建立连接在关闭的话处理速度会变低。所以连接上以后,不用在建立TCP链接,直接发送数据

短连接

客户端与服务器端没进行一次报文交易才进行通讯连接,完毕之后立即断开,

短连接操作步骤 :

建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接

使用场景:

PC端和移动端的web网站,这种操作频繁,点对点通讯,每次TCP链接都需要三次握手四次挥手,

持久连接

现有的持久连接类型有两种:HTTP/1.0+的keep-alive和HTTP/1.1的persistent.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值