🌟作者介绍:友友们好我是钓鱼的小小猫,可以叫我小猫💕
⏳作者主页:钓鱼的猫猫-CSDN博客🎉
🎉Gitee:袁浩然 (rain_man1215) – Gitee.com
🎉小猫和友友们一样喜欢代码🤭。很荣幸能向大家分享我的所学所感,和大家一起进步
一.初始协议
历史的车轮碾过,必然会留下前人的痕迹。踩在巨人的肩膀上,需要不断向上兼容,有江湖的地方必然有规矩,有新启的技术必然有陈旧的保留。因此网络,有很多规矩,有些规矩是陈旧的实现不了,有些规矩是设计极其优秀的/
①协议是一种约定,让参与的需要遵守。
②协议是分层的,每一层都有对应的规则要求。
二.网络模型
2.1 OSI 模型


这样的模型太详细了,在工程角度有些是实现不了的。
其实在⽹络⻆度,OSI定的协议7层模型其实⾮常完善,但是在实际操作的过程中,会话层、表示层是不可能接⼊到操作系统中的,所以在⼯程实践中,最终落地的是5层协议。 但是要理解上⾯的话,需要我们学习完⽹络才可以理解,这⾥就知道就可以。
2.2 TCP/IP五层(或四层)模型

应用层:如何处理数据。
传输层:数据丢失怎么办。
互联网层:怎么定位目标主机问题。
网卡层:怎么解决当下要去哪里的问题。
硬件:(school里面学的,例如香农定理,电磁波,光纤之类的暂时不需要了解)
三. 局域网通信
局域网通常有三种①以太网②令牌环网③无线LAN
以太网本质:就是发信息给所有人,泛洪
令牌环网:本质是锁
无线LAN:广播
3.1 MAC地址
以太网(内涵一下物理界没有以太,计算机有)

以太网,任何时刻,只允许一台机器向网络中发送数据。但是相当于向宇宙发送坐标,所有文明都能收到,也就是叫泛洪。抓包抓包就是抓局域网以太网的包。
如果有多台同时发送,会发⽣数据⼲扰,我们称之为数据碰撞,要避免数据碰撞需要有碰撞检测(自己传给自己看能不能行)和碰撞避免(算法随机休眠)
在没有交换域中,一个以太网就是一个碰撞域。
所有发送数据的主机要进行碰撞检测和碰撞避免。

要传输数据,需要底层支撑,也就是自顶向下将数据传输,也就是将数据从只顶向下封装,贯穿协议栈。

在数据封装过程中,数据封装 = 本层封装 + 上层的数据。本层的叫报头(里面有各种本层的协议规则),上层的叫有效载荷。数据封装叫报文。

要使用这些报文,需要解包(分离本层协议段)和分用(交付有效载荷给上层),也就是特别像栈里面的push和pop,因此把协议也叫协议栈。
在数据链路层,里面有MAC地址(协议),网卡内置6字节,48位,标识内网的主机唯一性,出厂就有。
这个MAC地址就是去找下一个位置是谁,每当到下一个位置,都会更新MAC位置
四. IP地址
如果不是局域网通信呢?那么就需要找到去哪个局域网通信,这个工作就是IP地址来做。这好比,
原来IP:我在东土大唐
目标IP:西天取经
原来MAC:女儿国
目标MAC:车迟国
我不知道终点在哪里,但我知道下一站在哪里


在传输过程中,首先是数据进行协议栈字上向下封装,然后到网络层,对比IP地址,发现局域网里面没有,因此继续封装到数据链路层,不知道最终目标在哪里,但知道下一个目标在哪里。由MAC地址找一下个MAC地址即并找到路由器。路由器有两个网卡,第一个接收的,第二个传入下一个,然后路由器进行解析,如果此时需要解包和分用,如果路由器的第二个网卡是目标,就拆包后继续封装,往一下个目标走,直到找到目标IP。

⽬的IP是⼀种⻓远⽬标,Mac是下⼀阶段⽬标,⽬的IP是路径选择的重要依据,mac地址是局域⽹ 转发的重要依据 提炼IP⽹络的意义和⽹络通信的宏观流程。

这样做有什么用呢?不是脱裤子放屁吗?为什么还要MAC地址?这个IP难道不能直接解决吗?
从技术角度出发,IP当然可以直接解决问题,但是这个如果把IP分离处理,若MAC后续有更新的技术,我只需要提供上层的接口,我不管底层新技术的实现,这样就可以解离出来,那么框架不变,只需要更新内核东西,而不是重新改变整个框架。
从这样来说,更高内聚低耦合
IP⽹络层存在的意义:提供⽹络虚拟层,让世界的所有⽹络都是 IP ⽹络,屏蔽最底层⽹络的差异




