http请求

本文详细介绍了HTTP协议的工作原理,包括其简单灵活的特点、无状态和明文传输的特性,以及从客户端发起请求到服务器响应的全过程。讲解了HTTP请求的生成、TCP连接的建立、URI和URL的区别以及HTTP报文的结构。同时,阐述了HTTP请求的抓包内容,展示了URI编码机制,并列举了常见协议的默认端口。

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

  • web页面和后台的交互都使用BS架构:Browser/Server模式
  • web浏览器根据地址栏中制定的URL,从web服务器端获取文件资源等信息,从而显示出web页面。像这种通过发送请求获取浏览器资源的web浏览器等,都可称之为客户端
  • web使用http协议作为规范,完成从客户端到服务器等一系列运作流程

http协议

  • 简单灵活可扩展
  • 可靠传输(其实是tcp的可靠传输)
  • 无状态,明文传输
  • 处于应用层,使用请求-应答的通信模式

http请求的运转流程

  • 客户从客户端发起http请求,即我要浏览某个页面
    应用层
  • 生成HTTP请求报文
  • 通过dns解析域名,获取目标服务器地址
    传输层
  • tcp协议将报文分割成多段,并按序号传递给网络层。某段接收失败会进行重传,从而保证可靠性。(传递数据前会先进行三次握手,建立连接)
    网络层
  • ip协议增加作为通信目的的mac地址后传给链路层,从而在中转过程中搜索对方地址并传送
  • 接收端从链路层接收到数据,并依次经历网络层,传输层,应用层将请求传递给服务器。至此,发送请求完成;

注:发送数据时,每经过一层必定会打上该层的首部信息。接收数据时,每经过一层都会将该层的首部信息去掉

图片来自《图解HTTP》
在这里插入图片描述

一个完整的http请求过程

  1. 浏览器根据域名解析地址
  2. 客户端与服务端建立tcp连接
  3. 客户端(浏览器)发起http请求
  4. 服务器响应请求,并返回html到客户端(浏览器)
  5. 客户端解析html,并请求html中的资源(js,图片等)
  6. 关闭tcp连接,客户端(浏览器)将页面进行渲染,呈现给客户

在这里插入图片描述

  • 发起http请求后的抓包内容,这里没有4次挥手。是因为长连接特性,默认不会立即断开连接
    在这里插入图片描述

解析URI

URI–统一资源标识符,用字符串标识某一互联网资源
URL–统一资源定位符,表示资源的地址
可见,URL是URI的子集。在http中,URL就可以理解为URI

URI格式
在这里插入图片描述

URI的标准格式如上图所示

  • 协议方案名,必填字段。指定了协议
  • 登陆信息,选填
  • 服务器地址,必填。域名或IP地址都可以
  • 服务器端口,选填。省略就使用默认端口号
  • 带层次的文件路径,必填。指定服务器上的文件路径来定位特制的资源
  • 查询字符串,选填。参数
  • 片段标识符,选填。

为了解决特殊字符的问题,URI引入了编码机制。
转义原理:把字符(unicode)编码成utf-8,utf-8是用1-4个字节表示的,所以每个字节转换成16进制并在前面用百分号(%)连接,最后并把每个字节转换的结果连接起来。
常见字符(空格 %20;? %3F)

常见协议的默认端口

协议端口备注
ftp21文件传输协议
ssh,scp22
Pop3110它是因特网电子邮件的第一个离线协议标准
Smtp25简单邮件传输协议
http80超文本传输协议
https443即HTTP下加入SSL层,简单讲是HTTP的安全版
Telnet23远程登录
oracle1521
mysql3306
redis6379
mongo27017
sqlserver1433

http报文

http请求

http状态码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值