网络分层
TCP/IP五层模型:是从OSI七层优化而来
每一层次的作用:
物理层
用物理手段(即计算机之间的物理连线)将电脑连接起来,主要用来传输0,1信号,但是并不能解析该层 的现实意义。
数据链路层
该层规定好一套专门的协议(以太网协议),给0.1信号进行分组,以及规定不同的组是什么意思,
目的:让双方计算机能够进行识别传输的信息。
以太网协议
以太网规定,每组的电信号就是一个数据包,每个数据包我们可以成为“帧”。每帧的组成是由标头(Head)和数据(Data)组成。
Q1:怎么知道接收方是谁,
MAC地址,是指作为网络计算机设备的唯一标识,从计算机生产的过程中就会被十六进制标识为MAC地址。所以我们知道MAC地址我们就知道是谁。
之后我们通过广播的方式帮助我们知道对方的MAC地址
Q2:广播是怎么获取对方的MAC地址
广播:
(1)在同一局域网上,计算机通过ARP协议获取到对方的MAC地址。
(2)不同局域网中,交给两个局域网的网关(路由器)去处理的。
。。。。
Q3:为什么每帧是由标头和数据组成
主要是因为数据每帧进行传输,然后是通过每一帧的标头获得发送方,接收方和数据包说明等相关信息。
Q4:数据会存放什么信息
比如文件,字符串等信息
Q5:为什么会有数据包
数据链路层对数据帧的长度都有一个限制,也就是链路层所能承受的最大数据长度,这个值
称为最大传输单元,即MTU。以以太网为例,这个值通常是1500字节。所以超过这个数量便需要分包。
但是还有最小数据传输单元,以以太网为例,这个值通常是46字节。这时候便在数据后面填充满足这个要求。
网络层
解决问题:怎么判断两台计算机是否在同一子网络(局域网)下。
主要是通过IP地址与子网掩码来判断两个计算机设备是否在同一子网络中的,
实现流程:主要是在数据包中添加个标头,标头存储版本,IP地址等信息,IP 数据包的标头是 20 ~ 60 字节。这个包就变成IP数据包。接下来仔细说一下数据包的内容
IP 数据包也分为标头(Head)和数据(Data)两部分:
- 1)标头:IP 数据包的标头是 20 ~ 60 字节,主要包括版本、IP 地址等信息;(这个我们刚刚说过)
- 2)数据:数据的最大长度为 65515 字节。整个 IP 数据包的最大总长度为 65535 字节。主要存放 IP 数据包的具体内容。
Q1:为什么需要两个地址标识,MAC地址不是可以识别到是谁了嘛
其实中间存在一个问题,获得MAC地址需要通过ARP协议,但是发出APR协议包,需要知道IP地址,IP地址可以通过DNS解析获得。于是ARP协议会向子网络中的每台主机都会发送一个包,然后从中取出 IP 地址与自身对比,如果两者相同,都做出回复,向对方报告自己的 MAC 地址,否则就丢弃这个包。
所以为了找到一个人:域名-DNS解析-> IP地址-ARP协议通过IP地址每家查找->MAC地址
Q2:IP地址的作用
- 通过子网掩码判断两个设备是否属于同一子网中(同一局域网中)。
- 通过 ARP 协议获取到对方的 MAC 地址
传输层
解决问题:传输的信息怎么知道是传输给那个程序的
由于计算机上运行的不同程序都会分配给不同的端口,其实就是通过UDP协议和TCP协议实现“端口到端口”的通信,保证能够传输正确的数据给不同的应用程序。
实现流程:在数据前面增加一个标头,存放了发送和接收端口号,
UDP协议和TCP协议
都是采用刚刚说的实现流程,但是TCP 保证了网络的可靠性,TCP 三次握手和四次挥手就是这部分内容。
TCP 的数据包和 UDP 数据包相同嵌入在 IP 协议的“数据”部分。
应用层协议
解决问题:乱七八糟的数据应用怎么识别信息啊?
该层规定好了应用程序的数据格式,传输数据时根据某种格式(比如电子邮件,HTTP协议,或者FTP数据格式)进行编译,然后获取方便可以解析数据。
数据包格式如下:
注意:数据包之前都有长度限制,而且数据包之间是包含关系的,所以内嵌数据包最大数据长度都是被外部的数据包所约束 。