Http超文本传输协议
HTTP协议 超文本传输协议 由万维网制定(w3c)
是浏览器与服务器通讯的应用层协议 , 规定了浏览器与服务器之间的交互规则以及交互数据的格式信息等 。
文章插图
报文
HTTP协议对于客户端与服务端之间的交互规则有以下定义:
要求浏览器与服务端之间必须遵循一问一答的规则 , 即:浏览器与服务端建立TCP连接后需要先发送一个请求(问)然后服务端接收到请求并予以处理后再发送响应(答) 。注意 , 服务端永远不会主动给浏览器发送信息 。
HTTP要求浏览器与服务端的传输层协议必须是可靠的传输 , 因此是使用TCP协议作为传输层协议的 。
- HTTP协议对于浏览器与服务端之间交互的数据格式 , 内容也有一定的要求 。
- 浏览器给服务端发送的内容称为请求Request
- 服务端给浏览器发送的内容称为响应Response
文章插图
http协议
请求和响应中大部分内容都是文本信息(字符串) , 并且这些文本数据使用的字符集为:ISO8859-1.这是一个欧洲的字符集 , 里面是不支持中文的!!! 。而实际上请求和响应出现的字符也就是英文 , 数字 , 符号 。
请求Request
请求是浏览器发送给服务端的内容 , HTTP协议中一个请求由三部分构成:
分别是:请求行 , 消息头 , 消息正文 。消息正文部分可以没有 。
文章插图
请求部分
1:请求行
- 请求行是一行字符串 , 以连续的两个字符(回车符和换行符)作为结束这一行的标志 。
- 回车符:在ASC编码中2进制内容对应的整数是13.回车符通常用cr表示 。
- 换行符:在ASC编码中2进制内容对应的整数是10.换行符通常用lf表示 。
- 回车符和换行符实际上都是不可见字符 。
- 请求方式(SP)抽象路径(SP)协议版本(CRLF) 注:SP是空格
- GET /myweb/index.html HTTP/1.1
- GET / HTTP/1.1
- 协议://主机地址信息/抽象路径
- http://localhost:8088/TeduStore/index
- GET /TeduStore/index.html HTTP/1.1
消息头是浏览器可以给服务端发送的一些附加信息 , 有的用来说明浏览器自身内容 , 有的用来告知服务端交互细节 , 有的告知服务端消息正文详情等 。
- 消息头由若干行组成 , 每行结束也是以CRLF标志 。
- 每个消息头的格式为:消息头的名字(:SP)消息的值(CRLF)
- 消息头部分结束是以单独的(CRLF)标志 。
//例如:Host: localhost:8088(CRLF)Connection: keep-alive(CRLF)Upgrade-Insecure-Requests: 1(CRLF)User-Agent: Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36(CRLF)Sec-Fetch-User: ?1(CRLF)Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng;q=0.8,application/signed-exchange;v=b3;q=0.9(CRLF)Sec-Fetch-Site: none(CRLF)Sec-Fetch-Mode: navigate(CRLF)Accept-Encoding: gzip, deflate, br(CRLF)Accept-Language: zh-CN,zh;q=0.9(CRLF)(CRLF)
3:消息正文消息正文是2进制数据 , 通常是用户上传的信息 , 比如:在页面输入的注册信息 , 上传的附件等内容 。
GET /myweb/index.html HTTP/1.1Host: localhost:8088Connection: keep-aliveUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36Sec-Fetch-User: ?1Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng;q=0.8,application/signed-exchange;v=b3;q=0.9Sec-Fetch-Site: noneSec-Fetch-Mode: navigateAccept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.91010101101001.....
【Http超文本传输协议】HTTP响应Response响应是服务端发送给客户端的内容 。一个响应包含三部分:状态行 , 响应头 , 响应正文
1:状态行
状态行是一行字符串(CRLF结尾) , 并且状态行由三部分组成 , 格式为:
protocol(SP)statusCode(SP)statusReason(CRLF)
推荐阅读
- BurpSuite抓取HTTPS数据包
- HTML最基本知识
- 一分钟搞懂;如何通过nginx将网站访问改为https
- HTTP2.0的技术构架总结 与 Nginx和Tomcat配置HTTP2.0
- 什么是BBR
- ASP.NET Core和Https
- 帝国cms内容批量替换:http头,图片路径等
- 程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路
- SlowHTTPTest是什么
- HTTP慢速攻击是什么