• TCP/IP四层模型


    物理层

    • 通过物理手段 ( 网线,光纤,无线 ) 将设备连接在一起,传输0/1电信号 ( 也叫比特流 ) ,计算机之间的物理连线,主要用来传输0/1信号,因为0/1信号没有任何的现实意义,所以用另一层用来规定不同0/1组合的意义

    数据链路层

    • 下层的物理层不能规定不同0/1组合的信号代表什么意义,所以在数据链路层规定了一套协议,专门给0/1信号进行分组,规定不同的组代表的是什么意思,从而让双方计算机都能够进行识别,这个协议就是我们常说的 以太网协议
    • 以太网协议

      • 以太网协议规定一组电信号构成一个数据包,我们把这个数据包称为 ,每一个帧由 标头数据 两部分组成
      • 帧的大小一般为 64 - 1518 个字节 较大的数据则需要分成多个桢
        • 标头 Head :18个字节组成,标头中包含这个 桢 是由谁发送、发送给谁这些信息,所以标头主要是一些说明数据 例如发送者/接受者等信息
        • 数据 Data :46-1500个字节组成,里面主要是发送者想给接收者的内容
      • 把一台计算机的数据通过物理层和数据链路层发送给另外一台计算机,怎么标识对方以及怎么知道对方的地址呢? 唯一标示 MAC地址 出现了
    • MAC地址

      • 进入网络的每一台计算机,都会有网卡接口,每一个网卡都会有一个唯一的地址,就是所谓的 MAC地址 ,它就是网络中每台计算机设备的唯一标识,是一串由48个字节组成的十六进制数,每台计算机在厂商生产出来的时候就标识好了,所以我们用 MAC地址 来标识对方,而得知对方的Mac地址通过ARP协议
    • 广播

      • 在同一子网络,就是我们常说的局域网中,计算机通过广播来通信,即向同子网中全部计算机发送数据包,其它计算机根据数据包中接收者的 MAC地址 来判断是否接收数据包
        • A会同时给B/C/D发送数据包,这个数据包中会包含着接收者的 MAC地址 信息,当B/C/D接收到了数据包,会取出数据包中的 MAC地址 与自身的 MAC地址 对比,如相同就接收这个数据包,否则就丢弃这个数据包 ( 丢包 ),这种方式我们称之为 广播

    网络层

    • 我们所处的网络,是由无数个子网络 ( 局域网 ) 构成的,广播的时候,也只有同一个子网里的计算机能够收到,所以要区分 Mac地址 是否属于同一个子网,假如是同一个子网,我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发

    • 怎么判断两台计算机是否在同一个子网中呢,这就是网络层干的事情,为了解决这个问题,就有了 IP协议 的概念

    • IP协议

    • IP协议所定义的地址,就是我们常说的 IP地址 ,IP协议 有两个版本,ipv4 / ipv6,地址范围在 0.0.0.0 ~ 255.255.255.255 。

      • IP地址 分为两部分,前面一部分代表网络,后面一部分代表主机,但是网络部分和主机部分所占用的二级制位数是不固定的
      • 假如两台计算机的网络部分是一模一样的,我们就说这两台计算机是属于同一个子网 ( 局域网 ) 中,例如 192.168.17.1 和 192.168.17.2 , 假如这两个 IP地址 的网络部分为 24 位,主机部分为 8 位,那么他们的网络部分都为 192.168.17 , 所以我们说这两台计算机处于同一个子网中
      • 为了确定网络部分占几位,主机部分又占几位,这就又引出了我们另一个关键词 子网掩码
    • 子网掩码

      • 子网掩码 和 IP地址 一样也是32位二进制数,但是它的网络部分规定全部为1,主机部分规定全部为0,也就是说假如上面那两个 IP地址 的网络部分为24位,主机部分为8位的话,那它们的子网掩码为11111111.11111111.11111111.00000000 ,也就是 255.255.255.0
      • 把 IP地址 与它的子网掩码做一个 ( and ) 运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表的是同一子网,否则不是同一子网
      • 假设它们处在同一子网当中,计算机A要和计算机B发送数据时,我们通过是 ARP协议 来得到计算机的 MAC地址
    • ARP协议

      • ARP协议 也是通过广播的形式,给同一个子网中每个电脑发送一个数据包,这个数据包会包含接收者的 IP地址,对方收到这个数据之后,会取出 IP地址 与自身的对比,相同则会把自己的 MAC地址 回复给对方,否则就丢弃这个数据包,这样计算机A就知道计算机B的 MAC地址 了
      • 在询问 MAC地址 的数据包里,在对方的 MAC地址 这儿填的是一个特殊的 MAC地址 ,其他计算机看到这个特殊的 MAC地址 后,就知道广播是在询问而不是传输数据包

    传输层

    • 通过 物理层 / 数据链路层 以及 网络层 的互相协调,我们成功的把数据从计算机A传到了计算机B,可是计算机B里面有各式各样的应用程序,计算机是如何知道这个数据是发给哪个应用程序的呢?
    • 端口 就上场了,当计算机A传输给计算机B的时候,还得指定一个端口,以供特定的应用程序来接收处理,端口范围:0~65535,其中前1023个端口被系统占用那么也就是说,传输层的功能就是建立端口到端口的通信,而相比之下网络层的功能是建立主机到主机的通信
    • 传输层最常见的两大协议就是 TCP协议UDP协议

    Socket

    • Socket,它是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作封装成几个简单的接口供应用层调用,从而实现进程在网络中的通信

    应用层

    • 应用层是最接触用户的,上面几层我们收到了传输层收到的数据,TCP/UDP协议可以传递各种程序的数据包,就像邮箱/网页/FTP等等,所以就需要不同的协议来规定数据的格式,收到后才能渲染解读,应用层就是由这些协议构成,它的数据包放在UDP包/TCP包的 数据 中
    • HTTP 协议、文件传输用的 FTP 协议、电子邮件发送的 SMTP、域名解析的 DNS 协议、远程登录的 Telnet 协议等等都是属于应用层的
  • 相关阅读:
    JavaScript协程(function*/yield)转化为异步(async/await)
    Spring Bean的生命周期理解
    基于jsp+java+ssm的农产品购物商城系统-计算机毕业设计
    【CSDN竞赛】第五期解题报告
    serialize 序列化原生方法
    4.四大组件的工作过程
    我的学习方法论
    IDEA中创建Java Web项目方法1
    Topaz Video AI:一键提升视频品质,智能重塑影像魅力 mac/win版
    创建并运行一个 Spring项目
  • 原文地址:https://blog.csdn.net/weixin_43294560/article/details/126079111