10.12 数据包的网络之旅

image0

当你在学习枯燥的网络基础知识的时候,一定有过这样的疑问吧?

1、数据包是如何从你的电脑上,到达远端的服务器上的?

3、OSI 七层到底是如何工作的?怎么把这么抽象的概念化为具体呢?

这些个问题,在我刚刚接触计算机网络的时候,也是困扰了我许久,今天呢,我就围绕【当你在浏览器上敲入网址时,在计算机网络的世界里,都发生了哪些事?】这个问题,把上面的那些问题一个一个地给你解决了。

1. 应用层:浏览器

浏览器作用在 OSI 模型里的第七层,它的主要工作就是将你的请求封装成 HTTP 报文然后交给它的下一层,也就是传输层。

通过之前的学习,我们知道了

  1. 传输层的 TCP 报文,需要浏览器进程的端口号(源端口)以及服务器端口号 (目标端口)。

  2. 网络层的 IP 报文,需要有本机的 ip 地址(源ip)以及服务器的ip地址(目标ip)。

这意味着,在浏览器调用 socket 模块发送 HTTP 报文前,需要提前准备好目标端口号和服务器的ip地址。

  • 目标端口:如果往地址栏输入 localhost:8080时,浏览器就知道你要请求的服务器端口是 8080 了,但是我们看到的更多是不带的,比如 htpps:/www.baidu.com,因为它们有默认端口号,http 协议的默认端口号是 80,而 https 的默认端口号是 443。

  • 目标ip:正常我们往浏览器的地址栏输入的都不会直接输入ip,而是域名,比如 https://www.baidu.com,浏览器发现你输入了个域名后,会先封装一个DNS 报文, 走的 UDP 协议,去 DNS 服务器获取 www.baidu.com 的 ip 地址。

有了目标端口和目标 ip 后,自然就能封装 TCP 报文了。

2. 传输层:TCP 协议

HTTP 是基于 TCP 进行可靠传输的。