当前位置:首页 > 实用技巧 >

http如何打开端口

来源:原点资讯(www.yd166.com)时间:2023-06-15 14:23:00作者:YD166手机阅读>>

浏览器端发起 HTTP 请求流程
  • 构建请求

浏览器构建请求报文信息,构建好后,浏览器准备发起网络

请求行

GET /index.html HTTP1.1

发送请求行,就是告诉服务器浏览器需要什么资源,最常用的请求方法是 Get。

请求体

如果使用 POST 方法,那么浏览器还要准备数据给服务器,这里准备的数据是通过请求体来发送。

请求头

请求行之后,浏览器器以请求头形式发送其他一些信息,把浏览器的一些基础信息告诉服务器。比如包含了浏览器所使用的操作系统、浏览器内核等信息,以及当前请求的域名信息、浏览器端的 Cookie 信息,等等。

  • 查找缓存

浏览器在发送请求之前先在浏览器缓存(是一种在本地保存资源副本,以供下次请求时直接使用的技术)中查询是否有要请求的文件。 当浏览器发现请求的资源已经在浏览器缓存中存有副本,它会拦截请求,返回该资源的副本,并直接结束请求,而不会再去源服务器重新下载。 好处如下:

缓解服务器端压力,提升性能(获取资源的耗时更短了);

对于网站来说,缓存是实现快速资源加载的重要组成部分。 如果查找缓存失败,则进入网络请求过程。

  • 准备IP和端口号

IP 需要用到DNS来查找对应的IP地址

端口号 HTTP 协议默认是 80 端口,HTTPS协议是443端口。

  • 等待TCP队列

不是说准备好了IP和端口号了就可以直接发送TCP连接的。 Chrome 有个机制,默认情况下同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待Pending状态,直至进行中的请求完成。

  • 发送HTTP请求

一旦建立了 TCP 连接,浏览器就可以和服务器进行通信了。而 HTTP 中的数据正是在这个通信过程中传输的。

浏览器是如何发送请求信息给服务器的过程如下

http如何打开端口,(1)

在浏览器发送请求行命令之后,还要以请求头形式发送其他一些信息,把浏览器的一些基础信息告诉服务器。比如包含了浏览器所使用的操作系统、浏览器内核等信息,以及当前请求的域名信息、浏览器端的 Cookie 信息,等等。

服务器端处理 HTTP 请求流程
  • 返回请求

你可以通过工具软件 curl 来查看返回请求数据curl -i https://time.geekbang.org/注意这里加上了-i是为了返回响应行、响应头和响应体的数据。

首先服务器会返回响应行,包括协议版本和状态码。但并不是所有的请求都可以被服务器处理的,那么一些无法处理或者处理出错的信息,怎么办呢?服务器会通过请求行的状态码来告诉浏览器它的处理结果

正如浏览器会随同请求发送请求头一样,服务器也会随同响应向浏览器发送响应头。响应头包含了服务器自身的一些信息,比如服务器生成返回数据的时间、返回的数据类型(JSON、HTML、流媒体等类型),以及服务器要在客户端保存的 Cookie 等信息。发送完响应头后,服务器就可以继续发送响应体的数据,通常,响应体就包含了 HTML 的实际内容。

  • 断开连接

通常情况下,一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接。不过如果浏览器或者服务器在其头信息中加入了:Connection:Keep-Alive 那么 TCP 连接在发送后将仍然保持打开状态,这样浏览器就可以继续通过同一个 TCP 连接发送请求。保持 TCP 连接可以省去下次请求时需要建立连接的时间,提升资源加载速度。比如,一个 Web 页面中内嵌的图片就都来自同一个 Web 站点,如果初始化了一个持久连接,你就可以复用该连接,以请求其他资源,而不需要重新再建立新的 TCP 连接。

  • 重定向

比如当你在浏览器中打开 geekbang.org 后,你会发现最终打开的页面地址是 https://www.geekbang.org。curl -I geekbang.org

从图中你可以看到,响应行返回的状态码是 301,状态 301 就是告诉浏览器,我需要重定向到另外一个网址,而需要重定向的网址正是包含在响应头的 Location 字段中,接下来,浏览器获取 Location 字段中的地址,并使用该地址重新导航,这就是一个完整重定向的执行流程。

Q: 为什么很多站点第二次打开速度会很快?

如果第二次页面打开很快,主要原因是第一次加载页面过程中,缓存了一些耗时的数据--DNS 缓存页面资源缓存 缓存处理过程如图所示

从上图的第一次请求可以看出,当服务器返回 HTTP 响应头给浏览器时,浏览器是通过响应头中的 Cache-Control 字段来设置是否缓存该资源。通常,我们还需要为这个资源设置一个缓存过期时长,而这个时长是通过 Cache-Control 中的 Max-age 参数来设置的,比如上图设置的缓存过期时间是 2000 秒。

Cache-Control:Max-age=2000

这也就意味着,在该缓存资源还未过期的情况下, 如果再次请求该资源,会直接返回缓存中的资源给浏览器。 但如果缓存过期了,浏览器则会继续发起网络请求,并且在 HTTP 请求头中带上:

If-None-Match:"4f80f-13c-3a1xb12a"

服务器收到请求头后,会根据 If-None-Match 的值来判断请求的资源是否有更新。

如果没有更新,就返回 304 状态码,相当于服务器告诉浏览器:“这个缓存可以继续使用,这次就不重复发送数据给你了。”如果资源有更新,服务器就直接返回最新资源给浏览器。

简要来说,很多网站第二次访问能够秒开,是因为这些网站把很多资源都缓存在了本地,浏览器缓存直接使用本地副本来回应请求,而不会产生真实的网络请求,从而节省了时间。同时,DNS 数据也被浏览器缓存了,这又省去了 DNS 查询环节。

栏目热文

http端口怎么设置(http端口一般设置为多少)

http端口怎么设置(http端口一般设置为多少)

虽然接触互联网的朋友经常使用代理服务器,但许多人可能还不知道端口,不同的代理使用不同的端口。有时,当我们设置代理时,无法...

2023-06-15 14:04:16查看全文 >>

怎么启动http服务(怎样运行http服务器)

怎么启动http服务(怎样运行http服务器)

有时候在局域网会有给别人分享文件的需求,这时候如果用微信、QQ之类的,还需要去打开软件,打包发送的操作,而如果你的电脑安...

2023-06-15 14:04:19查看全文 >>

http关闭还是打开好(http可以打开吗)

http关闭还是打开好(http可以打开吗)

Everything是个桌面平台的文件索引和搜索神器,在索引完成后输入文件名可以快速找到用户需要的各种文件等。这款非常知...

2023-06-15 13:47:49查看全文 >>

http服务开启命令

http服务开启命令

任意目录执行以下命令,即可开启一个HTTP服务,操作非常简单。python3 # python3 -m http.ser...

2023-06-15 14:16:37查看全文 >>

http端口怎么开启

http端口怎么开启

1. 怎么启动Web服务?Go语言标准库内置的net/http包,可以实现HTTP服务端。实现HTTP服务端就是能够启动...

2023-06-15 14:24:36查看全文 >>

怎么关闭http服务(http服务怎么启动)

怎么关闭http服务(http服务怎么启动)

一、前言go-SDK内提供了net模块,让我们可以方便的搭建http服务,我们知道服务一旦启动,调用协程阻塞就等待了,然...

2023-06-15 14:03:12查看全文 >>

关闭http服务很久关不上(服务器怎么开启http服务)

关闭http服务很久关不上(服务器怎么开启http服务)

之前漏洞扫描发现的问题,我使用的是apache服务器在配置中增加以下内容解决了这个漏洞。<Location ...

2023-06-15 14:13:48查看全文 >>

http服务怎么重启

http服务怎么重启

Florian von Bock[1] 已将本文中描述的内容实现成了一个名为Endless[2]的 Go 程序包。对于 ...

2023-06-15 14:26:06查看全文 >>

如何把http添加到受信任站点

如何把http添加到受信任站点

一、基本要求: 1.熟悉电脑基本操作; 2.具有互联网基础知识,会上网,熟悉IE浏览器的基本操作; 3.使用前,请把本...

2023-06-15 13:47:07查看全文 >>

绝地求生轻量版安卓手机怎么下(绝地求生轻量版最新版本下载手机)

绝地求生轻量版安卓手机怎么下(绝地求生轻量版最新版本下载手机)

绝地求生Mobile Lite在哪下载?绝地求生轻量版有什么特色呢?还不清楚的小伙伴看过来,这里52z飞翔网小编为大家...

2023-06-15 14:22:10查看全文 >>

文档排行