• 计算机网络基础概要


    本文比较长,有些没有详细介绍的将会拆分出来在新的博客中。

    网络层次划分

    OSI参考模型:

     

    除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:

     

    OSI七层网络模型

    •  物理层关注一条通信信道上传输原始比特,设计问题主要是硬件方面。该层为上层协议提供了一个传输数据的可靠的物理媒体。

    物理层重要设备中继器(放大器)和集线器。

    •  数据链路层:将一个原始的传输信息转变为一个没有漏检传输错误的线路。发送方将数据拆分成数据帧,顺序地发送给接收方,待接收方确认该服务真实后,返回确认帧给发送方。

    数据链路层重点:

    1为网络层提供可靠的数据传输;

    2基本数据单位帧;

    3主要协议:以太网协议;

    4重要设备:网桥和交换机。

    •  网络层控制子网地运行,解决如何将数据包从源端路由到接收方。

    网络层中涉及众多的协议,最重要的协议是TCP/IP,核心协议——IP协议。

    IP协议仅仅提供不可靠、无连接的传送服务。

    IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。

    网络层的重点:

    1、负责对子网间的数据包进行路由选择。实现拥塞控制、网际互连等功能;

    2、基本数据单位:IP数据报;

    3、包含的主要协议:

       IP协议(Internet Protocol,因特网互联协议);

       ICMP协议(Internet Control Message Protocol,因特网控制报文协议);

       ARP协议(Address Resolution Protocol,地址解析协议);

       RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。

    4、重要设备:路由器。

    •  传输层接收来自上层数据,分割更小的单元传递给网络层,是从端到端的层,指原机器的一个程序利用报文头和控制信息与目标机器进行会话。(1~3层是链式链接,3~7层是端到端连接)

    网络层重点:

    1、负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;

    2、主要协议:

    TCP协议(Transmission Control Protocol,传输控制协议)、

    UDP协议(User Datagram Protocol,用户数据报协议);

    3、重要设备:网关。

    • 会话层允许不同机器建立对话,提供各种服务包括:对话控制,令牌管理,同步功能。
    •  表示层关注传递信息的语法和语意,转换数据数据的加密、压缩、格式转换等。
    •  应用层为操作系统或网络应用程序提供访问网络服务的接口。

    会话层、表示层和应用层重点:

    1、数据传输基本单位报文;

    2、主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

    IP

    1)网络地址

    IP地址 = 网络号(包括子网号)+ 主机号组成

    规定首字节不能是1270255,主机各位不能同时为01主机号全0表示网络号,主机号全1表示广播地址

     

    A类地址:0开头。  网络号第一个字节。 范围:1.0.0.0 ~ 127.255.255.255

    B类地址:10开头。 网络号前两个字节。 范围:128.0.0.0 ~ 191.255.255.255

    C类地址:110开头网络号个字节。 范围:192.0.0.0 ~ 223.255.255.255

    D类地址:1110开头范围:224.0.0.0 ~ 239.255.255.255

    E类地址:1111开头范围:240.0.0.0 ~ 255.255.255.255。E类地址为保留地址,供以后使用。

    只有A,B,C有网络号和主机号之分,D类地址和E类地址没有划分网络号和主机号。

    2)广播地址

      广播地址(直接广播地址),区分受限广播地址。

      主机号为全1。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息。

    3)组播地址

      D类地址作为组播地址一对多的通信;

      

    4255.255.255.255

    IP地址是受限广播地址只能用于本地网络,路由器不会转发以受限广播地址为目的地址的分组;广播地址(直接广播地址)能够通过某些路由器(不是所有的路由器),而受限的广播地址不能通过路由器。

    50.0.0.0

    常用于寻找自己的IP地址,例如在我们的RARPBOOTPDHCP协议中,若某个未知IP地址的无盘机想要知道自己的IP地址,它就以255.255.255.255为目的地址,向本地范围的服务器发送IP请求分组。

    6)回环地址

    127.0.0.0/8被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是127.0.0.1

    7AB类私有地址

      私有地址(private address),私有路由不能对外直接提供信息

    IPv4 规划时担心 IP 有不足的情况,而且为了应付某些企业内部的网络设定,于是有了私有 IP (Private IP) 。私有 IP 分别在 A, B, C 三个 Class 当中各保留一段作为私有 IP 网段:

    Class A10.0.0.0  - 10.255.255.255

    Class B172.16.0.0 - 172.31.255.255

    Class C192.168.0.0 - 192.168.255.255

    地址解析协议——ARP/RARP协议

    • 地址解析协议,ARPAddress Resolution Protocol)是根据IP地址获取物理地址的一个TCP/IP协议。(主机必须知道目的网络适配器的物理地址才能向它发送数据)

    网段上每台主机保存ARP表或ARP缓存的表格,其中包含了网段上其他主机的IP地址与物理地址的对应关系。

    ARP协议工作流程:

    1、当主机向网段上的其他主机发送数据时,先查看ARP缓存上物理地址。ARP缓存是动态变化的

    2、不在ARP缓存中,主机发送一个名为ARP请求帧的广播。ARP请求帧包含为解析的IP地址,还包含发送这个请求的主机的IP地址和物理地址。

    3、网段上的其他主机收到请求,拥有这个未解析IP地址的主机向发出请求的主机发送自己的物理地址。这个新的IP地址与物理地址的对应关系就会添加到请求主机的ARP缓存中。

    •  逆地址解析协议,RARP在知道物理地址而不知道IP地址时,使用RARP

    RARP协议工作流程:

    1、给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;

    2、本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址

     

    子网划分和CIDR

       IPv4的网络号占位太多,而主机号位太少,主机地址稀缺。为了有效地利用IP地址,通过对主机号的高位部分取作为子网号,从通常的网络位界限中扩展或压缩子网掩码,用来创建某类地址的更多子网。(创建更多子网时,每个子网上可用主机地址数目减少)

    什么是子网?

    子网划分可以利用IP地址系统把物理网络分解为更小的逻辑实体——子网。

    子网的概念最早源自于地址分类系统,而且在ABC类地址中能够得到很好的展现。然而硬件厂商和internet社区建立了一种解析地址的新系统,名为无类别域间路由(CIDR),它不需要关心地址类别。

    子网最显著的特征具有子网掩码。划分子网时需要注意:主机ID为全0时表示网络ID,全1时表示广播地址。

    什么是子网掩码?

    子网掩码:标志两个IP地址是否同属于一个子网,是32位二进制地址。1代表该位是网络位,0代表主机位。它和IP地址一样也是使用点式十进制来表示。

    如果两个IP地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。

    子网掩码不能单独存在,必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

    A类默认子网掩码 255.0.0.0     一个子网最多可以容纳1677万多台电脑 
    B类默认子网掩码 255.255.0.0    一个子网最多可以容纳6万台电脑 
    C类默认子网掩码 255.255.255.0   一个子网最多可以容纳254台电脑 

    一、通过子网掩码计算子网个数及每个子网中可使用的主机地址个数:

    • 255.255.255.0 子网掩码最多容纳多少台电脑? 

    1、转换成二进制:11111111.11111111.11111111.00000000,后面有8个0

    22^8 -- 2 = 254,(有两个IP不能用,最后一段不能为0255

    若要把***.***.***.0/m划分为***.***.***.0/nm<n<32),得到的子网个数为2^(n-m),去掉全0和全1,可用子网个数为2^(n-m) -- 2,每个子网中可使用的主机地址是2^(32-n) -- 2

    把网络117.15.32.0/23划分为117.15.32.0/27,得到的子网是 16 个,可用子网个数为14个,每个子网中可使用的主机地址是 30 个。

    二、通过子网个数或主机地址个数计算子网掩码:

    1根据主机数计算子网掩码

    • B类地址168.195.0.0划分若干个子网,每个子网内主机700台,计算其子网掩码:

    1将主机数目转化为二进制来表示:700 = 1010111100

    2如果主机数小于或等于254(N<8)(注意去掉保留的两个IP地址),取该主机的二进制位数N 。如果大于254N>8说明主机地址占据不止8该二进制为十位数,N=10

    3使用255.255.255.255将该类IP地址的主机地址位数全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。

    子网掩码一共由32位组成,确定后面10位是0,那前面的22位就是1,最合适的子网掩码:11111111.11111111.11111100.00000000,转换成10进制:255.255.252.0 

    2)根据子网数计算子网掩码:

    •  欲将BIP地址168.195.0.0划分为27个子网,计算其子网掩码:

    127-1=26,转化为二进制11010--1因为计算机从0开始,到26才是27个)

    2、该二进制的位数:N=5B类地址的子网掩码255.255.0.0,将其主机地址前5位置1,即11111111.11111111.11111000.00000000=255.255.248.0。  

    注:将主机地址前5位置1,划分出2^5 -- 2=30个子网。(去掉全0和全1的子网)

    IP地址的网段

    • 例如: IP:192.168.0.1,子网掩码:255.255.255.0,求其网络标识与主机标识?

    把IP的每一段转换为一个二进制数,192.168.0.1 = 11000000.10101000.00000000.00000001 

    IP    11000000.10101000.00000000.00000001 
    子网掩码  11111111.11111111.11111111.00000000 

     

    要想在同一网段,必需做到网络标识相同各类IP的网络标识算法A类只算第一段。B类只算第一、二段。C类算第一、二、三段。 

    IP 地址和子网掩码进行逻辑与运算
    如:192.168.0.1  255.255.255.0,先转换为二进制

      IP      11000000.10101000.00000000.00000001 
      子网掩码    11111111.11111111.11111111.00000000 
      逻辑与结果     11000000.10101000.00000000.00000000 

    转换为十进制192.168.0.0,这就是网络标识

     
    再将子网掩码取反:00000000.00000000.00000000.11111111,与IP逻辑与运算

    得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1 
    0.0.0.1就是主机标识

    • B类IP 188.188.0.111188.188.5.222子网掩码都为255.255.254.0,在同一网段吗? 

    先转换成二进制 
      188.188.0.111  =  10111100.10111100.00000000.01101111 
      188.188.5.222  =  10111100.10111100.00000101.11011010 
      255.255.254.0 =  11111111.11111111.11111110.00000000 (子网掩码
    分别 IP 地址和子网掩码进行逻辑与运算,得 
      10111100.10111100.00000000.00000000 
      10111100.10111100.00000100.00000000 
    B类IP ,判断第一二段,网络标识一样,在同一网段。 

    TCP/IP协议

           TCP/IP协议族,简称TCP/IP。该协议家族的两个核心协议:TCP传输控制协议)和IP网际协议TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。IP给因特网的每台联网设备规定一个地址。

    由于篇幅很长,我将它写在另一篇博客: TCP/IP协议族

     

    DNS及域名解析流程

      DNSDomain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

    详细参考维基百科:https://zh.wikipedia.org/wiki/域名系统

     

    DNS域名查找流程

    当用户在浏览器中输入域名,如:www.google.com,并按下回车后,DNS解析过程大体如下:

     

    注:下面标题对应着序号

    1浏览器缓存检查(本机)

        浏览器会首先搜索浏览器自身的DNS缓存(域名被缓存的时间可以通过TTL属性来设置,一般是1分钟,且只能容纳1000条缓存),如果自身的缓存中有www.google.com对应的条目,而且没有过期,则解析到此结束

    2操作系统缓存检查(本机)+hosts解析(本机)

       如果浏览器自身缓存里没有对应条目,浏览器搜索操作系统自身的DNS缓存中是否有这个域名对应的DNS解析结果,如果找到且没有过期则停止搜索解析到此结束

       在Linux中可以通过/etc/hosts文件来设置域名解析的IP地址。浏览器会首先使用这个IP地址。当解析到个域名时,操作系统会在自身的DNS缓存中缓存这个结果

    3本地区域名服务器解析(LDNS

        如果在hosts文件中没有找到对应的条目,浏览器会发起一个DNS的系统调用,向本地配置的首选DNS服务器LDNS一般是电信运营商提供)发起域名解析请求通过UDP协议向DNS53端口发起递归请求,运营商的DNS服务器必须提供我们该域名的IP地址。

        大约80%的域名解析都到这里就已经完成了,所以LDNS主要承担了域名的解析工作。运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。

    4、请求根域名服务器(Root Server 

       如果LDNS没有找到对应的条目,运营商的DNS发起一系列迭代DNS解析请求首先向根域名服务器根域名 内置13个根域DNSIP地址发起请求

    5、根域名服务器LDNS服务器返回所查询的主域名服务器地址

       主域名服务器(gTLD),是国际顶级域名服务器(包含.com.cn.org),全球只有13台。根域发现这是一个顶级域com域的一个域名,于是就告诉运营商的DNS我不知道这个域名的IP地址,但是我知道com域的IP地址,你去找它去。

    6本地域名服务器向主域名服务器发送请求

       于是运营商的DNS就得到了com域的IP地址,又向com域的IP地址发起了请求(请问www.google.com这个域名的IP地址是多少?),com域这台服务器告诉运营商的DNS我不知道www.google.com这个域名的IP地址,但是我知道google.com这个域的DNS地址,你去找它去。

    7、gTLD服务器返回此域名对应的管理方域名服务器Name Server的地址

         Name Server是你注册的域名服务器,你在某个域名服务提供商申请域名,那么这个域名解析任务就由这个域名提供商完成。

    8、Name Server域名服务器会查询存储的域名和IP的映射关系表

       正常情况下都根据域名得到目标IP记录,连同一个TTL值返回给DNS Server域名服务器。

       于是本地区域名服务器的DNS又向google.com这个域名的DNS地址发起请求(请问www.google.com这个域名的IP地址是多少?)这个时候google.com域的DNS服务器一查,果真在我这里

    9、返回该域名对应的IPTTL

         Local DNS Server会缓存这个域名和IP的对应关系,缓存的时间由TTL值控制。

         然后把找到的结果发送给运营商的DNS服务器

    10、把解析的结果返回给用户

      这个时候运营商的DNS服务器就拿到了www.google.com这个域名对应的IP地址。

      用户根据TTL值缓存在本地系统缓存中,域名解析过程结束

    HTTP协议

    超文本传输协议(英文HyperText Transfer Protocol缩写HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议HTTP万维网的数据通信的基础。

    1、Get是从服务器上获取数据,Post是向服务器发送数据。

    2、Get传送的数据量小,不能大于2KBPost传送的数据量较大,一般被默认为不受限制。注:get本身是没有限制大小的,由于get的参数都是拼接在url上,因为浏览器的限制,才限制在2KB

    3、根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

    • . 安全:指该操作用于获取信息而非修改信息。GET请求一般不应产生副作用,它仅仅是获取资源信息,像数据库查询,不修改或增加数据,不影响资源的状态。
    •   幂等:对同一URL的多个请求应该返回同样的结果。

    关于http协议,写起来又是一长篇巨著,待我日后有空补充。

  • 相关阅读:
    BAT 批处理 for循环 迟环境变量 [MD]
    adb 环境配置 常用命令 [MD]
    XML 解析 DOM SAX PULL 序列化 总结 [MD]
    instanceof 和 isInstance 强转 类型 class [MD]
    Charles 简介 总结 HTTP 抓包 代理 [MD]
    Permission 运行时权限 总结 翻译 [MD]
    反编译 AndroidKiller 逆向 字节码 实践案例 [MD]
    Gradle 翻译 Analyzer APK文件分析 [MD]
    Java 中 boolean 类型占用多少个字节 [MD]
    Shell 命令行工具 Cmder Babun Zsh [MD]
  • 原文地址:https://www.cnblogs.com/LIUYANZUO/p/7340015.html
Copyright © 2020-2023  润新知