2. HTTP协议简介

2. HTTP协议简介

Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟踪调试一次HTTP请求。


HTTP protocol: 请求响应式协议:

client -->  server : HTTP 请求   

client <--  server : HTTP 响应

一个HTTP请求和一个HTTP响应 -->  一次HTTP事务

任意两次HTTP事务都是independent的 --> 无状态


协议分层:不同的协议完成不同的功能

多种分层模型:TCP/IP协议栈分层模型,OSI分层模型,etc.

TCP/IP分层模型:

应用层协议:HTTP protocol(HTTP请求和响应)

传输层协议:TCP protocol(保证通讯数据有序可靠的协议)-- 端口号(默认80)
网络层协议:网络层定位(使用IP地址)e.g. 93.184.216.34 -- 不好记 --> 对应 域名:e.g. baidu.com

域名到IP之间的解析:由DNS服务器(域名解析服务器)来完成

通过域名对应到IP地址,加上端口号 可以定位唯一服务

数据链路层 & 物理传输层:数据传输


浏览网页的过程模拟:

域名:example.com

--> DNS服务器

IP地址:93.184.216.34

浏览器端connect to服务器端(IP地址已知):TCP连接

连接建立成功

浏览器端可以向服务器端发起HTTP请求

服务器端可以做出对应的HTTP响应

浏览器端渲染并展示HTML文件


在浏览器地址栏输入域名:http://www.example.com:80/blahblah...

http://   -- 协议(浏览器默认为http协议,可省略)

www.example.com   --  域名

:80     --  端口号(默认为:80,可省略)

/blahblah...   --  资源路径



使用抓包工具抓到的HTTP请求包:(报文)

HTTP请求行:GET / HTTP/1.1 \r\n

GET  ---  请求方法:GET, POST, PUT

/  ---  资源路径

http/1.1   ---   HTTP协议版本(目前常用1.1)

\r\n  ---   文本结尾(换行)

HTTP请求头:从Host到最后一行

格式:key: value \r\n

e.g.:

Host:域名,主机名,虚拟主机

Connection:使用keep-alive 一个连接可以发多个请求,请求结束可以不disconnect

User-Agent:发起请求的应用程序(服务器端决定返回的版本(如pc or phone))

HTTP请求体:此例为简单的GET请求,故无请求体


HTTP响应(报文格式):

状态行   ---   HTTP/1.1 200 OK \r\n

HTTP/1.1   ---   协议版本

200   ---   状态码:表示HTTP响应的状态

OK   ---   原因

常见状态码:

200 OK:请求成功(一般以2开头的都是表示请求成功)

304 Not Modified:(请求码与缓存相关:如果浏览器端有缓存时,在请求服务器对应资源时,服务器不用再次返回);

(一般以3开头的都是与重定向和缓存相关的)

404 Not Found:(服务器端找不到资源)

500 Internal Server Error:(服务器端在请求的时候出错了)(一般5开头的表示服务器端内部的错误)

\r\n   ---   结束符

响应头   ---   从Accept-Ranges到Content-Length

格式与请求头的格式差不多

e.g.:

Server:服务器端使用什么应用程序来返回响应

Content-Type:资源内容的类型(如HTML, 音频,视频等)

Content-Length:内容的具体长度(如果一条连接上可以有多个请求的话,需要指定一个资源长度来找边界)

响应体   ---   响应头之后的部分

响应头和响应体的分隔符:空行

响应体可以使文本或二进制,一般情况下大小由Content-Length头来指定



通过Chrome来跟踪响应的过程:

打开developer-->tools 开发者工具

进入www.example.com

得到一个HTTP请求的过程

(www.example.com的状态码是304;若勾选Disable cache,则状态码会为200)

点击www.example.com查看details






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值