zoukankan      html  css  js  c++  java
  • 《网络协议从入门到底层原理》笔记(一)基本概念、通信基础

    第一章 前言

    网络协议

    数据是如何从一个设备传递到另一个设备的?
    答:网络协议

    互联网、移动互联网、物联网,都离不开网络协议:

    • 最熟悉的网络协议:HTTP
    • 为了满足各种需求,有各式各样的网络协议(HTTPS、SMTP、MQTT、RTMP等)

    网络协议方面的面试题目近年来要求提高了:

    •  TCP和UDP的区别?说一下它们的报文格式?
    •  TCP的流量控制和和拥塞控制?TCP如何实现可靠性传输?
    •  为什么连接是3次握手,关闭是4次挥手?
    •  7层模型与4层模型的区别?每一层的作用是什么?
    •   交换机与路由器的区别?

    客户端—服务器

    跨平台的原理

    Java跨平台的原理:

     解释型语言跨平台的原理与 Java 类似:例如 JavaScript,甚至不需要经过编译,有浏览器即可解析。


     

    C++跨平台的原理:使用平台相关的编译器生成对应平台的可执行文件

    网络互连模型(OSI参考模型)

    什么是协议?为什么要有协议?

        协议就是通用的标准。
        如果没有一个国际通用的标准,那么各大公司按照自己的标准来,相互之间的交互就会很麻烦。比如我编写的代码在微软的服务器可以运行,但是要在苹果的服务器运行又需要重新编写…

    为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型 OSI 参考模型(Open System Interconnect Reference Model),具有7层结构。

    实际上 OSI参考模型(7层) 更偏理论,而 TCP/IP 协议(4层) 在才是在实际中使用的协议,而为了研究和学习计算机网络,又常将之划分为 5层。

     

     请求过程:不管什么协议都是经过下列的 包装 + 解包 的过程。

    网络分层

    第二章 通信基础

    1、需要得知对方的 IP地址

    2、最终是根据 MAC地址(网卡地址),输送数据到网卡,被网卡接收

    • 如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理
    • 如果网卡发现数据的目标MAC地址不是自己,就会将数据丢弃,不会传递给上一层

    网线直连

    需要用 交叉线(不是直通线)

    • ping命令使用的是ICMP协议,前提是需要知道对方的ip地址,最终是根据MAC地址输送数据到网卡,被网卡接收。
    • 当不知道对方MAC地址时,使用ARP协议,进行广播。ARP协议的作用:已知 IP地址,通过 广播 获取 MAC地址。
    • 广播只在同一个网段中传播,目的是获取MAC地址,给所有连接设备发广播,询问对应ip地址下的MAC地址。
    • ARP协议的广播中,目标MAC地址为FFFF.FFFF.FFFF。即16进制MAC地址,换算二进制全是1。
    • 全是1的MAC地址,代表广播,表示在同一个网段的所有连接设备都能接收。
    • ARP协议是有缓存的,当下次在ping的时候,就不需要再去获取ip地址了,而是直接执行ICMP协议。

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议

    ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机路由器之间传递控制消息。

    为什么下边出现3个ARP包,实际上是 一次完整的发送请求,接收响应的过程

    同轴电缆(Coaxial)

    • 半双工通信
      • 同一时间,单向通信
    • 容易冲突
      • 电缆两个方向同时有数据汇入时,会发生冲突。
    • 不安全
      • 数据不会单向走入对应的计算机,而是向所有设备发送数据。
    • 中间断了, 整个就瘫了
      • 失去了终止电阻

    集线器(Hub)

    集线器相比同轴电缆唯一的优点就是:哪怕连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备。

    • 优点:
      • 某两条线路发生冲突,其他线路任可通信
    • 缺点:
      • 如果连接了1000台设备, ARP协议就会发送1000条数据。即使知道对方MAC地址,发送数据仍然需要同时发送给1000台设备。
      • 半双工通信
      • 容易冲突
      • 不安全

    网桥(Bridge)

     能够通过自学习得知每个结构那侧的MAC地址,从而起到隔绝冲突域的作用。

    • 通过MAC地址表
    • 当数据通过网桥MAC地址表确定目标MAC地址不在另一侧时,就不会继续向另一侧发送数据了。
    • 如果左右两侧数据可以被网桥分隔,那么左右两侧可以同时进行通信。

    例如,6向7发数据包,
    当6发出请求ARP广播时,网桥会记录6的MAC地址在左;
    当7发出响应ARP广播时,网桥会记录7的MAC地址在左。

    交换机(Switch)

    • 相当于接口更多的网桥
    • 全双工通信,双向通信
    • 学习能力,能记住每个接口对应的MAC地址
    • 比集线器安全
    • 区域网最终方案

    全球所有设备都用交换机连接会是什么情况?

    • 他们必然处于同一网段(交换机上连接的主机要求是同一网段),因此 IP地址可能会不够用
    • 即使使用交换机,第一次发送数据包仍然需要ARP广播,耗费大量时间。
    • 形成广播风暴,只要有一个设备发送ARP广播,全球设备都能收到

    路由器(Router)

    可以在不同网段之间转发数据

    • 隔绝广播域

    不同网段之间的广播是发不过去的

    不同网段如何通信?

    主机发数据之前先判断目标IP地址与主机是否在相同网段
    • 在同一个网段,发送ARP,通过交换机集线器传递数据。
    • 不在同一个网段
      • 主机先发送ARP到路由器网关,确定网关MAC地址
      • 主机发送数据给网关网关再决定出口是哪个网关
      • 出口网关发送ARP,以确认接收方MAC地址
      • 最后出口网关将数据发送给接收方。

    总结

    • 网线直连, 同轴电缆, 集线器, 网桥, 交换机
      • 连接的设备必须在同一网段
      • 连接的设备处在同一广播域
    • 路由器
      • 可以在不同网段之间转发数据
      • 隔绝广播域
        • 不同网段之间的广播是发不过去的
    • 主机发数据之前, 首先会判断目标主机的ip地址跟它是否在同一个网段
      • 在同一个网段: ARP
      • 不在同一个网段: 通过路由器转发数据
    作者:王陸

    -------------------------------------------

    个性签名:罔谈彼短,靡持己长。做一个谦逊爱学的人!

    本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。鉴于博主处于考研复习期间,有什么问题请在评论区中提出,博主尽可能当天回复,加微信好友请注明原因

  • 相关阅读:
    设置IIS允许下载.config文件
    SQL Server 触发器
    MVC参数自动装配
    sql之left join、right join、inner join的区别
    C# 之泛型详解
    Frameset使用教程
    网页引用Font Awesome图标
    ubuntu下apache2 安装 配置 卸载 CGI设置 SSL设置
    深入理解JAVA I/O系列二:字节流详解
    深入理解JAVA I/O系列三:字符流详解
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/15421694.html
Copyright © 2011-2022 走看看