zoukankan      html  css  js  c++  java
  • 趣谈网络协议

    第一讲

    协议三要素:语法、语义、顺序。

    语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。

    语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本就没有意义。

    顺序,就是先干啥,后干啥。例如可以先加上某个数值,然后再减去某个数值。

    只有通过网络协议,才能使一大片机器互相协作、共同完成一件事

    第二讲

    Q:网络为什么要分层?

    A:复杂的程序都要分层,这是程序设计的要求。

    Q:TCP在三次握手的时候,IP层和MAC层在做什么?

    A:TCP发送每个消息,都会带着IP层和MAC层。因为TCP每发送一个消息,IP层和MAC层的所有机制都要运行一遍。而你只看到了TCP三次握手,其实,IP层和MAC层也忙活好久了。

    这里需记住:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。

    所以,对TCP协议来说,三次握手也好,重试也好,只要想发出去包,就要有IP层和MAC层,不然是发不出去的。

    Q:什么叫二层设备?什么叫三层设备?

    A:所谓的二层设备、三层设备,都是这些设备上跑的程序不同而已。一个HTTP协议的包经过一个二层设备,二层设备收进去的是整个网络包。这里面HTTP、TCP、IP、MAC都有。而二层设备就是只把MAC头摘下来,看看到底是丢弃、转发还是自己留着。那什么叫三层设备呢?三层设备就是把MAC头摘下来之后,再把IP头摘下来,看看到底是丢弃、转发还是自己留着。

    Q:为啥有了IP还需要MAC地址?

    A:a.信息传递时候,需要知道的其实是两个地址:终点地址、下一跳的地址。IP地址本质上是终点地址,它在跳过路由器的时候不会改变,而MAC地址则是下一跳的地址,每跳过一次路由器都会改变。这就是为什么还要用MAC地址的原因之一,它起到了记录下一跳的信息的作用。
    b.网络体系结构的分层模型:用MAC地址和IP地址两个地址,用于分别表示物理地址和逻辑地址是有好处的。这样分层可以使网络层与数据链路层的协议更灵活地替换。
    c.历史原因:早期的以太网只有集线器,没有交换机,所以发出去的包能被以太网内的所有机器监听到,因此要附带上MAC地址,每个机器只需要接受与自己MAC地址相匹配的包。

    (IP地址不唯一,MAC地址唯一)

    Q:为啥有了MAC地址还需要IP地址?

    A:IP是地址,有定位功能;MAC是身份证,无定位功能;

    注:如果一个HTTP协议的包跑在网络上,它一定是完整的。无论这个包经过哪些设备,他都是完整的。

    第三讲

    IP是地址,有定位功能;MAC是身份证,无定位功能;

    CIDR可以用来判断是不是本地人;

    IP分公有的IP和私有的IP。与是否“出国门”有关

    无类型域间选路(CIDR)

    于是有了一个折中的方式叫作无类型域间选路,简称CIDR。这种方式打破了原来设计的几类地址的做法,将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。从哪里分呢?你如果注意观察的话可以看到,10.100.122.2/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24位是网络号,后 8 位是主机号。伴随着 CIDR 存在的,一个是广播地址,10.100.122.255。如果发送这个地址,所有10.100.122 网络里面的机器都可以收到。另一个是子网掩码,255.255.255.0。将子网掩码和 IP 地址进行 AND 计算。前面三个 255,转成二进制都是 1。1 和任何数值取 AND,都是原来数值,因而前三个数不变,为 10.100.122。后面一个 0,转换成二进制是 0,0 和任何数值取 AND,都是 0,因而最后一个数变为 0,合起来就是10.100.122.0。这就是网络号。将子网掩码和 IP 地址按位计算 AND,就可得到网络号。

    举例:一个容易“犯错”的CIDR

    Q:我们来看16.158.165.91/22这个CIDR。求一个这个网络的第一个地址、子网掩码和广播地址。

    A:由于22不是8的整数倍,于是将165转成二进制位10100101。16.158占了16位,因此22-16=6;取前面六位, 网络号为16.158.<101001>,而<01>.91是机器号

    则:网络中第一个地址为: 16.158.<101001><00>.1,即16.158.164.1

    ​ 子网掩码为:255.255.<111111><00>.0,即255.255.252.0

    ​ 广播地址为:16.158.<101001><11>.255,即16.158.167.255

    第四讲

    动态主机配置协议(DHCP)

    DHCP协议主要是用来给客户租用IP地址,和房产中介很像,要商谈,签约,续租,广播还不能“抢单”。DHCP 协议能给客户推荐“装修队”PXE,能够安装操作系统,这个在云计算领域大有用处。

    正确分配IP地址:

    CIDR、子网掩码、广播地址和网关地址

    第五讲

    第一,MAC 层是用来解决多路访问的堵车问题的;

    第二,ARP 是通过吼的方式来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作

    缓存;

    第三,交换机是有 MAC 地址学习能力的,学完了它就知道谁在哪儿了,不用广播了。

    -------------------------------------后续继续补充----------------------------------

  • 相关阅读:
    Java_swing控件实例
    java_泛型 TreeSet 判断hashcode/length(升序排列)
    java_泛型(设置通配符下限)
    java_泛型(构造器)部分实例
    子类可以继承的同时实现接口
    继承类的线程写法
    匿名内部类的线程写法
    接口作为参数并用参数变量可以调用接口中的方法------------------需要多练习
    类可以作为参数类型,参数的变量还能调用作为参数类型的方法--------------需要多练习
    接口和类
  • 原文地址:https://www.cnblogs.com/zpsakura/p/13685656.html
Copyright © 2011-2022 走看看