• 网络协议,OSI,简单通信,IP和mac地址


    认识协议

    1.讲故事

    2004年,小明因为给他爹打电话(座机)费用太贵,所以约定一种信号,响一次是报平安,响两次是要钱,响三次才需要接通。

    2.概念

    协议:是一种约定,这种约定可以减少通信成本。

    3.网络协议解决的问题

    A向B发送信息,距离很远,必须要经过设备的中转,才能到达B端电脑。

    网络协议就是解决:网络通信中因为距离变远而出现的新问题。

    网络分层

    1.软件分层

    每个层次或模块负责特定的功能,并通过定义良好的接口与其他层次或模块进行交互。

    1. 提高可维护性:通过将系统划分为不同的层次,每个层次只处理特定的任务,使得系统更加易于理解和维护。
    2. 增强可扩展性:当需要添加新功能或修改现有功能时,只需要在相应的层次上进行修改,而无需影响其他层次。
    3. 促进技术独立性和专业分工:不同的层次可以使用不同的技术和框架来实现,使得每个层次的开发和维护可以更加专业和高效。

    2.网络分层

    好处:层与层之间是松耦合的,可以随时替换和方便维护。

    OSI七层模型

    TCP/IP五层(或四层)模型

    TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

    TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

    因为有了用户层,用户会自己实现会话层,表示层。而平常也不说物理层,所以最常是四层。

    物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆

    (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决

    定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

    数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测

    到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太

    网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

    网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规

    划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

    传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标

    主机.

    应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问

    协议(Telnet)等. 我们的网络编程主要就是针对应用层.

    3.网络 vs OS

    因为TCP 和 IP 是OS内部实现的,网络也属于操作系统源代码的一部分。

    所以只要遵守TCP IP协议,不同的OS系统都能够通信。

    而双方想看到相同的数据类型,所以就得在网络传输上约定好,所以协议就是struct结构体。

    局域网通信

    1.局域网单通信

    每个网络有自己的Mac地址,在局域网中所有人都能收到消息,但根据要送达的地址发现自己不同,就丢弃了数据。

    MAC地址是物理网卡硬件地址,在出厂时就会设定,不能修改,它的大小是6字节,一台计算机可以绑定多个网卡,进而可以拥有多个MAC地址。

    2.数据碰撞

    因为C一直给局域网发数据,和我A发的数据就会进行碰撞,此时都要停下来。

    所以:局域网本质是个临界资源,只不过是在事后(发信息后拦截)处理的。

    碰撞检测:比如令牌环网就是持有令牌才能够上网。

    如何黑掉一个局域网? 只需要给它一直发送垃圾数据进行碰撞,就可以使得另一主机无法上网。

    自己电脑的Mac地址:Xshell下 ifconfig命令可以看到 ether: xxxx

    3.以太网

    以太:物理上没有的介质,但网络上可以有的数据传输的介质。

    每向下发一层,就多一层协议报头,而每一层新加的报头是协议报头,上面所有层的报头+数据 变为有效载荷。

    理解:“报头” = 协议报文 + 有效载荷,报文在不同层有不同的名字。

    应用层 —— request / response 传输层 —— 数据段 网络层 —— 数据报 链路层 —— 数据帧

    而到另一台主机上,就要自底向上进行解包和分用

    1.解包 : 将报头和有效载荷进行分离

    2.分用 : 将自己的有效载荷交付给上一层的协议。

    4.跨网络文件传输

    看图:主机A 要发送数据到 主机 B,但是两个主机不在一个网络中,而中间的路由器,又同时存在于两个网络,那就可以让A把数据发给路由器了。那问题是发给路由器后,还怎么把数据传给主机 B呢?

    上图:两套地址 : 源头 和 目的地(IP地址) 上一站 和 下一站(MAC地址)。

    主机A 到 路由器 :

    先自顶向下进行封装,通过以太网通信到路由器(因为MAC地址只在同一局域网中有效,所以访问不到B的,只能访问到路由器的MAC地址),传输到路由器的底层,还是得自底向上进行解包和分用,到达路由器(只剩IP地址,和有效载荷)。

    路由器 到 主机 B:

    还是得自顶向下做封装,MAC地址的dest变为MACB,通过令牌环网通信到主机B底层,再解包和分用直至最上层拿到”你好“。

    看图:在IP层网上,两个主机对应的协议没有差别(我发的就是你收的),而底层一个是以太网的报头,一个是令牌环网的报头,但在IP层就已经是一个东西了。(一切皆IP)

  • 相关阅读:
    35.滚动 scroll
    Spring MVC
    socket编程基础
    【批处理DOS-CMD命令-汇总和小结】-Cmd窗口中常用操作符(<、<<、&<、>、>>、&>、&、&&、||、|、()、;、@)
    Java零基础入门-多维数组
    大型电商网站的异步多级缓存及nginx数据本地化动态渲染架构
    重磅!涛思数据发布TDengine PI连接器
    C++【继承】
    Java常用类Date和Calendar
    多御安全浏览器使用技巧,剖析7大优点特性
  • 原文地址:https://blog.csdn.net/yiren_liusong/article/details/139707097