http协议介绍
http介绍
http和https
HTTP:Hyper Text Transfer Protocol即超文本传输协议
#HTTP是一个面向文本(text-oriented)的应用层协议,Web服务的核心应用层应用协议。所使用的服务端口是TCP的80端口(这就是HTTP服务的传输层地址),通信双方就是在这个端口上进行通信的每个Web服务器都有一个应用进程,时刻监听着80端口的用户访问请求。当有用户请求(以HTTP请求报文方式)到来时,它会尽快做出响应(以HTTP响应报文方式),返回用户访问的页面信息。当然,这一切都建立在传输层创建好对应的TCP连接基础之上。
HTTPS:http一般是明文传输,很容易被攻击者窃取重要信息,https在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS = HTTP + SSL。
超文本
超文本:包含有超链接(link)和各种多媒体语言(markup)的文本。
超文本主要体现在超链接多,超级多和多媒体语言多方面。
目前最常使用的是超文本标记语言(HTML)及富文本格式 (RTF)。
URL
URL:统一资源定位器
URL标识一个互联网资源,并指定对其进行操作或取得该资源的方法。这里所说的“资源”是指在互联网上可以访问的任何对象,包括文件目录、文件、文档、图片、图像、音/视频,甚至是电子邮件地址。
#URL的一般格式为:
<协议>://<主机名>:<端口>/<路径>
(1)协议 :指访问对象所使用的协议,包括HTTP、FTP、Gopher、Telnet、File、ssh、ws等。注意,在协议后须加上“://”。
(2)主机名:网站的域名。互联网的主机名通常是以www开始的(但不全是),后面必须跟着“:”(冒号),以指定访问对象建立通信连接时所用的传输层端口。
(3)端口
“端口”参数用来指定在建立连接时所用的传输层端口号。如果采用的是常规协议,端口号可以省略,直接使用默认的端口号,如HTTP的默认端口号为80,FTP的默认端口号为21,Telnet的默认端口号为23。即使是常规协议,所使用的端口号也可以更改,但一定要与Web服务器上设置的端口一致,否则访问不了。端口号后面跟的“/”代表服务器的根目录。
(4)路径
“路径”参数用来指定要访问的对象在Web服务器上的文件路径,与本地主机上的文件路径格式一样,以根目录(/)开始。如果要访问的是网站首页,则不用输入此部分,直接以前面的“/”符号访问服务器的根目录即可。
==================补充==================
ws:webSocket,WebSocket可以在浏览器里使用、支持双向通信,实时性强、使用很简单。
http 连接
短连接是每次http请求时都需要三次握手才能发送自己的请求.
长连接是短时间保持不断开,保持tcp连接。
http协议无连接 》》开启tcp长连接 “无连接”是指在进行Web应用前无须建立专门的HTTP应用层会话连接,仅需要直接利用传输层已为它建立好的TCP传输连接即可,而像Telnet、SMTP、POP3这类应用协议,是面向连接的,除了需要传输层的TCP连接外,它们自己还要建立会话连接。
#http协议无状态》》这里所说“无状态”是指同一客户第二次访问同一Web服务器上的同一页面时,服务器给客户端的响应与第一次是一样的(当然,这是假设Web服务器上的对应页面没有更新),Web服务器不会记住这个客户端曾经访问过这个页面,而做出任何其他响应。
原理
1)终端客户在Web浏览器地址栏输入访问地址URL
2)Web浏览器请求DNS服务器把URL中的域名转换成Web服务器的IP地址。
3)Web浏览器将端口号(默认是80)从访问地址(URL)中解析出来。
4)Web浏览器通过解析后的IP地址及端口号与Web服务器之间建立一条TCP连接。
5)建立TCP连接后,Web浏览器向Web服务器发送一条HTTP请求报文。
6)Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
7)Web服务器关闭HTTP连接,关闭TCP连接,Web浏览器显示访问的网站内容到屏幕上。
http报文
HTTP报文可分为两种,一种是从Web客户端发往Web服务器的HTTP报文,称为请求报文(Request Message)
另外一种是从Web服务器发往Web客户端的报文,称为响应报文(Response Message)
#请求报文格式
HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成。
(1)请求行是请求报文的第一行,用来说明客户端想要做什么。请求头包括请求方法字段、URL字段和HTTP协议版本字段组成,它们之间用空格分隔。
(2)请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
空行:通过发送回车符和换行符,通知Web服务器空行以下不会有请求头部的信息了。
(3)请求报文主体:请求报文主体中包括了要发送给Web服务器的数据信息。请求报文主体不会应用于HTTP的GET命令方法,而是应用于POST方法。POST方法适用于需要客户填写表单的场合。
#响应报文格式
HTTP响应报文由起始行、响应头部(header)、空行和响应报文主体这几个部分组成
(1)响应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号、数字状态码、状态情况。
HTTP/1.1 200 OK。
(2)响应头部和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者之间用冒号分隔。头部结尾也是以一个空行结束的。常见的头部信息有:
Content-Type: text/html;
charset=utf-8Content-Length:78……
(3)空行,最后一个响应头部信息之后是一个空行,通过发送回车符和换行符,通知客户端空行下文无头部信息了。
(4)响应报文主体中装载了要返回给客户端的数据。
#Generall概述
Request URL: https://www.igetget.com/ #请求URL
Request Method: GET #请求方法
Status Code: 200 OK #状态码
Remote Address: 203.107.55.63:443 #远程主机IP和端⼝
Referrer Policy: unsafe-url #控制请求头信息
#请求头
authority: www.baidu.com #请求的域名
method: GET #请求方法
path: /zenglaoshi/2039.html #请求的地址和文件
scheme: https #请求协议
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 # 请求媒体类型
Accept-Encoding: gzip, deflate, br #支持压缩
Accept-Language: zh-CN,zh;q=0.9 #语言类型
Cache-Control: max-age=0 # 缓存时间,禁止缓存
Connection: keep-alive #连接类型
Cookie: aliyungf_tc=2552dd1cf230873b5321266ca84d7c30e17e09b3339a8659f7f8aeaf7c4810bb; acw_tc=707c9f6216284973893356677e29aad587dfd8b555023af62e96fc9e8469da; ISID=131e5cfa5008d662e3af4b27fb1864e7; _sid=1fcl049tuk3ho56rrt365pmwwvbeltqh #登录信息
Host: www.igetget.com #主机名
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?0
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1 #升级
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 #客户端类型
# 空行
#响应头
Connection: keep-alive #连接方式
Content-Encoding: gzip #编码方式
Content-Type: text/html; charset=utf-8 #实体主体的媒体类型。
Date: Mon, 09 Aug 2021 08:23:38 GMT #时间
G-Client-Ip: 223.166.201.146
G-Powered-By: ddgw/1.12.15
G-Timestamp: 1628497418
Server: nginx/1.12.2 #使用的web服务
Transfer-Encoding: chunked
Vary: Accept-Encoding #渲染
==============cdn服务器参数================
x-cache: MISS TCP_MISS dirn:-2:-2 #CDN缓存是否命中
x-powered-by: PHP/7.1.21 #缓存版本号
x-swift-cachetime: 0 #缓存时间
x-swift-savetime: Sat, 03 Aug 2019 06:30:33 GMT #保存时间
请求方法
在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉Web服务器端需要执行哪些具体的动作,这些动作包括:获取指定Web页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文中包含的方法被称为HTTP请求方法。
请求方法 | 含义 |
---|---|
GET | 客户端请求指定资源信息,服务器返回指定资源 |
HEAD | 只请求响应报文中的HTTP首部 |
POST | 将客户端的数据提交到服务器,例:注册表单 |
PUT | 用从客户端向服务端传输的数据取代指定的文档内容(请求存储一个web 页面) |
DELETE | 请求服务器删除请求头标记的内容 |
MOVE | 请求服务器将指定的页面移至另一个网络地址 |
期中最常用的是POST和GET
POST和GET的区别
(1)GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),会直接展现在地址栏中。会直接展现在地址栏中,以?分割URL和传输数据,参数之间以&相连。
而POST方法则会把数据放到请求数据字段中以&分隔各个字段,请求行不包含数据参数,地址栏也不会额外附带参数。
(2)get方法提交数据的大小直接影响到了URL的长度,但HTTP协议规范中其实是没有对URL限制长度的,限制URL长度的是客户端或服务器的支持的不同所影响。
post方式HTTP协议规范中也没有限定,起限制作用的是服务器的处理程序的处理能力。
(3)POST比GET方式的安全性要高
通过GET提交数据,用户名和密码将明文出现在URL上。
登录页面有可能被浏览器缓存,其他人查看浏览器的历史纪录,那么别人就可 以拿到你的账号和密码了
当遇上跨站的攻击时,安全性的表现更差了。
状态码
状态码 | 含义 |
---|---|
200 | 成功响应 |
204 | 请求处理成功,但是无资源可以返回 |
206 | 对资源的一部分进行响应,有content-range指定范围的实体内容 |
301 | 永久性重定向,表示请求的资源已经重新分配URL,使用新的URL |
302 | 临时重定向,表示请求的资源已经重新分配URL,希望用户(本次)能使用新的URL访问 |
303 | 该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源 |
304 | 表示客户端发送附带条件的请求时,服务器允许请求访问资源,但是未满足条件的情况 |
307 | 内部重定向(跳转) |
400 | 表示请求报文中存在语法错误,需要修改报文。 |
401 | 表示请求需要通过http认证的认证信息。 |
403 | 表示请求资源的访问被服务器拒绝。 |
404 | 表示服务器上无法找到请求的资源。 |
500 | 表示服务器在执行请求时发生错误 |
503 | 表示服务器正在超负荷运作或者停机维护,现在无法处理请求 |
504 | 表示后端主机超时 |
CDN
CDN的全称是Content Delivery Network,即内容分发网络。
#CDN的基本工作过程
传统快递企业采用的配送模式,通过"商家→网点→分拨→分拨→网点→客户"的环节进行配送。这个过程会有一些问题,如环节多、时效慢、易破损等。
传统网站的请求响应过程,一般经历以下步骤:
1)用户在自己的浏览器中输入要访问的网站域名。
2)浏览器向本地DNS服务器请求对该域名的解析。
3)本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
4)本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以迭代方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
5)浏览器得到域名解析结果,就是该域名相应的服务设备的IP地址 。
6)浏览器获取IP地址之后,经过标准的TCP握手流程,建立TCP连接。
7)浏览器向服务器发起HTTP请求。
8)服务器将用户请求内容传送给浏览器。
9)经过标准的TCP挥手流程,断开TCP连接。
电商自建物流之后,配送模式有所变化:提前备货将异地件转化成同城件,省去干线环节提升时效,仓储高自动化分拣保证快速出库的同时也保证了分拣破损率较低。对于用户来说,购物过程并没有变化,唯一的感受就是物流好像是比以前快了。所以,
#引入CDN之后,用户访问网站一般经历以下步骤:
1)当用户点击网站页面上的内容URL,先经过本地DNS系统解析,如果本地DNS服务器没有相应域名的缓存,则本地DNS系统会将域名的解析权交给CNAME指向的CDN专用DNS服务器。
2)CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回给用户。
3)用户向CDN的全局负载均衡设备发起URL访问请求。
4)CDN全局负载均衡设备根据用户IP地址,以及用户请求的URL,选择一台用户所属区域的区域负载均衡设备,并将请求转发到此设备上。
5)基于以下这些条件的综合分析之后,区域负载均衡设备会选择一个最优的缓存服务器节点,并从缓存服务器节点处得到缓存服务器的IP地址,最终将得到的IP地址返回给全局负载均衡设备:
6)根据用户IP地址,判断哪一个边缘节点距用户最近;
7)根据用户所请求的URL中携带的内容名称,判断哪一个边缘节点上有用户所需内容;
8)查询各个边缘节点当前的负载情况,判断哪一个边缘节点尚有服务能力。
9)全局负载均衡设备把服务器的IP地址返回给用户。
10)用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。
网站流量度量术语
IP:独立IP数,不同IP地址的计算机访问网站时被计的总次数。一般一天内(00:00-24:00)相同IP地址的客户端访问网站页面只会被计为一次。
PV:访问量,即页面浏览量或单击量,不管客户端是不是相同,也不管IP是不是相同,用户只要访问网站页面就会被计算PV,一次计一个PV。
UV(独立访客)即同一个客户端(PC或移动端)访问网站被计为一个访客。一天(00:00-24:00)内相同的客户端访问同一个网站只计一次UV。
SOA松耦合架构
⾯向服务的架构(SOA)是⼀个组件模型,它将应⽤程序的不同功能单元(称为服务)进⾏拆分,并通过这些服务之间定义良好的接⼝和契约联系起来。接⼝是采⽤中⽴的⽅式进⾏定义的,它应该独⽴于实现服务的硬件平台、操作系统和程语⾔。这使得构建在各种各样的系统中的服务可以以⼀种统⼀和通⽤的⽅式进⾏交互。
例如京东网站,⽹站⻚⾯功能会有很多
注册、登录、⾸⻚、详情⻚、购物⻋、价格标签、留⾔、客服、⽀付中⼼、物流、仓储信息、订单相信、图⽚
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人