zoukankan      html  css  js  c++  java
  • 网络通信的整个流程

    网络通信的整个流程

    1、网络通信的支撑组件

    • 网卡

      电脑要想联网,首先要有一个网卡,网卡提供了网络的接口,网卡上有全球唯一标识码mac。

    • mac地址

      mac地址是出厂的时候就给定好的,一个设备的mac地址号码是全球唯一的。 head中包含的源和目标地址由来:ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址。

      mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

      查看mac地址的方法:windows下在cmd窗口输入ipconfig -all指令:下面显示的这个物理地址就是mac地址。

    • IP地址

      IP地址分为IPV4和IPV6,而我们一般用IPV4即可。IPV4是用4个点分十进制组成的,0.0.0.0-255.255.255.255,这就是我们的IP地址表示形式。

      一般情况下我们会把IP地址配制成自动获取的方式,由路由器和交换机自动给你分配一个局域网IP地址。

      也可以自行设定一个IP地址,但是需要注意配置成当前子网的信息。

    • 子网掩码

      子网掩码就是计算当前计算机是否属于xx网段或xx子网

    • 网关

      网关就是进行NAT转换,将局域网的地址转换成公网地址。

    • DNS

      DNS是进行域名解析的,所谓的域名解析就是将域名与关联的IP地址进行关联,在一定程度上缓解了IP地址不够用的情况

    • ARP协议

      通过IP地址获取对应的mac地址

      以广播的方式发送数据包,获取目标主机的mac地址

    2、网络通信的整个流程

    20190108173417126_18228.png

    流程描述

    • 第一步:打开浏览器,想要请求访问京东,在地址栏输入了网址:www.jd.com( www.jd.com是域名就是一个IP地址的名称,IP地址不好记,所有有了域名。)
    • 第二步:先将请求信息发给了交换机,然后交给了路由器,路由发给DNS服务器,通过DNS协议去找我们要访问的京东的IP地址:

    • 第三步:查到的京东服务器对应的IP地址之后,路由器通过路由协议找到一个路由转发的最优路径,将你的请求信息还送给这个IP地址的京东的路由器
    • 第四步:京东的路由器发给了京东网站的服务器上
    • 第五步:京东网站服务器按照来的时候的路径,在返回给你他自己的网站
    • 第六步:当你打开浏览器的时候,你的电脑给你的浏览器这个运行起来的程序给了一个编号,叫做端口号,当你的电脑收到京东发送过来的消息的时候,你的电脑通过端口号找到你的浏览器,你的浏览器拿到了京东的网站信息,然后将网站呈现在了自己的浏览器上

    3、DNS服务器

    当我们请求https:\www.jd.com的时候,首先电脑会在本地的DNS缓存中找是否有这个DNS缓存(DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。

    域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。 DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名。

    域名系统采用类似目录树的等级结构。域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。)本地的DNS缓存是在我们访问过一个网站之后,例如京东,那么本地会保存一个京东域名和京东服务器IP地址的映射关系,将来再次请求的时候,就不用再到外部的DNS上查询这个域名对应的IP地址了,提高了效率,如果是第一次请求,请看上面的DNS查询过程

    步骤

      本地查询顺序

        浏览器缓存: 浏览器会按照一定的频率缓存DNS记录。chrome://net-internals/#dns 查看chormeDNS缓存。

        操作系统缓存: 如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中找。cmd命令ipconfig /displaydns 用于查看操作系统dns缓存。

        路由缓存: 路由器也有DNS缓存。 找本机的hosts文件 Windows host文件路径: C:WINDOWSsystem32driversetchosts (由于直接修改之后不能保存,可以copy一份到桌面,修改之后,在替换掉原路径下的文件就可以了),hosts文件以静态映射的方式提供IP地址与主机名的对照表。

        ISP(网络服务提供商):如果还是没有,那么就去检查ISP有没有吧~,每一个ISP(网络服务提供商),或一个大学,甚至是一个大学里的系都会有一个自己的本地域名服务器,他会在url第一次访问时缓存该域名的指向。下次再访问时,他会从缓存里把这个url曾经指向的IP调出来。

      

        递归查询

          第一步:在hosts静态文件、DNS解析器缓存中查找某主机的IP地址

          第二步:上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找

          第三步:本地DNS服务器查不到就向ISP(ISP是互联网服务提供商(Internet Service Provider))的简称,ISP有专门的DNS服务器应对DNS查询请求。再找不到就根据‘根提示文件’向负责顶级域‘.com’的DNS服务器查询

          第四步:'根DNS服务器'根据查询域名中的'xyz.com',再向xyz.com的区域服务器查询

          第五步:www.xyz.abc.com的DNS服务器直接解析该域名,将查询到的ip再原路返回给请求查询的主机

        迭代查询:

          第一步:在hosts静态文件、DNS解析器缓存中查找某主机的IP地址

          第二步:上一步无法找到,在DNS本地服务器(即域服务器)查找所有本层次的区域服务器

          第三步:本地DNS服务器查不到就向ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。再找不到就查询上一层次的所有区域服务器,以此类推直至根域名DNS服务器‘.’

          第四步:到达根域名服务器后又向下查询,直至查到结果为止。

        迭代查询与递归查询结合

        递归查询需要经过逐层查询才能获得查询结果,当查询具有许多层次的DNS结构时效率很低,所以一般采用两者相结合的查询方式。

          第一步:在hosts静态文件、DNS解析器缓存中查找某主机的ip地址

          第二步:上一步无法找到,去DNS本地服务器(即域服务器)查找,其本质是去区域服务器、服务器缓存中查找

          第三步:本地DNS服务器查不到就向ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。再找不到就根据‘根提示文件’向负责顶级域‘.com’的根DNS服务器查询

          第四步:根DNS服务器直接将其区域DNS服务器的ip地址返回给本地服务器,而不用再向xyz.com的区域服务器查询。

          第五步:(京东有自己DNS服务器)本地DNS服务器将结果返回给请求的主机

    4、交换机、路由器和网关

    ​ 然后通过路由A转发将消息发出去,消息中包含目标路由D的网关的IP地址,网关分很多的类型:传输网关、应用网关、协议网关等等,我们经常说的网关是指的传输网关,简称网关,我们主要就看它,网关在路由器这里,当请求信息发送到了网关这里的时候,我们先到路由表里面看看有没有这个请求的目标地址的IP,如果没有说明不是我们自己网络内部的IP地址,需要路由转发出去,到internet网络中,但是网络这么大,怎么办,那么通过网关计算出一个最佳的传输路径去找到对应的目标网关地址,在路由转发的过程中(当请求被路由B接收到了之后,路由B打开之后发现不是找自己的,就会把请求信息包继续转发)然后传输到这个网关地址的路由器上,目标网关路由器上设置了一些IP地址+端口和各个服务器上的映射关系,即便是所有的交换机都接收到了这个请求,但是还是能够找到对应的服务器。在通过交换机发送到对应的服务器上

    ​ 那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为 “192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上, TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。

    ​ 京东的路由器干了什么呢:京东的路由器拿到请求消息之后,需要发给内网(局域网)中的对应的服务器上,这里在路由器上做了一个映射关系也就是说只要访问我这个192.168.3.0:443端口的请求,都去找京东的服务器A,就类似这么个映射关系,具体情况看到时候路由器交换机怎么设置

  • 相关阅读:
    F#+for+Scientists8OPTIMIZATI0N
    F#+for+Scientists9LIBRARIES
    F# 基础语法—关键字和结构[z]
    Matrix and linear algebra in F#, Part I: the F# Matrix type[z]
    Matrix and linear algebra in F#, Part IV: profile your program, find the bottleneck and speed it up: using matrix multiplication as an example[z]
    计算机程序的构造和解释 目录
    使用Jt2Go控件显示3D模型
    F#+for+Scientists3DATA STRUCTURES
    MATLAB 7的安装
    入境问俗,入门问禁
  • 原文地址:https://www.cnblogs.com/lcfzh/p/10241684.html
Copyright © 2011-2022 走看看