HTTP协议

HTTP协议

应用层协议:数据如何解析如何使用 http ftp… …

传输层协议:数据如何发送和接收 tcp udp。。。

网络层协议:数据接收和发送的位置 ip

HTTP:超文本传输协议

传输超文本的协议

超文本:用全是文字的方式描述一种超越文字所能展现出来的效果

HTTP是一个简单的请求-响应协议,通常运行在TCP之上

它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应

HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)

image-20220905091935580

HTTP协议特点

  1. 支持客户端服务端模式,需要使用浏览器作为客户端来访问服务端
  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST等。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快
  3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(HTTP包中用来表示内容类型的标识)加以标识
  4. 无连接:每次请求一次,释放一次连接。所以无连接表示每次连接只能处理一个请求。优点就是节省传输时间,实现简单。也称这种无连接为短连接。对应的就有了长连接,长连接专门解决效率问题。当建好一个连接以后,可以多次请求。但是缺点就是容易造成占用资源不释放的问题。当HTTP协议头部中字段Connection:keep-alive表示支持长连接
  5. 单向性:服务端永远是被动等待客户端的请求
  6. 无状态:HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。为了解决HTTP协议无状态,于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session

短连接
短连接,就是每次请求一个资源就建立连接,请求完成后连接立马关闭。每次请求都经过“创建tcp连接->请求资源->响应资源->释放连接”这样的过程
长连接
长连接(persistent connection),就是只建立一次连接,多次资源请求都复用该连接,完成后关闭。要请求一个页面上的十张图,只需要建立一次tcp连接,然后依次请求十张图,等待资源响应,释放连接。
并行连接
并行连接(multiple connections),其实就是并发的短连接。

在HTTP/1.0里,为了实现client到web-server能支持长连接,必须在HTTP请求头里显示指定

Connection:keep-alive

在HTTP/1.1里,就默认是开启了keep-alive,要关闭keep-alive需要在HTTP请求头里显示指定

Connection:close

现在大多数浏览器都默认是使用HTTP/1.1,所以keep-alive都是默认打开的。一旦client和server达成协议,那么长连接就建立好了。

请求的主要组成部分

请求行(默认请求方式为GET) GET /7/9.png HTTP/1.1

  1. 请求方式 GET
  2. 资源路径 /7/9.png
  3. 请求使用的协议 HTTP/1.1

请求头 以Host: 127.0.0.1:8080这样的键值对形式存在

请求体 get方式请求,数据直接放在URL地址后,

POST方式请求,请求体中会有数据

每一个请求头中的键值对都是在告诉浏览器请求的特征

GET /7/9.png HTTP/1.1
//Accept代表可以接受那些类型的返回数据
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
//代表连接是否为长连接
Connection: keep-alive
Cookie: JSESSIONID=269FBAF6E8C5A2DBA11E744B2FC448D4
//客户端指定自己想要访问的WEB服务器的域名/IP地址和端口号
Host: 127.0.0.1:8080
If-Modified-Since: Sat, 03 Sep 2022 00:33:09 GMT
If-None-Match: W/"693558-1662165189512"
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
sec-ch-ua: "Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
image-20220905105112571

响应的主要组成部分

响应行 HTTP/1.1 200

响应和请求相比,多了一个响应状态码,它以简单明了的语言告诉客户端本次请求的处理结果

  1. 协议 HTTP/1.1
  2. 响应状态码 200
    1. 200:服务器正常响应
    2. 3**:重定向 一般为304
    3. 4**:服务器响应给浏览器,请求的资源没有找到 一般为404
    4. 5**:服务器出现异常没有办法响应 一般为500

响应头 Keep-Alive: timeout=20这样的键值对

响应体

HTTP/1.1 304
ETag: W/"693558-1662165189512"
//Date:响应的Date使用的是GMT时间格式,表示响应消息送达时间
Date: Mon, 05 Sep 2022 02:54:09 GMT
Keep-Alive: timeout=20
Connection: keep-alive
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值