余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

HTTP协议(简述http协议)

xiyangw 2022-11-24 16:43 71 浏览 0 评论

HTTP协议的介绍

  • HTTP协议就是超文本传输协议。
  • 超文本是超级文本的缩写,是指超越文本限制或者超链接,比如:图片、音乐、视频、超链接等等,都属于超文本。
  • HTTP协议的制作者是蒂姆·伯纳斯-李,1991年设计出来的,HTTP协议设计之前目的是传输网页数据,现在允许传输任意类型的数据。
  • 传输HTTP协议格式的数据是基于TCP传输协议的,发送数据之前需要先建立连接。

HTTP协议的作用

规定了浏览器和Web服务器通信数据的格式,也就是说浏览器和Web服务器通信需要使用http协议。

浏览器访问web服务器的通信过程

URL

URL表达的意思是统一资源定位符,通俗理解就是网络资源地址,也就是我们常说的网址。

URL的组成

https://news.163.com/18/1122/10/E131233H.html

URL的组成部分:

  1. 协议部分:https://、http://、ftp://
  2. 域名部分:news.163.com
  3. 资源路径部分:/18/1122/10/E131233H.html

域名:

域名就是IP地址的别名,它是用点进行分割使用英文字母和数字组成的名字,使用域名目的就是方便的记住某台主机IP地址。

URL的扩展:

https://news.163.com/hello.html?page=1&count=10

  • 查询参数部分:?page=1&count=10

参数说明:

  • ?后面的page表示第一个参数,后面的参数都使用&进行连接


HTTP请求报文

HTTP最常见的请求报文有两种:

  • GET方式的请求报文
  • POST方式的请求报文

说明:

  • GET:获取web服务器数据
  • POST:向web服务器提交数据

HTTP GET 请求分析

---请求行---
GET / HTTP/1.1 => 请求方式 请求的资源路径 http协议的版本

---请求头---
Host: www.baidu.com => 服务器的主机ip地址和端口号,如果看不到端口号,https默认是443
Connection: keep-alive => 和服务端程序保持长连接,当客户端和服务端有一段时间没有通信,那么服务端程序会主动向客户端断开连接
Accept: text/plain, */*; q=0.01 => 告诉服务端程序,可以接受的数据类型
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400 => 用户代理,客户端程序的名称,爬虫使用,可以根据是否有User-Agent进行反爬
Referer: https://www.baidu.com/?tn=98010089_dg&ch=14
Accept-Encoding: gzip, deflate, br => 告诉服务端程序支持的压缩算法
Accept-Language: zh-CN,zh;q=0.9 => 告诉服务端程序支持的语言
Cookie: BIDUPSID=2AD97C5F09037008B8B7479292AF46DD; PSTM=1587562369; BD_UPN=1a314753; sug=3; sugstore=0; ORIGIN=0; bdime=0; BAIDUID=2AD97C5F09037008B8B7479292AF46DD:SL=0:NR=10:FG=1; BDUSS=HpCOFp1RWlobThxanZ3Ym0zNWtoUUhzUENxRHZUUTNOWktoR3A3QmFhMzdXdFplRVFBQUFBJCQAAAAAAAAAAAEAAACeAR82uqOyvMDvtcS2rLy-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvNrl77za5eR; BDUSS_BFESS=HpCOFp1RWlobThxanZ3Ym0zNWtoUUhzUENxRHZUUTNOWktoR3A3QmFhMzdXdFplRVFBQUFBJCQAAAAAAAAAAAEAAACeAR82uqOyvMDvtcS2rLy-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvNrl77za5eR; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDRCVFR[S_ukKV6dOkf]=mk3SLVN4HKm; BD_HOME=1; delPer=0; BD_CK_SAM=1; PSINO=7; BDRCVFR[EaNsStaiD7m]=mk3SLVN4HKm; COOKIE_SESSION=515_6_9_9_11_17_0_0_9_7_0_4_86791_0_0_0_1601816163_1601569596_1601816640%7C9%235901_223_1601569591%7C9; H_PS_PSSID=32755_32617_1448_32735_7544_32706_32230_7517_7605 => Cookie客户端用户身份的标识

---空行---
\r\n

总结

  • 一个HTTP请求报文可以由请求行请求头空行请求体4个部分组成
  • 请求行是由三部分组成:请求方式、请求资源路径、HTTP协议版本
  • GET方式的请求报文没有请求体,只有请求行、请求头、空行组成
  • POST方式的请求报文可以有请求行、请求头、空行、请求体四部分组成,注意:POST方式可以允许没有请求体,但是这种格式很少见

HTTP响应报文

---响应行---
HTTP/1.1 200 OK => http协议版本 状态码 状态描述

Bdpagetype: 2
Bdqid: 0x97a8872b0007466a
Cache-Control: private
Connection: keep-alive => 和客户端保持长连接
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8 => 服务器发送给浏览器的内容类型及编码格式
Date: Mon, 05 Oct 2020 05:20:48 GMT => 服务器的时间,格林威治时间
Expires: Mon, 05 Oct 2020 05:20:47 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1 => 服务器的名称
Set-Cookie: BDRCVFR[EaNsStaiD7m]=aeXf-1x8UdYcs; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=515; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=32755_32617_1448_32735_7544_32706_32230_7517_7605; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1601875248028832205810928133114568328810
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked => 服务器发送给客户端程序(浏览器)的数据不确定数据长度,数据发送结束的接收标识:0\r\n,Content-Length:200(字节),服务端发送给客户端的数据确定长度。内容长度这两个选项只能二选一

HTTP状态码介绍

HTTP状态码是用于表示web服务器响应状态的3位数字代码

状态码

说明

200

请求成功

307

重定向

400

错误的请求,请求地址或者参数有误

404

请求资源在服务器不存在

500

服务器内部源代码出错

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: