http 协议是属于应用层协议,以可靠连接TCP套接字的基础上设计的应用协议。http1.1默认是开启长连接的。
http request部分报文结构
http 协议规定,http request部分报文分三部分。第一部分是请求行,第二部分是请求头,第三部分是请求实体。
以下为通过wireshark抓包后,整理的http 一次request发送的数据信息
测试环境的http request包
淘宝某个js的http request包
http request中规定第一行为请求行,请求行中第一个单词为请求的方法。比如GET(请求服务端数据),post(更新数据到服务端),DELETE(删除服务端数据),PUT(新增数据到服务端) OPTION,TRACE等等。
第二个单词为请求的相对路径
第三个单词为http版本。目前有HTTP/1.1 HTTP/1.0 HTTP/0.9。目前几乎所有的浏览器和httpClient客户端都是HTTT/1.1。除非你的浏览器或者HttClient很老了(建议赶紧升级吧)。
最后以两个字节\r\n(13和10也就是回车+换行结束)做为请求行的标示结束。
注意http规定请求行中,第一个,第二个,第三个单词间必须要有一个空格
大家都知道,通过网络传输,传输的都是bit位(由Byte字节转换),服务端接受到http request部分后,读出来的数据也是Byte流。服务端是怎样截取Byte流的,比如什么时候header结束,http body开始。
通过两个连续的字节13和10(也就是\r\n)。表示http header结束,http body开始,可以查看上图
http header中通过两个字节13 10区分每个header。看上图每个http头部都是以\r\n结束。Header包含两部分,一个是headerName,一个是headerValue,headerName和headerValue间用一个“:”冒号和” ”一个空格分开,比如
http body的结束,是通过head中的Content-length指定的,以conten-length的大小,计算body的长度。(当然有些是以传输块指定的body,content-length无法指定,则会按相应的规则解析body中字节流,拿到每块的大小,然后再解析)
http response 部分报文结构
http response报文协议结构和http request报文协议结构几乎相同,第一部分为应答状态行,第二部分为应答头,第三部分为应答实体
以下为通过wireshare抓包后,一次http response返回结果,是上图,淘宝某js http request对应的response 部分。
http response报文规定第一行为响应状态行,第一个单词为http协议值,比如http/0.9 http/1.0 htpp/1.1 第二个单词为响应的状态码。比如 200表示服务端处理该请求成功,4XX开头是客户端发的http resquest有问题,5XX为服务端内部处理出错。3XX为页面转发
http response 头部字段和http response 实体部分也是通过两个连续的回车(13)换行(10)符进行分割的。
http response header之间和header内容中的结构和分割和http request header规则一样。
http response结束,也是通过http response header中的Content-length字段的值确认的(有时,服务端生成动态内容,body的大小无法计算,有时以header中的Transfer-Encoding为准,http协议规定有Transfer-Encoding,以Transfer-Encoding为准,没有Transfer-Encoding以Content-length为准)
相关推荐
Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
《ODI_11G初探-简单数据传输》这一文档深入探讨了Oracle Data Integrator (ODI) 11G版本在数据传输中的应用与配置过程,为初学者提供了全面而详细的指导。ODI是Oracle公司推出的一款企业级数据集成工具,用于实现...
Springboot初探---FreeMarker 之 HelloWorld,很好的资源
广播文化类线性节目”本土化”初探------以陕西交通广播”长安处处有故事”为例.zip
广播文化类线性节目”本土化”初探------以陕西交通广播”长安处处有故事”为例.doc
人事档案社会化管理初探--也谈人档分离-论文.zip
《基于GDI+》2D图形软件开发方法初探——2D几何画板是一种利用Microsoft Visual C# 2.0作为开发语言,并基于Microsoft .NET Framework 2.0平台构建的2D图形软件。该软件旨在研究GDI+技术在二维图形软件开发中的应用...
医院消防安全管理初探-安全管理-行业安全-消防安全.docx
c语言程序设计教材建设初探-程序设计-设计.pdf
90年代至新世纪我国谈话类节目 主广播文化类线性节目”本土化”初探------以陕西交通广播”长安处处有故事”为例持风格的演进-论文.zip
小程序在博物馆展览中的潜力初探--以故宫博物院端门数字馆导览小程序为例
基于大数据思维的银行监管数据应用初探--以3种数据挖掘技术为例.pdf
心理援助热线标准化管理流程建设初探--北京市心理援助热线电脑操作系统介绍.pdf
国内互联网保险初探-论文.zip
格灵深瞳-邓亚峰-云端结合的大规模视觉计算系统初探 - public
网络安全人才的多元主体协同育人初探--以中国网络空间安全人才教育联盟为例.pdf
基于微信雨课堂的混合式教学模式初探--以《单片机原理与应用》课程为例.pdf