TCP/IP网络模型

发布于:2024-04-25 ⋅ 阅读:(30) ⋅ 点赞:(0)

应用层

应用层服务于用户,比如说我们在电脑上使用的软件,都是在应用层上实现的,当不同设备通信时,数据由下一层的传输层实现。应用层提供的功能比如HTTP、FTP、Telnet、DNS、SMTP等。应用层是工作在操作系统中的用户态,传输层以及下层模型工作在内核态。

传输层

传输层主要作用是给应用层提供网络支持,主要服务于应用层,作为数据传输媒介,实现应用与应用之间的通信。

传输层有两个传输协议:TCP与UDP

大部分应用都采用的TCP传输协议,比如说HTTP应用层协议。TCP与UDP相比多了很多特性,比如流量控制,拥塞控制,超时重传,这些特性都是为了保证数据包可以可靠的传输给对方。

UDP只负责传输数据包,不保证数据包是否丢失,实时性更好些,传输效率也更高。

应用传输的数据过大时(超过MSS),传输层会将数据包分块,当有分块丢失时,只需要重传丢失的分块即可,不需要重写发送整个数据包。在TCP协议中,这些分块叫做TCP段。

设备作为接收方时,传输层是要将数据包传输给应用层的。但是同一时间可能有多个应用在收发数据,为了避免数据传给应用时传输错误,通常会使用一个编号将应用区分开来,这个编号叫端口

一些应用的端口是默认的,比如说80的Web服务器端口,22的远程登陆服务器端口,浏览器每一个独立的标签页都是一个独立的进程,操作系统会为这些页面分配独立的端口号,而不是给浏览器应用一个端口。

网络层

具体的传输实现,是由网络层实现的。

网络层常用的协议为IP协议,IP协议会将传输层的报文(HTTP与TCP报文)作为数据部分再次封装,加入IP包头组装成IP报文,与传输层相同的是,如果IP报文过大(超过MTU),那么也会进行分片传输,从而得到一个一个即将发送到网络的报文。

网络层是将数据从一台设备发送到另一台设备,为了找到接收数据的设备,我们需要一个与传输层中的端口类似的编号,在网络层这个编号叫做IP地址

这里以IPv4协议举例,IP地址一共32位,分为4段,每段以.进行分割,比如说192.168.100.1,每段占8位。

通过IP地址我们可以进行设备区分,但是网络层是如何进行寻址呢?

因此,IP地址可分为两种意义:

  • 网络号:负责标识该IP地址是属于哪个子网的。
  • 主机号:负责标识同一子网下的不同主机。

IP地址配合子网掩码来计算网络号与主机号。

在说如何计算网络号与主机号之前,先来了解一下子网掩码。比如说,10.100.122.0/24,IP地址后面的/24代表子网掩码1的个数。也就是 [11111111-11111111-11111111-00000000],转换为十进制子网掩码就是255.255.255.0

了解子网掩码是什么之后,再来看如何计算网络号与主机号。将IP地址与子网掩码进行按位与运算得到网络号。将子网掩码取反后与IP地址进行按位与运算,就可以得到主机号。

网络层在寻址过程中,先去匹配相同的网络号(找到同一个子网),然后再去找主机。

IP协议处理方便寻址,还有一个重要作用是路由,在实际中,两台设备并不是使用一个网线连接的,而是通过网关,路由器,交换机等设备连接起来的,那么就会形成很多条网络路径,当数据包到达一个网络节点之后,就需要通过路由算法决定下一步走哪个网络路径。

IP协议中寻址是告诉我们应该去哪里,路由则是根据目的地选择路径。

网络接口层

为网络层提供链路级别传输的服务,负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用Mac地址来标识网络上的设备。

生成IP报头之后,接下来要将数据传输给网络接口层,在IP报头之前再加上Mac报头,并封装成数据帧发送到网络上。

  • MTU:一个网络包的最大长度,以太网中一般是1500字节。
  • MSS:除去TCP与IP头部之后,一个网络包所能容纳的TCP数据的最大长度。

总结

网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。