网络/Golang - “GET”请求剖析

我想这是之前有人问过并回答过的问题,但我不知道要搜索什么才能找到它。在我看来,这是作为计算机网络大学课程的一部分您会学到的东西 - 我从未上过的东西。如果有人能指出我的答案,那就太好了。

所以,问题是:

在许多语言中,例如 Go 和 JavaScript,通过 http/https 向 API 发出“GET”请求相对简单。但是,在相对较高级别的描述中,表面之下发生了什么?

我问是因为我需要更好地理解来掌握如何处理当事情不正常时我收到的各种错误。

对于我想要的那种答案的想法,我将参考 Golang 进行 http 调用的方法。在 Golang 中,您可以导入net/http包并进行调用http.Get("http://www.example.com")。但是您也可以指定一个“客户端”,您可以将其配置为具有特定自定义标头等内容。您可以在客户端内部指定一些更复杂的内容,例如使用的传输,以及更多我并不真正感兴趣的内容除非它解决了我的问题。

基本上,它归结为:Go 是完全并发的,在我的情况下是并行的。我每秒向一个 API 发出大约 300 个请求。golang 文档的建议是客户端可以安全地并发使用,所以应该只实例化一次 - 本质上,我有一个全局客户端,每个请求都通过它流动。

如果我收到一条错误消息,指出连接已被终止,这是否会影响一个请求或多个请求,我是否必须对客户端执行任何操作才能获得另一个连接?

另外,是每次连接一个请求,还是为每个请求建立一个新连接?请求之间的连接是否持久,是什么决定了它们何时消亡?

这个问题可能很啰嗦,可能没有意义。如果有人可以回答其中的任何部分,将不胜感激。


慕妹3242003
浏览 230回答 1
1回答

偶然的你

网络:dns->ip->tcp->http。DNS 将域解析为 ip 地址;tcp 添加端口(如 HTTP 默认 80)等;http 添加标头、表单数据等。最后,您的 ip 数据包中的 http 负载从您的网络适配器发送,并由 Internet 中的路由器进行良好处理,并将到达正确的 http 服务器。网/http:我们在 golang 文档中回答了您所有的传输层问题,主要是这个. 请仔细阅读。更新:一个连接错误只会影响一个请求。即使多个请求使用同一个tcp连接,因为请求-响应对是一一对应的,所以一个连接错误永远不会导致两个请求失败。
打开App,查看更多内容
随时随地看视频慕课网APP