计算机网络之网络体系结构
OSI参考模型
协议的分层
OSI参考模型将通信功能划分成七个分层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
B分层接受C分层的服务,同时B分层向A分层提供服务
将通信协议进行分层具有以下好处:
- 分层独立化,各个分层之间相互独立,A分层发生变化不会影响B分层
- 分层将协议细化,易于单独实现每个分层的协议
7个分层的作用
应用层:针对特定应用的协议
表示层:将应用处理的信息转化为适合网络传输的格式,即格式化应用层信息。具体来说,将固有设备的数据格式(大/小端)转化为网络标准传输格式。
会话层:确定数据传输的方式,负责决定建立连接和断开连接的时机
传输层:管理两个节点之间的数据传输,实际上地进行建立连接和断开连接的处理。为确保所传输的数据到达目标地址,会再通信两端之间进行确认,如果没有到达,它会负责进行重发。
网络层:负责选择地址和路由,将数据传输到目标地址。
数据链路层:在物理的传输介质互联设备之间传输和识别数据帧
物理层:负责0、1比特流与电压的高低、灯的闪灭之间互换
TCP/IP参考模型
TIP/IP参考模型与OSI参考模型
应用层
传输层及以下是工作在操作系统内核态,而应用层位于最上层是工作在操作系统用户态,是我们能够直接接触到的。
日常生活中使用的一些软件就是在应用层实现的,当我们使用软件进行数据传输(例如微信聊天)时,应用只需要把数据传递给传输层,而不需要关系数据后续是如何被传送到另一端的。
因此应用层只需要为用户提供应用功能如HTTP、TELENET、SNMP等。
传输层
传输层为应用层提供网络支持
在传输层有两个传输协议:TCP协议和UDP协议
TCP协议全称是传输控制协议,能够保证数据包传送至接收方。TCP协议会在应用层的数据包上添加传输层头部信息,包括源端口和目标端口号,这些端口号用于标识数据发送和接收的应用程序
UDP协议较简单,只负责传输数据包,不保证数据包是否抵达对方,但其实时性和传输效率较高
当来自应用层的数据过大,超过MSS(TCP最大报文长度)时,就要将数据进行分段,在TCP协议中每一段叫做TCP段。这样即使在传输过程中数据丢失,只需重新传输丢失的TCP段,而不需要重新发送整个数据包
当设备作为接收方,传输层需要将数据包转至对应的应用。但一台设备上运行的不止一个应用,因此需要编号标识不同的应用,这个编号就是==端口==
网络层
传输层只充当应用间数据传输的媒介,而实际的传输功能由网络层负责。
网络层最常使用IP协议,网络层会将来自传输层的报文作为数据部分,再加上IP包头,形成IP报文。
如果IP报文的大小超过MTU,就会再次进行分片,得到一个可发送的IP报文。
对于IPv4协议,IP地址共32位,分成四段各表示一个十进制数,每段8位。例如192.168.1.1
IP地址根据==子网掩码==分成两种意义:
- 网络号:负责标识IP地址属于哪一个子网
- 主机号:表示设备在子网中特有的编号
比如:10.100.122.0/24,后面的/24表示从左往右数,共有24个1,即11111111-11111111-11111111-00000000。将四段二进制分别化成十进制得到子网掩码255.255.255.0
得到子网掩码后,再将子网掩码和IP地址==按位与==得到网络号
将子网掩码==取反==再和IP地址==按位与==得到主机号
网络层将数据从一个设备传输至另一个设备时,先匹配网络号找到子网,再匹配主机号找到对应的设备。
IP协议除了上述寻址功能外,还具有==路由==功能。在设备之间传输数据时,大部分情况下设备间不是直接相连,中间存在很多网关、路由器、交换机等网络设备。这样设备与设备之间经过不同网络节点就会形成很多很多路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪儿。
形象地说,IP协议的寻址功能就是导航决定目的地,而路由则是方向盘决定具体路径。
网络接口层
IP报文交给网络接口层后,在IP报文头部加上MAC头部,用于确定接收方物理地址,并封装成数据帧发送到网络上
IP头部中接收方的IP地址就是网络包的目的地,可以匹配IP地址进而找到接收方,但这种匹配方式不适用于数据在以太网中传输,因为在以太网中通讯需要MAC地址来标识网络上的设备
MAC头部包含了接收方和发送方的MAC地址信息,在网络接口层加上MAC头部后数据就能在以太网确定目的地了
总结
网络接口层的传输单位是帧(frame),网络层的传输单位是包(packet),传输层的传输单位是段(segment),应用层的传输单位是报文或消息(message),这些并无本质区分都可统称为数据包。