上一篇我们介绍了OSI网络七层模型中的链路层和物理层,今天要介绍的内容是关于网络层和传输层。
还是先把OSI七层模型摆出来,如下图:
1. 网络层
在数据链路层中提到了每块网卡都有一个独一无二的MAC地址,数据由一块网卡传到另一块网卡需要知道对方的MAC地址。在知道对方MAC之后,如何将数据包发送过去呢?广播是种办法,即将数据发给本子网中的所有电脑,接受到数据的电脑比较自己的MAC地址是否匹配,决定是否处理。但是为了连接其他子网中的网卡,就需要引入网络地址,如IP地址。所以,网络层的主要协议就是IP协议。
关于IP地址:
- IPv4: 范围0.0.0.0 ~ 255.255.255.255
- 结合子网掩码来判别不同IP地址是否属于同一子网。192.168.1.125和192.168.1.100的子网掩码都是255.255.255.0,那么两者属于同一子网。
2. 传输层
在有了IP和MAC地址以后,就可以完成两主机间的网络传输。但是由于一台主机上可以有多个应用程序使用网络,如网页、聊天工具等,使用端口对不同的应用程序进行区分。传输层的一大主要作用就是指定端口。
- 端口范围: 0 到 65535。0到 1023 的端口被系统占用,用户只能选用大于 1023 的端口。
2.1 UDP协议
传输层主要有两大协议:UDP (User Datagram Protocol ,用户数据报)和TCP (Transmission Control Protocol,传输控制协议)。两者的主要区别是UDP是面向无连接的;而TCP是面向连接的。
- 面向连接和面向无连接:面向连接与打电话相似,双方必须先验证身份建立连接;而无连接就像寄信,寄出去就完事了。显然面向连接的更加可靠,但是面向无连接的速度更快。
- UDP的主要作用:一个是为数据内容添加校验,二是添加了端口号。
2.2 TCP协议
- 每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程。
- TCP协议为数据增加了校验机制,防止收发数据出现错位,并提供确认-重传机制,保证数据能够完整发送成功。
3. 总结
介绍完网络层和传输层,再上面的就是应用层了。应用程序需要使用TCP/UDP+IP协议传输数据,虽然目前这些协议都集成在操作系统中了,但是使用起来还是会很复杂。因此操作系统提供了socket机制进行了封装,让我们可以不关心内部。将在下一节讲解。