访问baidu时系统做了什么

访问baidu时系统做了什么,第1张

文章目录
  • 过程
    • 详细过程
    • 数据链路层、网络层、传输层与MAC、IP、端口的关系

过程 详细过程
  • baidu.com是一个域名,要完成域名解析,将百度的域名翻译成IP,由Windows上的DNS客户端访问DNS服务器实现的

  • DNS服务器设置在Windows的网络配置里,linux下/etc/resolv.conf。


    DNS服务器IP地址配置成114.114.114.114;

  • 客户端就要发送一个应用层数据报文:baidu.com的IP地址是多少?

  • 到了传输层,传输层加上TCP的头20个字节,其中有两个关键元素:源端口(系统随机分配,假设为7777)和目的端口(53)

  • 到了网络层,加上IP头20字节,两个关键元素:源IP和目的IP(114.114.114.114)

  • *** 作系统会看到源IP和目的IP不在一个网络内,这是数据包就要给默认网关,默认网关就是路由器的LAN口IP地址

  • 接下来数据到网络接口层,把网络接口层分为两层来看,数据链路层和物理层;

    • 数据链路层要加上帧头,枕头里有两个元素:源MAC地址和目的MAC地址(网关的MAC地址)
  • 不知道路由器的MAC地址?PC会发一个ARP的广播报文,“192.168.2.1,你的MAC地址是多少?”

  • 这时局域网内所有的主机都会收到报文,但只有192.168.2.1这台主机会回复:xxx,我的MAC地址是
    XX:YY:ZZ:MM:NN:00

  • 接下来用源MAC和目的MAC封装报文,通过物理层网卡以广播的形式发送出去

  • 局域网内的所有主机都会收到这个报文,并检查目的的MAC地址是不是我自己,如果不是丢掉,否则继续解析

  • 这时路由器收到数据包,发现是给自己的,就往上层网络层传输

  • 网络层收到数据包后,检查源IP和目的IP,把私有IP转成公网IP,并把源端口也改掉,并记录相应的修改记录到NAT表中

  • 这时从WAN口中发出的数据报文都是公网IP了,经过Internet的路由器又转发到
    114.114.114.114主机

  • 114.114.114.114DNS服务器主机查询自己的数据库,获取baidu.com的IP地址
    然后封装数据报文“baidu.com的IP是xx.yy.zz.mm”

  • 到传输层,将源端口和目的端口互换,到网络层将源IP和目的IP互换,再经过Internet上的路由器转发到家里的路由器上

  • 路由器查询NAT表,将公网IP和目的端口修改为记录里的私有IP和端口

  • 路由器在LAN口上将数据报文广播发送出去

  • PC查询MAC地址是自己,然后剥去数据链路层的帧头,给网络层

  • 网络层查看IP地址,如果是自己就剥去IP头给传输层

  • 传输层解析出端口,再给DNS客户端,这时DNS客户端就知道baidu.com的IP是xx.yy.zz.mm

数据链路层、网络层、传输层与MAC、IP、端口的关系
  • 数据链路层:MAC;局域网在数据链路层进行通讯,使用MAC地址通讯
  • 网络层:IP;路由器到Internet靠IP
  • 传输层:端口;Internet到服务器APP靠端口

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存