TCP/IP协议族
TCP/IP协议族是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。这个协议族由互联网工程任务组负责维护。TCP/IP 协议族是Internet最基本的协议,HTTP协议是它的一个子集。TCP/IP协议族按层次分为以下5层。
1、物理层(实体层)
底下第一层。通过光缆、电缆、双绞线、无线电波等物理手段将电脑连接起来。这一层规定了网络的一些电器特性,负责传送0和1的电信号。
2、数据链路层(链接层)
单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?
这就是链路层的功能,它在实体层的上方,确定了0和1的分组方式。
以太网规定,一组电信号构成一个数据包,叫作“帧”(frame)。每一帧分成两个部分:标头(head)和数据(data)。
标头包含发送者和接受者的信息。以太网规定,连入网络的所有设备,都必须具有“网卡”。数据包必须从一块网卡传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。
广播
同一个子网络下,1电脑要给2电脑发送数据包,同一个子网络下的3、4、5电脑也会收到该数据包,2、3、4、5电脑读取数据包的标头(head),看看接收方的MAC地址是否与自己匹配。匹配就接收这个包,做进一步处理,不匹配则丢弃这个包。这种发送方式叫作“广播”。
有了数据包、MAC地址、广播的发送方式,“链路层”就可以在多台电脑间传送数据了。
总结简述:以太网规定一组电信号为一个数据包,MAC地址为标识一广播的方式在同一子网络下发送数据。
3、网络层
链路层说到,一个子网络内以广播的方式以MAC地址为标识发送数据包。互联网是由无数个子网络组成的矩形网络,同一个子网络用广播的方式发送数据,而不同网络则采用“路由”的方式。
问题来了,MAC地址是无法辨别是否同一网络下的,于是“网络层”出现后,每台计算机有了两种地址,一种是MAC地址(网卡),一种是网络地址(管理员分配的)。
IP协议
规定网络地址的协议,叫作IP协议,它所定义的地址就被称为IP地址。
IP地址由32个二进制组成,我们一般用分成四段的十进制数表示,从 0.0.0.0 到 255.255.255.255(IPV4)。
一个IP地址分成两个部分,前一段代表网络,后一段代表主机,但不确定前一段和后一段的分割点(需要子网掩码)。
处于同一子网络下的计算机,它们IP地址的网络部分必定是相同的。假如网络部分是钱24位(二进制),那么172.16.254.2 和 172.16.254.1是处于同一子网络下。
子网掩码
上面说到,一个IP地址我们无法知道前几位是网络部分,所以就有了子网掩码。
子网掩码表示IP地址的特征,也是一个32位二进制数字(与IP地址一一对应),网络部分全部为1,主机部分全部为0。
比如IP地址172.16.254.1的子网掩码是255.255.255.0(二进制11111111.11111111.11111111.00000000),那么这个IP地址的网络部分就是前24位(172.16.254)。
IP数据包
根据IP协议发送的数据,叫作IP数据包,其中包含IP地址信息。
IP数据包也分为head、data两部分,IP数据包放进以太网数据包后,以太网数据包就变成下面这样
总结简述:在链路层的基础上多了个IP地址,子网掩码用于识别IP地址的网络部分(辨别是否同一子网络下)。
4、传输层
有了MAC地址和IP地址,我们可以在互联网上任意两台主机建立通信。
但有个问题是,主机接收到数据包,但不知道这个数据包是给哪个程序(进程)使用,所以这时有个参数叫端口(port)。
端口其实是每一个使用网卡的程序的编号,每个数据包发送的主机的指定端口,该端口程序就取得自己所需的数据。
端口是0~65535之间的一个整数,0~1023的端口被系统占用。
UDP协议
UDP数据包也是由head、data组成。head部分定义了发出端口和接收端口。把UDP数据包放入IP数据包后,以太网数据包就变成下面这样
TCP协议
UDP协议的优点是比较简单,容易实现,但缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。
TCP协议可以理解为有确认机制的UDP协议。每发出一个数据包都要求确认,如果数据包丢失,收不到确认,发出方有必要重发这个数据包。
TCP协议能够确保数据不会丢失,但缺点是过程比较复杂,实现困难,消耗较多资源。
总结简述:网络层是建立在主机到主机的通信,而传输层是建立端口到端口的通信,数据接收的精准度来到了程序。
5、应用层
应用程序收到传输层的数据,接下来要进行数据解读。
应用层的作用就是规定应用程序间通信的数据格式(http协议就在应用层)。
应用层的数据就放在传输层TCP数据包的data部分,所以现在以太网的数据包变成下面这样