http协议详解

目前网络中实际使用的传输协议为tcp/ip网络协议,它分为四层:应用层、传输层、网络层和网络接口层;
应用层主要包括:http、ftp、SMTP等应用协议;传输层主要有tcp和udp协议,网络层主要有ip协议,icmp协议;
 
网络协议的传输过程中,数据包的封装过程为:
 
http数据包进入传输层,传输层会添加tcp包头,tcp包头包含了:源端口、目的端口、包序、包头长等信息;
如下图:
添加完tcp包头组成tcp数据包,进入网络层,网络层添加ip数据包包头,包头信息包含:版本号(ipv4还是ipv6)、包头长、总长度、上层协议类型(如TCP)、源ip地址、目的ip地址等信息,如下图:

添加完头部做成网络层数据包,进入数据链路层(网络接口层,即以太网),该层继续添加相应的包头,包头主要包括:源MAC地址、目的MAC地址以及上层协议类型(如上层协议为ipv4协议)等信息,这样整个数据包就组合完毕,通过物理介质进行传输;
 
在传输的过程中,每一层都有数据包的大小限制,如数据链路层数据包最小为64个字节,最大为1518个字节,头部固定为18个字节,则数据最大为1500个字节,最小为48个字节;
网络层中数据包的最大总长度为65535个字节,ip头部长度为20到60个字节,其中前20个字节固定,后40个字节为可选,因为数据链路层中数据包最大为1500个字节,所以会进行分包;
传输层中的数据包大小,UDP协议的总长度不能够超过65535个字节,TCP协议没有长度限制,但为了保证网络效率,TCP数据包的长度不会超过IP数据包的长度,以确保TCP不会再分割;
 
http协议数据包格式如下图:
http中GET请求:

http响应数据结构:


http数据包主要是请求(request)和应答(respose)方式,
请求方式分为八种:
POST、GET、PUT、DELETE、HEAD、TRACE、CONNECT、OPTIONS,其中比较常见的为:POST 和GET这两种请求方式,http数据包的格式已上图为例:

首先第一行为请求行:GET / HTTP/1.1    ,主要包含用户请求的数据地址信息和http版本信息;
Host:  www.xxx.com.cn //为域名
Accept: text/html //可以接受的数据格式,(*/*表示任意格式)
user-agent: //对应用户使用的操作系统终端类型等信息;
connection: keep-live //相应完后是否断开连接,在http 1.0之前都是短连接,每一次请求等待相应结束后都会断开连接,在http1.1中默认情况下是长连接,是在第一次请求应答完后保持当前连接,如果后面再次请求会直接使用该链接;

应答数据中:
第一行为:状态行,包括http版本及服务器返回来的状态码:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
如上图:200 ok表示客户端请求成功;
Content-type表示服务器响应传回来的数据类型,如text/html;
Content-encoding表示数据正文中编码(压缩方式);
Content-length表示数据实体正文的长度,有时候无法计算正文长度,所以无法写入content-length字段,而是transfor-encoding:chunked,这种情况主要出现在请求动态页面,动态页面的数据长度无法确定情况,目前出现比较多的是和Content-encoding:gzip这种方式一起的情况,因为gzip压缩后如果要计算他的长度,需要将其存到一个大的数组中然后计算其数据长度,但使用chunked编码,会直接将进行分块传输,即缓存区满后就传输给客户端,编码使用若干chunk块组成,由一个长度为0的chunk结束,每个chunk有两部分组成,第一部分是该chunk的长度和长度单位,第二部分为指定长度的内容,每个部分用CRLF隔开,最后一个长度为0的chunk中的内容成为footer内容;
Server表示使用什么服务器,如Apache或者微软的IIS;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP 协议(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是万维网数据传输的基础。它采用客户端-服务器模式,客户端发起请求,服务器返回响应。下面对 HTTP 协议进行详细解析。 HTTP 协议以简洁的请求-响应模型为基础。客户端发送请求报文给服务器,报文包含请求方法、URL、协议版本等信息。服务器收到请求后,根据请求内容进行相应处理,并返回响应报文给客户端。响应报文包含协议版本、状态码、响应头和响应体等信息。客户端接收到响应后,根据状态码判断请求是否成功,并解析响应内容。 HTTP 协议的特点主要包括:无状态、可靠性差、传输效率低。无状态指的是服务器不会保存任何客户端的状态信息,每次请求都是单独的。可靠性差是因为 HTTP 使用 TCP 进行数据传输,TCP 协议本身也有一定的不可靠性。传输效率低是由于 HTTP 建立连接的开销较大,并且每次请求都需要重新建立连接。 HTTP 协议的工作流程如下:客户端发送一条请求到服务器,服务器接收并解析请求,处理请求并生成响应,将响应发送给客户端,客户端接收并解析响应。 HTTP 协议的主要优点包括:易于使用、灵活性强、便于扩展。易于使用指的是 HTTP 的语法规则简单明了,易于理解和实现。灵活性强指的是可以通过设置请求头、传递参数等方式来定制请求。便于扩展指的是可以根据需要添加新的功能或特性。 总之,HTTP 协议作为互联网应用最常用的协议之一,它的设计简洁、易于使用,为用户提供了方便、快速的网络通信方式。同时,由于协议本身的一些限制,HTTP 协议的传输效率相对较低,因此在一些对效率要求较高的场景下,可能需要使用其他协议替代。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值