ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络协议

2022-04-13 12:03:22  阅读:194  来源: 互联网

标签:协议 子网 主机 网络协议 地址 MAC 数据包


1、链路层(以太网协议)

网络通信就是把数据通过物理介质传送给对方,一组电信号就是一个数据包,一个数据包被称为一帧。一个数据帧包括首部,数据,尾部三部分。

首部包含目标MAC地址,源MAC地址和类型。数据最长为1500字节,如果需要传输的数据很长,就需要分割成多帧进行发送。尾部固定4字节,用于确定数据包传输过程中是否损坏。 以太网协议规定,接入网络的设备必须安装网络适配器(网卡),数据包就是从一个网卡传送到另一个网卡。网卡地址也就是MAC地址,是网卡的身份表示,全球唯一。 有了MAC地址,以太网通过广播的形式,把数据包发送给子网内所有的主机,子网内的每一台主机接收到数据包后,会读取数据包里的MAC地址,和自己的MAC地址进行对比,如果相同就做下一步处理,不相同就丢弃这个包。

链路层的主要工作就是对电信号进行分组形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方

2、网络层(IP协议,ARP协议,路由协议)

解决三个问题(发送者如何知道接受者的MAC地址,如何知道接受者和自己同属一个子网,如果不在一个子网数据包如何发送给对方)

IP协议(判断是否属于同一网络中),MAC地址只与生产厂商有关,无法通过MAC地址判断两台主机是否处于同一个子网。网络层引入了IP协议,让我们能够区分两台主机是否属于同一个网络

IPv4是一个32位的地址,用4个十进制数字表示。以C类地址192.168.24.1为例,其中前24位是网络地址,后8位是主机地址。如果两个IP地址在同一个子网内,则网络地址一定相同为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过AND运算后就可以得到网络地址。

IP地址是已知的,所以在网络层可以根据IP协议判断双方是否处于同一个子网。

ARP协议(地址解析协议),是根据IP地址获取MAC地址的一个网络层协议。ARP会发送一个请求数据包,数据包的首部包含了目标主机的IP地址,这个数据包在链路层再次进行包装,生成以太网数据包发送给子网内所有的主机。接收到数据包的主机会取出数据包里的IP地址跟自己的IP进行比较,如果相同就返回自己的MAC地址。ARP接收返回消息,来确定目标主机的MAC地址。

路由协议ARP的MAC寻址还是在同一个子网中,因此引入路由协议,首先通过IP协议来判断两台主机是否在同一个子网,如果在同一子网,就通过ARP协议去寻找MAC地址;如果不在同一个子网,以太网会将数据包发送给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,网关会进行多次转发,将数据包发送给目标IP所在的子网中,通过ARP协议获取目标MAC地址,最终也是通过广播形式将数据包发送给接收方。

IP数据包在网络层被包装的数据包叫IP数据包,IP数据包的首部包含了目标IP地址和源IP地址。

网络层的主要任务是定义网络地址,区分网段,子网内寻找MAC地址,对不属于同一子网的数据包进行路由。

3、传输层(UDP协议,TCP协议)

链路层定义了主机的MAC地址,网络层定义了IP地址,明确了主机所在的网段。有了这两个地址数据包就可以进行传输。
实际上数据包是从一个主机的某个应用程序出发,发送到另一个主机的应用程序,每台电脑都运行着很多应用程序,数据包被发送到接收方主机后,无法确定哪个应用程序要接受。

因此传输层引入了UDP协议解决这个问题,UDP协议定义了端口,同一个主机的每一个应用程序都有指定的唯一端口,网络传输中的数据包也必须加上端口信息。UDP数据包的首部包含了源端口和目标端口

UDP协议比较简单,没有确认机制,数据包发出后,无法知道对方是否接收成功,可靠性较差。TCP协议在UDP基础上建立了三次会话机制,在正式收发数据之前,必须和对方建立可靠的连接。相比UDP,TCP实现过程复杂,消耗连接资源多,传输速度慢 传输层主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议保证数据传输的可靠性。

4、应用层

以上三层协议传递的都是字节流,应用层是主要工作是定义数据格式,并按照对应的格式解读数据

全流程

首先应用层对请求包进行数据格式定义,接着传输层协议加上端口号,确定双方通信的应用程序,然后网络层加上了双方的IP地址,确认了双方的网络位置,最后链路层加上了双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,以广播的方式,通过传输介质发送给对方主机。对于不同网段,数据包会转发给网关路由器,经过多次转发,最终发送到目标主机。

标签:协议,子网,主机,网络协议,地址,MAC,数据包
来源: https://www.cnblogs.com/fulaien/p/16139557.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有