首页 > 其他分享 >http协议

http协议

时间:2022-11-01 16:58:25浏览次数:44  
标签:协议 HTTP 浏览器 请求 响应 服务器 http 客户端

一、概念

HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口如:http://www.ip138.com:80。 需要注意的是,现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。

二、http请求头内容

请求头:
1、Accept:用于告诉服务器,客户机支持的数据类型
2、Accept-Charset:用于告诉服务器,客户机采用的编码
3、Accept-Encoding:用于告诉服务器,指定相应的编码集
4、Accept-Language:客户机的语言环境
5、Host:主机名
6、If-Modified-Since:客户机通过这个头告诉服务器资源缓存时间
7、Referer:客户机告诉服务器它是从哪个资源访问服务器(防盗链)
8、User-Agent:客户机通过这个头告诉服务器客户机的软件环境
9、Cookie:客户机通过这个头可以向服务器带数据
响应头:
1、Location:配合302状态吗使用,用于告诉客户机找谁
2、Server:服务机通过这个头,告诉浏览器服务器的类型
3、Content-Encoding:服务器通过这个头,指定相应的编码集
4、Content-length:服务器通过这个头告诉浏览器回送数据的长度
5、Content-Type:服务器通过这个头告诉浏览器回送数据的类型
6、Last-Modified:服务端通过这个头告诉浏览器当前资源缓存的时间
7、Refresh:服务器通过这个头,告诉浏览器间隔多长时间刷新一次
8、Content-Disposition:服务器通过这个头告诉浏览器下载方式打开数据
9、Transfer-Encoding:服务器通过这个头,告诉浏览器数据的传送格式
10、Expires:服务器通过这个头告诉浏览器把回送的资源缓存多长时间

三、请求方式

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

 

1、OPTIONS

 

返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

 

2、HEAD

 

向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

 

3、GET

 

向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url

 

4、POST

 

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

 

5、PUT

 

向指定资源位置上传其最新内容

 

6、DELETE

 

请求服务器删除Request-URL所标识的资源

 

7、TRACE

 

回显服务器收到的请求,主要用于测试或诊断

 

8、CONNECT

 

开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。

 

例如,CONNECT 可以用来访问采用了 SSL (en-US) (HTTPS) 协议的站点。客户端要求** 代理 **服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。

四、特点

1、无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

2、无状态

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

3、简单快速

客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

4、灵活

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

5、支持B/S及C/S模式

http工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

五、http请求或响应步骤

客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容。

1、客户端连接到Web服务器

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com

2、发送HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3、服务器接受请求并返回HTTP响应

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

4、释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5、客户端浏览器解析HTML内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

六、get方法和post方法的区别

“get”方法提交的数据会直接填充在请求报文的URL上,如“ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1 ” “?”问号划分域名和get提交的参数,A=B中的A是参数名,B是参数值,多个参数之间用&进行分割,如果参数值是中文,则会转换成诸如%ab%12加密16进制码。一般来说,浏览器处理的URL最大限度长度为1024B(不同浏览器不一样),所以GET方法提交参数长度有限制。

 

“post”方法提交的数据会附在正文上,一般请求正文的长度是没有限制的,但表单中所能处理的长度一般为100k(不同协议不同浏览器不一样),而且需要考虑下层报文的传输效率,不推荐过长。

 

所以GET方法可以用来传输一些可以公开的参数信息,解析也比较方便,如百度的搜索的关键词,而POST方法可以用来提交一个用户的敏感信息(如果不使用HTTPS加密,报文正文仍旧是明文,容易被人截获读取)

 

标签:协议,HTTP,浏览器,请求,响应,服务器,http,客户端
From: https://www.cnblogs.com/songyunjie/p/16848278.html

相关文章

  • GDB Remote Serial Protocol —— RSP协议解析
    简介这篇文章翻译看看也是不错的    https://tatsuo.medium.com/implement-gdb-remote-debug-protocol-stub-from-scratch-3-e87a697ca48c    GDB......
  • 使用HTTP代理IP需要了解的三个问题
    很多人都使用过HTTP代理IP,但有一些问题可能还不是很清楚,我们一起来看看吧。1、并非所有网站都可以访问很多朋友以为使用了HTTP代理IP,就可以访问所有的网站。事......
  • 如何用小黄鸟(HttpCanary)下载微信视频号的直播回放?
    目前微信视频号直播只在手机端才会显是,PC端不会显示,为此我们需要手机端抓包工具进行抓包,找到直播回放的的m3u8地址,用相应的工具下载即可。 下面开始教学: 第一步:下载......
  • Filter|HttpServletRequestWrapper
    1.Filterpackagecom.jinruaneducate.module.filter;importorg.apache.commons.codec.binary.Base64;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importja......
  • k3s+traefik+cert-manager+letsencrypt实现web服务全https
    1.简介随着HTTPS不断普及,越来越多的网站都在从HTTP升级到HTTPS,使用HTTPS就需要向权威机构申请证书,需要付出一定的成本,如果需求数量多,也是一笔不小的开支。cert-mana......
  • TCP_IP协议
    TCP/IP协议栈详解一,TCP/IP协议栈概述1,TCP/IP协议层次结构 应用层 传输层 互联网层 网络接口层2,TCP/IP协议栈与OSI/RM模型的区别 相同点: 两者都是以协议栈的......
  • node - http 重定向到 https
    node-http重定向到httpsconsthttps=require('https');consthttp=require('http');constfs=require('fs');//读取证书文件constoptions={key:......
  • 如何自定义HTTP 状态响应码(response code)
    一、什么是HTTP状态响应码/都有哪些状态响应码?   来自于Mozilla基金会网站的关于HTTP状态码的文章(​​​https://developer.mozilla.org/zh-TW/docs/HTTP/Response_co......
  • node 如何让一个端口同时支持 http 与 https
    node如何让一个端口同时支持http与https/**让8080端口同时支持http与https*/varnet=require('net');varhttp=require('http');varhttps=requ......
  • node.js - http、模块化、npm
    今天是node学习的第二天,其实越往后面学越感觉有点熟悉的味道了,光针对于node来说哈,为什么呢,因为我之前学过一点云计算的东西,当时感觉没什么用搞了下服务器客户端这些,没想到这......