TCP/IP网络模型

TCP/IP网络模型一共有几层?

为什么要有TCP/IP协议呢?对同一台设备的不同进程之间的通信,可以采用管道、消息队列、共享内存、信号等方式;但是,对于不同设备上的进程间的通信,就需要网络通信了,而设备是多样性的(比如手机和电脑通信),为了能兼容多种设备,就协商出一套通用的网络协议。网络协议是分层的,每一层都有各自的作用和职责。

应用层

这是我们直接接触到的最上层,我们所使用的应用程序就是在应用层实现的。当两个不同的设备需要通信的时候,就把应用数据传给下一层,也就是传输层。所以,应用层只需要专注于为用户提供应用功能,比如http,ftp等。
应用层不需要管局数据是如何传输的,这就好比我们不需要知道快递是怎么被运回去的,我们只需要交给快递员就行了。而且应用层是工作在操作系统的用户态,传输层及以下都是工作在内核态。

传输层

应用层将数据包传给传输层,传输层是为应用层提供网络支持的。
在传输层有两个传输协议,分别是TCP和UDP协议。

  • TCP全称叫传输控制协议,目前大部分应用使用的都是TCP,因为它比UDP多了很多特性,比如流量控制,超时重传,拥塞控制等,这些特性是为了保证数据包能可靠的传输给对方。
  • UDP全称叫用户数据报协议,它只负责发送数据包,不保证数据包是否能抵达对方,但它的实时性更好,传输效率也更高。在游戏开发中很多游戏都是用UDP协议来传的,但是是经过包装的可靠UDP。
  • 应用层需要传输的数据可能会非常大,如果直接传输则不好控制,因此当传输层的数据超过MSS(TCP 最大报文段长度) 时,就要将数据包分块,这样即使中途有一个分块丢失或损坏,只需要重新发送这个丢失的分块就行了。在TCP协议中,我们把每个分块成为一个TCP段。
  • 当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或在传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用的。
网络层
  • 传输层只需要服务好应用,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信。因此,实际的传输功能都是交给网络层做的。
  • 网络层最常用的是IP协议,IP协议会将传输层的报文作为数据部分,再加上IP包头组装成IP报文,如果IP报文的大小超过MTU(以太网中一般为 1500 字节)就会再次进行分片,得到即将发送到网络上的IP报文。因此,一个报文的组成是:IP头部+TCP(UDP)头部+数据块。
  • 网络层负责将报文从一个设备传输到另一个设备,IP协议的寻址能力的作用是告诉我们去往下一个目的地该朝哪个方向走,而路由能力则是根据下一个目的地选择路径。即寻址像导航,路由则是操作方向盘。
网络接口层
  • 生成了IP头部之后,接下来要交给网络接口层,在IP头部的前面加上MAC头部,并封装成数据帧发送到网络上。
  • 以太网就是一种在局域网中,把附近的设备连接起来,使他们之间可以进行通讯的技术。
  • IP头部中的接收方IP地址表示网络包的目的地,通过这个地址我们就可以判断要将包发到哪里,但在以太网中,就需要用MAC地址进行匹配。同时,MAC头部包含了接收方和发送方的MAC地址等信息,我们可以通过ARP协议来获取对方的MAC地址。
  • 因此,网络接口层主要为网络层提供链路级别的传输服务,负责在以太网,WIFI等这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标识网络上的设备。
posted @ 2022-08-11 18:40  Niwde  阅读(53)  评论(0编辑  收藏  举报