多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 数据链路层 **Ethernet协议** Ethernet协议规定一组电信号构成一个数据包,叫做“帧”(Frame)。 **帧(Frame)** 每一帧分成标头(Head)和数据(Data)。 Head包含数据包的一些说明项,如发送者、接收者,数据类型等;Data则是数据包的具体内容。 Head的长度固定为18字节,Data最短为46字节,最长为1500字节;所以一帧最短为64字节,最长为1518字节。 **如何表示发送者和接收者** 以太网规定接入网络的设备必须具有“网卡”接口。数据包是从一块网卡传送到另一块网卡。网卡的地址为AC地址。 **MAC地址** MAC地址唯一。长度为48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。 通过ARP协议来获取接收方的MAC地址。通过“广播”(broadcasting)向本网络内所有计算机发送,让每台计算机读取Head。找到接收方的MAC地址与自身的MAC地址比较。如果相同接收,作进一步处理;反之则丢弃。 ## 网络层 区别MAC地址是否属于同一个子网络,如果是则用“广播”方式发送;若不是则用“路由”的方式发送。为此引用网络地址概念。 每台计算机有两个地址**MAC地址**和**网络地址**。网络地址确定计算机所在的子网络,MAC地址将数据包发送到该子网络中的目标网卡。先处理网络地址,再处理MAC地址。 **IP协议** 规定网络地址的协议为IP协议,所定义的地址为IP地址。目前广泛使用的是IPv4,IP协议的第四版。 IPv4规定网络地址由32个二进制位组成,通常使用分成四段的十进制数表示IP地址,从0.0.0.0到255.255.255.255 **IP数据包** 根据IP协议发送的数据叫做IP数据包。IP数据包也分为标头和数据两个部分,标头主要包括版本、长度,IP地址等信息;数据则是数据包的具体内容。标头的长度为20到60字节,整个数据包的总长度最大为65535字节。 ## 传输层 有MAC地址和网络地址之后,就可以在互联网任意两台主机上建立通信。通过“端口”(port)来讲数据包区别发送到指定的程序。 “端口”是0到65535之间的一个整数,16个二进制位。0到1023的端口被系统占用。有了IP和端口,就能确定互联网上的一个程序,进而实现网络间的通信。 **UDP协议** 因需要在数据包中加入端口信息,从而引入新的协议。UDP协议的格式几乎就是在数据前面加上端口号。 UDP数据包由“标头”和“数据”组成,标头主要定义了发出端口和接收端口;数据就是具体内容。 UDP数据包“标头”一共只有8个字节,总长度不超过65535字节,正好放进一个IP数据包。 UDP的缺点:可靠性较差,发出之后无法知道对方是否收到,诞生了**TCP协议**。 TCP数据包没有长度限制,但为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不会再被分割。 ## 应用层 应用程序接收到“传输层”的数据,就要对数据进行解包。数据来源各不一样,就需要事先规定好通信的数据格式,否则接收方无法获得真正发送的数据内容。“应用层”的作用就是规定好应用程序使用的数据格式,常见HTTP,FTP等。 ![](https://img.kancloud.cn/86/cb/86cb7b0aee4d480615f8a2b38aee028b_772x505.png)