http协议

本文详细介绍了HTTP协议的基础知识,包括其工作原理、通信流程、请求与响应消息结构等内容,并解释了常见的状态码含义。

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

HTTP协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

http简介

HTTP协议工作于客户端-服务端架构(C/S)上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

HTTP默认端口号为80,但是你也可以改为8080(代理服务器)或者其他端口。

HTTP通信流程:

HTTP消息结构

客户端请求消息(请求头)

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,如下图:

1、请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如:

GET /data/info.html HTTP/1.1

方法字段就是HTTP使用的请求方法,比如常见的GET/POST/HEAD。HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

URL统一资源定位符

其中HTTP协议版本有两种:HTTP1.0/HTTP1.1。

2、请求头部

大多数请求头并不是必需的,但Content-Length除外。对于POST(向服务器提交数据)请求来说Content-Length必须出现。

常见的有:

  • Host: 客户机通过这个头告诉服务器,想访问的主机名。Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
  • User-Agent:User-Agent头域的内容包含发出请求的用户信息。浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
  • Cookie:客户机通过这个头可以向服务器带数据,这是最重要的请求头信息之一。
  • 更多请求头字段参考HTTP请求/响应报文结构

3、空行

通过一个空行,告诉服务器请求头部到此为止,以下是请求数据。

4、请求数据

  • 若方法字段是GET,则此项为空,没有数据。
  • 若方法字段是POST,则通常来说此处放置的就是要提交的数据。表单数据包含在这部分。

服务器响应消息(响应头)

HTTP响应也由四个部分组成,分别是:响应行、响应头、空行和响应体。

1、响应行

响应行一般由协议版本、状态码及其描述组成 比如:

HTTP/1.1 200 OK

其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码(关于状态码见下文),OK则为它的描述。

2、响应头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。根据响应行的状态码,响应头会有不同的字段。例如,有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头,而401(Unauthorized)状态代码则必须伴随一个WWW-Authenticate头。

常见的响应头字段:

  • Allow:服务器支持哪些请求方法(如GET、POST等)
  • Date:当前的GMT时间
  • Server:服务器通过这个头告诉浏览器服务器的类型
  • 更多响应头字段请参考HTTP 响应头信息

3、空行

通过一个空行,告诉服务器请求头部到此为止,以下内容是响应体。

4、响应体

响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码。

通用头(General)、实体头

详见通用头、实体头

状态码

状态码分类

  • 1**:信息,服务器收到请求,需要请求者继续执行操作
  • 2**:成功,操作被成功接收并处理
  • 3**:重定向,需要进一步的操作以完成请求
  • 4**:客户端错误,请求包含语法错误或无法完成请求
  • 5**:服务器错误,服务器在处理请求的过程中发生了错误

常见状态码

  • 200 - 请求成功。
  • 301 - 资源(网页等)被永久转移到其它URL。
  • 304 - 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。
  • 400 - 客户端请求的语法错误,服务器无法理解。
  • 401 - 未授权。请求要求用户的身份认证。
  • 404 - 请求的资源(网页等)不存在。
  • 500 - 内部服务器错误。
  • 502 - 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。
  • 更多 - 参考HTTP状态码

区分GET/POST

1、提交数据的形式

  • GET请求的数据会附在URL之后,会直接展现在地址栏中。
  • POST方法则会把数据放到请求数据字段中以&分隔各个字段,请求行不包含数据参数,地址栏也不会额外附带参数

2、提交数据的安全

POST比GET方式的安全性要高

通过GET提交数据,用户名和密码将明文出现在URL上,如:

  • 登录页面有可能被浏览器缓存
  • 其他人查看浏览器的历史纪录
  • 跨站攻击
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 在 Linux 系统中,查找域名或主机名对应的 IP 地址是网络管理中的一项基础且关键任务,对于排查网络故障、调试网络问题以及监控网络服务是否正常运行等场景都非常重要。本文将介绍五种在 Linux 终端查询域名 IP 地址的方法。 首先,dig 命令(全称 Domain Information Groper)是一个功能强大的 DNS 查询工具,能够向 DNS 服务器发送查询请求并获取详细的响应信息。如果需要查询单个域名的 IP 地址,可以使用命令 dig 2daygeek.com +short 。此外,还可以通过编写 bash 脚本,将包含域名的文本文件中的域名逐个读取,然后利用 dig 命令进行查询,从而实现批量查询域名 IP 地址的功能。 其次,host 命令是一个简单易用的 DNS 查询工具,主要用于将域名解析为 IP 地址。要获取某个域名的 IP 地址,直接使用 host 2daygeek.com 即可。如果只想显示 IP 地址部分,可以通过管道结合 grep 和 sed 命令来实现,例如:host 2daygeek.com | grep "has address" | sed s/has address/-/g 。 再者,nslookup 命令也是一种常用的 DNS 查询工具,它支持交互式查询 DNS 信息。通过 nslookup 2daygeek.com 可以查询域名的 IP 地址。若要以非交互式的方式只显示 IP 地址,可以使用命令 nslookup 2daygeek.com | awk /^Address:/ {print $2} 。 另外,fping 命令与传统的 ping 命令不同,它不会直接进行 DNS 查询,而是通过发送 ICMP Echo Request(pi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值