zoukankan      html  css  js  c++  java
  • 计算机网络自学之路------IP协议(1)


    1)TCP/IP模型与OSI对应

    2)TCP/IP集每层主要协议

    3)IP协议

    4)IP地址的命名与使用

    5)子网与子网掩码


    1)TCP/IP模型与OSI对应关系

     

    我们看到,TCP/IP只有四层与OSI的七层相对应。

    网络接口层:数据包从一个设备的网络层传输到另外一个设备的网络层

    传输层与网络层分别对应着OSI的传输层与网络层。

    应用层:一个主机的网络程序与其他主机程序通信所使用的层


     2)TCP/IP集每层主要协议

    应用层:HTTP,FTP,DNS,SNTP
    传输层:TCP,UDP
    网络层:IP,ICMP,IGMP,ARP,RARP,
    网络接口层:以太网,wifi

     

     

     

     

     

    应用层:

    • HTTP超文本传输协议,主要应用于万维网服务
    • FTP文件传输协议,用于文件传输
    • SMTP邮件传输协议,用于邮件传输
    • DNS域名解析等

    传输层:

    • TCP:传输控制协议,面向连接可靠的
    • UDP:用户数据报协议,面向连接不可靠的

    网络层:

    IP:网际协议,有两个版本IPV4,IPV6

    ARP:地址解析协议。通过IP映射MAC。

    RARP:反地址解析协议.能过MAC映射IP。

    ICMP:网络控制消息协议.经常使用的Ping命令就是这个协议里的。


     

    3)IP协议

      不同的网络要实现互联,就要解决统一编址的问题。也就是常说的IP地址,跟MAC地址(我都片面的理解为网卡地址)。要是通过MAC来寻址有点不靠谱,因为太多太多了。所以就采用了IP地址,IP协议是无连接不可靠的传送。所谓的无连接就是,事先不建立起传输线路,而是根据当时的网络情况来决定哪条线路,而且线路还不唯一。这也会带来相应的问题,比如说建立了两条传输线路,就会产生包的到达顺序问题;也可能产生丢包的问题等。但他的好处就是:节省了建立接连的时间,让传输速率提高了。

    网络层的数据被称之为IP分组,由IP头+数据 组成。

    4)IP地址的命名与使用

    IP地址是由32bit,网络号+主机号这种形式组成。为了表示方便,由四个十进数加逗号组成,如:192.168.1.1。在路由中只会用到网络号。

    IP地址分为ABCDE五类。D类多播地址,E是留给以后使用,所以我们能申请到的也就只有ABC三类;

    • A类:8bit网络号+24bit主机号且首位必须是0,范围是:1.0.01---126.255.255.255;最大网络数:127(27-1);最大主机数:16.777.214(224
    • B类:16bit网络号+16bit主机号且首位必须是10,范围是:128.0.0.1---191.255.255.255;最大网络数:16383(214);最大主机数:65534
    • C类:24bit网络号+8bit主机号且首位必须是110,范围是:192.0.0.1---223.255.255.255;最大网络数:2097151(221);最大主机数:254

    注:有些特殊的地址不能使用

    1. 主机号全1的地址用于指定网络(局域网)的广播地址,如:202.117.1.255;给这个网络中所有主机广播来用。
    2. 主机号全0的网络地址表示网络本身,如:202.117.1.0;
    3. 网络号全为0,表示本网络,如:0.0.0.5
    4. 255.255.255.255,本网广播地址
    5. A类地址127.*.*.*是一个保留地址,用于网络软件测试及本地进程通信,也称为回送地址
    6. 专门为组织机构来用   

    a)         A类 10.0.0.0---10.255.255.255

    b)         B类:172.16.0.0---172.31.255255

    c)         C类:192.168.0.0---192.168.255.255(做网关的时候使用,私有的地址,感觉这个经常见哦)


    5)子网与子网掩码

    按照网络号+主机号的这种方式来划分,会产生IP地址的浪费及不好管理问题。比如说我们学校有四万多人,去申请了一个B类的网络地址,157.15.0.0。而我们知道,B类的主机数可以有六万多,这样就产生了浪费。而且我们学校四万多人都在这一个B类网络中,发送的消息想当于广播出去了,很不方便。所以在网络号+主机号的基础上又引入了子网号。网络号不动,将原来的主机号拿出几位(位数不定)做子网号:网络号+子网号+新的主机号这种形式。

    比如说一个C类的地址:192.10.1.0,写成二进制形式如下:

    11000000.00001010.00000001.xxxyyyyy 

    将x为子网号,y为新的主机号(yyyyy不能为全0与全1) 

    11000000.00001010.00000001.001*****   ---->      192.10.1.32* 

    11000000.00001010.00000001.010*****   ---->      192.10.1.64* 

    11000000.00001010.00000001.011*****   ---->      192.10.1.96* 

    11000000.00001010.00000001.100*****   ---->      192.10.1.128* 

    11000000.00001010.00000001.101*****   ---->      192.10.1.160* 

    11000000.00001010.00000001.110*****   ---->      192.10.1.192*

    这样子,每个子网下都可以有30(25-2)个主机,想像下一栋楼有六层,每层有不大于三十台主机,这样划分是不是挺不错滴。

    还有一个问题,无论是带子网的还是不带子网的IP地址,在通信过程中,怎么将网络号与主机号从IP地址里面识别出来呢,这就引出了子网掩码。

    子网掩码的作用就是从IP地址主得到主机号与网络号。操作的方法就是用IP地址和子网掩码做与运算(与运算的神奇之处在于:一个数与1相与得到这个数本身,与0想于就是0)比如一个C类地址:192.10.1.10,它的子网掩码是255.255.255.0(前24位全置1,后8位置0,相与后就能得到它的前24位,后面8位全置0);同理将IP地址与0.0.0.255相于,就可得到后8位。

    一般缺省的子网掩码是:

    A类:255.0.0.0

    B类:255.255.0.0

    C类:255.255.255.0

    那不缺省的子网掩码就要算上子网号所占的位数,比如子网号占三位那么:

    11111111,11100000,00000000,00000000

    A类:255.224.0.0

    11111111,11111111,11100000,00000000

    B类:255.255.224.0

    11111111,11111111,11111111,11100000;

    C类:255.255.255.224


    最后一点就是主机与主机直接通信,它们必须在一个子网内,否则要使用路由器实现互联。直接相接的那个路由也可称之为网关

    最后的最后再贴张图,以前没在意,学过这个之后才知其中道理。

    从上面这张图我们得知,我的IP地址是C类地址:192.168.0.30。子网掩码:255.255.255.0是一个缺省的C地址掩码。将IP地址和子网掩码想与得网络号:192.168.0.0主机号:0.0.0.30;

    而默认网关可以理解为跟你连接的第一个路由器的地址:192.168.0.1;

    DNS这方面的知识还没看到,等学到后再做补充~~

     

  • 相关阅读:
    JQuery Ajax实例总结
    【水】HDU 2099——整除的尾数
    hdu 1540 Tunnel Warfare(线段树区间统计)
    python学习教程(九)sqlalchemy框架的modern映射
    Maven 实现Struts2注解配置步骤详解
    消息机4
    hdu4708
    【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1)
    poj1860 解题报告
    机器学习理论与实战(十六)概率图模型04
  • 原文地址:https://www.cnblogs.com/banluchujia/p/3424479.html
Copyright © 2011-2022 走看看