访问一次网站的全过程

目录

流程图:

一、应用层开始

1. 在浏览器输入https://www.baidu.com

2. DNS获取IP地址

3. 根据HTTP协议生成HTTP请求报文

应用层结束

二、传输层开始

4. TCP三次握手

传输层结束

三、网络层开始

5. IP寻址

6. ARP协议获取MAC地址

网络层结束

四、数据链路层开始

7. MAC寻址

数据链路层结束

8. 物理层传输

9. 服务器接受请求

10. 服务端处理请求返回

11. 主机收到后回复tcp确认报文,经过几轮发送首页文件发送完毕12. 浏览器接受完毕后,发送tcp断开报文,与百度服务器进行四次断开


流程图:

一、应用层开始

1. 在浏览器输入https://www.baidu.com

浏览器接收url开启网络请求线程,URL主要包括以下部分:
protocol:协议头https/http
host:主机域名www.baidu.com
port:端口号(默认):443/80

2. DNS获取IP地址

  • 客户端发起获取IP地址请求,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。
  • 如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。
  • 查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS服务器还要向DNS根服务器进行查询。
  • DNS根服务器没有记录具体的域名和IP地址的对应关系,于是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。这种过程是迭代的过程。
  • 本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。
  • 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。如果url里不包含端口号,则会使用该协议的默认端口号。

3. 根据HTTP协议生成HTTP请求报文

HTTP报文一般包括了: 请求/响应行,请求/响应头部,空白行,请求体/响应数据。

应用层结束

在应用层将要发送的数据内容形成了应用层的报文data,发送到传输层。

二、传输层开始

4. TCP三次握手

握手过程:

  • 第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 Seq。此时客户端处于 SYN_Send状态。
  • 第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号Seq,同时会把客户端的 Seq + 1 作为 ACK Number 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD的状态
  • 第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 Seq + 1 作为回复 ACK Number的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised状态。
  • 服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。

传输层结束

这些数据通过传输层发送(tcp)。数据会被送到传输层处理,在这里报文打上了传输头的包头,主要包含端口号,以及tcp的各种制信息。然后把待发送的数据段发送到网络层。

三、网络层开始

5. IP寻址

网络层开始负责将这样的数据包在网络上传输,如何穿过路由器,最终到达目的地址。在这里,根据目标ip地址,就需要查找下一跳路由的地址。首先在本机,要查找本机的路由表。
查找过程是这样的:

  • 根据目的地址,得到目的网络号,如果处在同一个内网,则可以直接发送,一般不在同一网络范围。 如果不是,则查询路由表,找到一个路由。
  • 如果找不到明确的路由,此时在路由表中还会有默认网关,也可称为缺省网关,IP用缺省的网关地址将一个数据传送给下一个指定的路由器,所以网关也可能是路由器,也可能只是内网向特定路由器传输数据的网关。
  • 路由器收到数据后,它再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址。而数据包中包含一个最大路由跳数,如果超过这个跳数,就会丢弃数据包,这样可以防止无限传递。路由器收到数据包后,只会查看网络层的包裹数据,目的ip。
  • 如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或 “网络不可达”的错误信息。

注意:关于NAT转换,如果是在局域网中,每台电脑都有自己的私网IP,在对外传输的时候,会经过NAT转换,改成路由器的公网IP。

6. ARP协议获取MAC地址

ARP协议是将IP地址映射成MAC地址的,由于是IP协议使用了ARP协议,因此通常把ARP协议划归为网络层,但是ARP协议的用途是为了从网络层使用的IP地址解析出在数据链路层使用的MAC地址.
获取MAC地址过程:

  • 主机生成一个具有目的IP地址(默认网关)的ARP查询报文,将该ARP报文放置在一个具有广播目的地址(例如FF:FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器。
  • 网关路由器在接口上收到包含该ARP查询报文的帧,发现ARP报文中目的地址IP地址匹配接口的IP地址.网关路由器因此准备一个ARP回答,指示它的MAC地址对应报文中的IP地址,它将ARP回答放在一个以太网帧中,其目的地址是源MAC地址,并向交换机发送该帧,再由交换机将该帧交付给主机。
  • 主机接收包含ARP回答报文的帧,并从ARP回答报文中抽取网关路由器的MAC地址。将这个MAC地址将与IP包共同传输给下层。

网络层结束

在网络层被打包,这样封装上了网络层的包头,包头内部含有源及目的的ip地址,该层数据发送单位被称为packet。

四、数据链路层开始

7. MAC寻址

  • 首先通过广播获取足够的MAC地址表,交换机使用MAC地址通过指向相应端口的交换结构将网络通信转向目的节点。交换机为了知道要使用哪个端口来传送单播帧,它必须首先知道自己的每个端口上都存在哪些节点。
  • 交换机使用其 MAC 地址表来确定如何处理传入的数据帧。通过记录与其每一个端口相连的节点的 MAC 地址来构建其 MAC 地址表。当某个特定端口上的某个特定节点的 MAC 地址记录到地址表之后,交换机就可以知道在后续传输中,应将目的地为该特定节点的流量从与该节点对应的端口上发出。
  • 当交换机收到传入的数据帧,而地址表中没有该帧的目的MAC地址时,交换机将把该帧从除接收该帧的端口之外的所有端口转发出去。当目的节点响应时,交换机从响应帧的源地址字段中获得的该节点的MAC地址,并将其记录在地址表中。在多台交换机互连的网络中,连接其它交换机的端口MAC地址表中记录有多个MAC地址,用来代表远端节点。通常,用于互连两台交换机的交换机端口在MAC地址表中记录了多个MAC地址。

数据链路层结束

8. 物理层传输

数据转为二进制比特流进行物理链路的传输。

9. 服务器接受请求

服务端将数据包通过数据链路层->网络层->传输层一层层的解封,最后处理HTTP中的请求。

10. 服务端处理请求返回

服务器相应请求内容,把首页文件通过响应报文回复给主机。失败返回状态码(400)。

11. 主机收到后回复tcp确认报文,经过几轮发送首页文件发送完毕
12. 浏览器接受完毕后,发送tcp断开报文,与百度服务器进行四次断开

  • 42
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
综合网络访问外网通信的全过程可以分为以下几个步骤: 1. 用户发送请求:用户在本地设备上打开一个应用程序(如浏览器),输入要访问的网址或进行其他操作,触发请求发送。 2. DNS解析:本地设备将用户输入的网址发送给本地DNS服务器,以获取对应的IP地址。DNS服务器会查询域名解析器,将域名转换为对应的IP地址。 3. 建立连接:使用获取到的IP地址,本地设备与目标服务器之间建立TCP/IP连接。这个过程涉及到三次握手,确保双方的通信能够正常进行。 4. 发送请求:建立连接后,本地设备将用户的请求发送给目标服务器。请求可能包括HTTP协议中的各种信息,如请求方法、头部信息、请求体等。 5. 服务器处理请求:目标服务器接收到请求后,会根据请求的内容进行相应的处理。这可能涉及到访问数据库、执行程序、返回静态文件等操作。 6. 返回响应:服务器处理完请求后,会生成一个响应,包含HTTP状态码、头部信息和响应体等。响应体可能是请求的数据、HTML页面、文件等。 7. 接收响应:本地设备接收到服务器的响应后,会将其解析并展示给用户。如果是浏览器,它会解析HTML页面,并下载其中的资源(如图片、CSS、JavaScript文件)。 8. 断开连接:一次请求响应完成后,本地设备与服务器之间的连接会被关闭。这个过程涉及到四次挥手,确保双方都已经完成通信。 以上就是综合网络访问外网通信的全过程。在每个步骤中,都可能涉及到网络协议、路由器、交换机等网络设备的参与,以保证数据的可靠传输和正常交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smiling Mr. Rui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值