网络协议,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)

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 10:10:02       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 10:10:02       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 10:10:02       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 10:10:02       13 阅读

热门阅读

  1. 自定义防抖注解

    2024-06-16 10:10:02       5 阅读
  2. 如何把自己卖个好价钱:实战面试谈薪水

    2024-06-16 10:10:02       7 阅读
  3. 游戏缓存与异步持久化的完美邂逅

    2024-06-16 10:10:02       5 阅读
  4. C++语法10 变量连续赋值、自增自减

    2024-06-16 10:10:02       5 阅读
  5. Android 的整体架构

    2024-06-16 10:10:02       6 阅读
  6. Android基础-RecyclerView的优点

    2024-06-16 10:10:02       7 阅读
  7. AWS无服务器 应用程序开发—第十一章API Gateway

    2024-06-16 10:10:02       4 阅读
  8. Eclipse 重构菜单

    2024-06-16 10:10:02       6 阅读