• 从一个HTTP请求来研究网络分层原理


    1.HTTP请求过程


    从两台主机,往往是通过非常多的网络设备连到一起的,经过这么多的网络设备肯定会发生很多的问题吧,例如数据丢包数据重复等等等等,所以在网络的传输中是有非常多的问题需要解决的


    2.网络分层有两种结构:

    • OSI:开放系统互联参考模型
    • TCP/IP 协议族

    为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构

    3.一个HTTP请求的分层解析流程

    分析:

    1.首先我们在服务器部署了一个静态页面
    2.这时候我们需用通过公网来访问服务器,既然要访问服务器,浏览器就要通过你的域名来解析,看看浏览器里面有没有域名对应的DNS相关信息的缓存,如果有就能直接拿到服务端的IP地址,没有的话要去你本地host文件的配置,若你没有配置的话就会发起相应的DNS请求,用来获取你服务器的IP地址
    为什么要解析域名呢?

    • 因为客户端和服务端进行数据交互的时候是通过IP地址来

    3.这时候应用层会构造一个DNS的请求报文,然后应用层会去调用传输层的接口(DNS是使用UDP来实现数据的传输)

    • 大白话就是说:应用层会调用传输层的API,然后再DNS的请求报文基础上加上一个UDP的请求头

    4.然后传输层会把数据交给网络层,网络层一样会在UDP的请求报文上加一个IP的请求头
    5.这时候数据回到数据链路层,数据链路层会实现一个二层的寻址,数据链路层会把自己的MAC头加上,并且会把你的请求报文会交给下一个机器的MAC地址也加上(MAC也就是常说的机器码)

    6.再通过物理介质传出去,通常传到路由器上

    • 路由器是一个三层的设备只有网络层,数据链路层,还有物理层

    7.传到路由器要先通过物理层,然后再由物理层到数据链路层,数据链路层会看看MAC地址是不是给我的,如果是给我的那就解析,如果不是给我的那就丢弃
    8.然后数据会再网上进行传输到网络层,网络层会看一下把数据传到下一个路由器的地址是多少
    9.然后会把数据传到运营商的服务器上(运营商的服务器非常复杂)

    • 然后如果是运营商本地的会找到对应的IP地址(再由路由器到服务器)(原路返回的样子参考)
    • 如果是不同的运营商的话,运营商会用他们对应的专线进行连接

    10.然后到了对方服务器,然后也会一样,一层一层的解析,最后会到应用层解析你的HTTP的请求报文,解析完以后会去构造一个HTTP的响应报文,然后响应报文再原路返回到客户端

    • (数据链路层和网络层一般会解析IP地址)
    • (到传输层一般会解析TPC的端口)

    (个人理解,仅供参考)

    我正在黑暗中摸索前行,每一盏我点亮的路灯下都有我沾满泥垢的掌印,但光亮终会散满我所幻想的世界。
  • 相关阅读:
    IIS是如何处理ASP.NET请求的
    数据库访问性能优化
    通信交互总结
    数据库集群技术漫谈
    VS2010中出现无法嵌入互操作类型
    正则表达式-更新版
    IIS部署SSL证书后提示不可信的解决方案
    CSS水平居中和垂直居中解决方案
    jQuery get/post区别及contentType取值
    配置Tomcat使用https协议
  • 原文地址:https://www.cnblogs.com/progweb/p/14470059.html
Copyright © 2020-2023  润新知