HTTP协议

本文深入介绍了HTTP协议,包括其作为应用层协议的角色,客户端与服务器端交互过程,以及HTTP请求的组成部分,如请求行、请求头和请求体。此外,详细阐述了URL的结构及其可省略部分,以及HTTP响应的状态码和响应体。还涵盖了HTTP请求方法(GET、POST)以及常见的HTTP头字段,如Content-Type和Content-Length。通过对HTTP协议的全面解析,有助于理解网络通信的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP协议是应用层的协议,是超文本传输协议(以资源为单位)(文本型协议对人类便利,计算机不友好)

其是应用层协议,用户态的程序依赖传输层协议支持

版本分为:1.0 1.1(基于tcp) 2.0 3.0(基于udp)

HTTP协议客户端:浏览器 App应用等

HTTP协议服务器端:web服务器/HTTP服务器

客户端请求资源,服务器端响应资源

首先介绍HTTP协议请求:

HTTP要说明请求什么资源:①请求哪个资源②本次请求的操作③描述请求内容(请求元信息)

④可能携带的资源内容

这时我们就需要一个标准,用来唯一确定资源:URL

唯一资源描述符(URI) 唯一资源定位符(URL)

URL 是一种具体的URI,就是我们常见的网址

URL:描述网络中的所以资源,并且可以给予一个唯一的名称

图如下:

①协议方案名:URL不仅仅给HTTP协议设计,还有其他协议,所以要描述本次请求/获取资源使用哪个资源

② 服务器地址:主机信息(IP/域名)

③服务器端口号:进程信息(端口号port)

④带层次的文件路径:资源路径(描述具体资源)

⑤查询字符串:?....传递额外信息  (以?开头,形式key-value)

⑥片段标识符:通过#...给的片段,找出对应的片段(以#开头)

关于URL中可以省略的是:

①协议方案名,服务器地址可以省略:申请d.html时 其中有个a标签,a标签申请时,d.html用的什么协议,在什么主机,a标签也是一样,这是相对的。

②服务器端口号可以省略:端口是协议默认的端口

HTTP协议:8080     HTTPS协议:433      SSH协议:22        JDBC:Mysql协议 :3306

 ③查询字符串,片段标识符可以省略

带层次的文件路径不能省略:路径的名称可以删除(如:index.其他 这是可以删除的),其他的不能删除

资源路径分为相对路径(没有/开头的)和绝对路径(有/开头的)如:

<a href="/hello.html"></a>(绝对路径)      <a href="hello.html"></a>(相对路径)

HTTP请求:请求行+请求头们(请求的信息)+可以存在的请求体

格式如下:

请求行:请求方法(get/post)空格  请求资源(URL)(大部分情况是路径) 空格 THHP/1.1 \r\n

请求头们:请求头\r\n请请求头\r\n....求头\r\n请求头\r\n\r\n

请求头:Name:Value\r\n

可选请求体:HTTP协议不规定请求体格式 

HTTP响应:响应行+响应头们+可能存在的响应体

其他跟请求差不多,就响应行不同

响应行:版本信息+状态码+状态码描述(可以省略)

响应信息:成功/失败,响应本身元信息,资源内容

状态码(响应状态):1xx处理过程中  2xx成功  3xx重定向缓存   4xx 客户出错    5xx 服务器出错

特殊的状态码:202 成功    404 资源路径不对    405请求方式不对    500服务器内部出现问题 

请求/响应头里面有什么:

 Content-xxx:请求响应体的信息   

Content-length:描述请求响应体的长度

tcp是面向字节流的,要把每个请求响应头分割出来

分割方式:

①定长方式:按照一定长度分割

②变长方式:携带长度信息,通过特殊字符分割(遇到\r\n先把请求行分割出来,遇到\r\n\r\n把请求头分割出来,有可能有请求体就是在用Content-length定长分割)

Content-Type:请求响应体的格式:thml(text/thml) ,css(text/css) ,js(text/javascript或者application/javascript), 纯文本(text/plain),jpg图(imag/jpeg   imag/png  iamg/gif)application/json

JSON:javascript对象语法 (javascript对象的规则子集抽取的一部分)

与javascript不同的是:key必须双引号引起来,字符串必须双引号,值没有函数类型 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值