输入url到网页响应中间发生了什么(计算机网络学习总结)

再网页中输入url后到页面显示内容,期间发生了什么

                                            ---较为系统性复习,综合理解计算机网络

1.解析地址

Url组成:  例如https://xiaolincoding.com/network/1_base

数据访问协议+域名地址,文件路径

2.生产http请求信息(应用层):

具体报文格式可以参考http报文格式

3.DNS查询真实地址(找到数据传输目的地)(应用层):

在http请求生成后,会通过DNS查询解析服务器ip地址

    1. 域名层级关系:

越往右层级越高,比如google.cn.com.

   

 

  • 域名解析的工作流程:
    1. 顶级域名再转发权威域名服务地址,查询对应ip地址,至此成功查询
    2. 根域名服务器会转发顶级域名服务器地址,比如.com/.edc。顶级域名
    3. 如果查询不到,则向根域名服务器发起请求,查询对应ip
    4. 首先向本地dns服务器(dns缓存),查询是否存在域名对应ip

下图为具体查询流程

4.传输数据包TCP/IP协议栈

      4.1浏览器调用Socket库委托协议栈进行工作,tcp/udp负责数据收发,ip负责数据包负责网络收发,此外ip 还包括 ARP(ip地址转MAC),ICMP协议(差错控制协议)

      4.2 TCP(传输层)

Tcp格式

    

      • 源端口号、目的端口号,用于确定目的主机进程位置
      • 序号、确认序号用于差错控制、丢包问题
      • 状态位:ACK回复、RST重新发送请求、SYN请求链接、FIN结束连接、URG:urgent缩写、PSH:push缩写,

其中tcp有两项重要功能 1、流量控制(滑动窗口) 2、 拥塞控制(拥塞控制算法),这两个都比重要,可以查看详细文档

HTTP传输前要先建立TCP三次握手(常考、面试经问,可以详细部分自行百度)

在三次握手期间,双方都进行了一收一发,保证双方都有发送和接收的能力

TCP 分割数据

在http请求,中数据长度超过mss时则会进行数据分包发送,

如果数据过长、会以mss位长度进行拆分,再进行tcp封装转发至下层

TCP 报文生成

建立连接后,确立好目的端口号(ip+端口才能确定进程),即可进行报文生成

5.Ip定位

在tcp协议保证传输质量,封装tcp头后转发给网络层,进行具体网络传输传输

IP 报文格式

  •  在 IP 协议里面需要有源地址 IP 和 目标地址 IP:

        源地址IP,即是客户端输出的 IP 地址;

        目标地址,即通过 DNS 域名解析得到的 Web 服务器 IP。

        假设客户端有多个网卡,就会有多个 IP 地址,那 IP 头部的源地址应该选择哪个 IP 呢?

   这个时候就需要根据路由表规则,来判断哪一个网卡作为源地址 ,使用的是网卡路由表不是路由器路由表!

路由表会将目的ip地址与子网掩码进行与运算,比如

第三条是默认网关,子网掩码是0000,直接与算必定得到,称之为默认网关,也就是路由器ip地址

6.两点传输 —— MAC

   在通过ip定位网络位置后,需要确定物理世界地址,所以在报文还要加上MAC头部

MAC 包头格式

      • 目标物理地址
      • 发送方物理地址
      • 协议类型: 0800(IP协议) 0806(ARP协议)

MAC 发送方和接收方如何确认?

发送方就是自己,很easy确定

接收方则需要通过ARP协议进行确定,先查询本地ARP缓存,如果不存在再进行路由表查询ip地址,然后进行广播ip地址,对应ip地址路由器接收后则回复对应mac地址

MAC 报文生成

7.出口 —— 网卡

数据包在此之前都是01数据,需要用网卡转化为电信号

8.交换机(物理层中继器)

总不能网卡传出去电信号就不管了吧,还要有设备保证其转发到对应设备(物理层面),

交换机的包接收操作

首先进行FCS差错检测,如果没问题则放入缓存区,再通过MAC地址表进行确定转发端口

所以,交换机根据 MAC 地址表查找 MAC 地址,然后将信号发送到相应的端口

当 MAC 地址表找不到指定的 MAC 地址会怎么样?

也很简单,直接广播出去,反正只有目的地址才会回复,收到后再记录进地址表中即可,在成千上万数据包网络中,偶尔多一两次是能接受的,这样做不会产生什么问题。

因为以太网的设计本来就是将包发送到整个网络的,然后只有相应的接收者才接收包,而其他设备则会忽略这个包

9.出境大门 —— 路由器

网络包经过交换机之后,现在到达了路由器,并在此被转发到下一个路由器或目标设备。路由器属于第三层网络设备,端口绑定了MAC、IP

交换机为第二层网络设备,端口只绑定了ip地址。

目前(2024年)现实层面,路由器和交换机功能已经合并,大部分路由器都具有交换机功能

路由器基本原理

首先路由器端口具有MAC地址,同时具有IP地址,在功能上等同于一张网卡,可以进行数据接收、发送,当转发查询目标时,会和自己的路由表做与运算,再从相应的端口转发出去

路由器的包接收操作

首先路由器会进行fcs差错效验,再比对是否是自己端口,是则存入缓存接收缓存区,否则直接丢弃

查询路由表确定输出端口

再接收完数据包后,去除MAC头部,MAC是用于定位目标物理地址,用完即丢。接着解析ip地址,根据ip地址与路由表进行转发操作

同理网卡转发 详情见tcp报文生成段问题一 多网卡源ip选定。记得还有0.0.0.0默认路由

路由器的发送操作

会出先两种情况

  1. 网关为ip地址,说明要转发为下一跳路由器
  2. 如果网关为空则说明头部ip地址为目标ip地址,已抵达终点

知道对方的 IP 地址之后,接下来需要通过 ARP 协议根据 IP 地址查询 MAC 地址,并将查询的结果作为接收方 MAC 地址。

路由器也有 ARP 缓存,因此首先会在 ARP 缓存中查询,如果找不到则发送 ARP 查询请求。

接下来是发送方 MAC 地址字段,这里填写输出端口的 MAC 地址。还有一个以太类型字段,填写 0800 (十六进制)表示 IP 协议。

网络包完成后,接下来会将其转换成电信号并通过端口发送出去。这一步的工作过程和计算机也是相同的。

发送出去的网络包会通过交换机达下一个路由器。由于接收方 MAC 地址就是下一个路由器的地址,所以交换机会根据这一地址将包传输到下一个路由器。

接下来,下一个路由器会将包转发给再下一个路由器,经过层层转发之后,网络包就到达了最终的目的地。

在网络包传输的过程中源 IP 和目标 IP 始终是不会变的,直变化的是 MAC 地址因为需要 MAC 地址在以太网内进行两个设备之间的包传输。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值