TCP/IP网络传输模型及协议


前言

TCP/IP模型由OSI七层模型演变而来:
国际标准化组织 1984年提出了模型标准,简称 OSI(Open Systems Interconnection Model)七层模型:

  1. 物理层(Physics) :提供机械、电气、功能和过程特性(网卡、网线、双绞线、同轴电缆、中继器)
  2. 数据链路层(DataLink): 负责无错传输数据,确认帧、发错重传等(交换机)
  3. 网络层(Network): 处理网络间路由,确保数据及时传送(路由器)
  4. 传输层(Transimission):提供建立、维护和取消传输连接功能,负责可靠地传输数据(PC)
  5. 会话层(Session) 提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制
  6. 表示层(Presentation) :提供格式化的表示和转换数据服务,如加密和压缩
  7. 应用层(Application) :提供网络与用户应用软件之间的接口服务

TCP/IP 模型将 OSI 模型由七层简化为五层(一开始为四层,不包括物理层),应用层、表示层、会话层统一为应用层
OSI


一、TCP/IP协议

TCP/IP协议被称为传输控制协议/互联网协议,是一个非常复杂的协议族。
(1)物理层
IEEE 802.1A, IEEE 802.2到IEEE 802.11

(2)数据链路层:实现了网卡接口的网络驱动程序
① MAC:媒体接入控制,主要功能是调度,把逻辑信道映射到传输信道,负责根据逻辑信道的瞬时源速率为各个传输信道选择适当的传输格式。MAC层主要有3类逻辑实体,第一类是MAC-b,负责处理广播信道数据;第二类是MAC-c,负责处理公共信道数据;第三类是MAC-d,负责处理专用信道数据。

②RLC:无线链路控制,不仅能载控制面的数据,而且也承载用户面的数据。RLC子层有三种工作模式,分别是透明模式、非确认模式和确认模式,针对不同的业务采用不同的模式。

③BMC:广播/组播控制,负责控制多播/组播业务。

④PDCP:分组数据汇聚协议,负责对IP包的报头进行压缩和解压缩,以提高空中接口无线资源的利用率。

(3)网络层:实现数据包的选址和转发。
网络层定义了网络互联也就是IP协议,主要包括IP、ARP、RARP、ICMP、IGMP。
①IP:IP协议提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。IP地址是重要概念

②ARP:地址解析协议。基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核必须知道目的端的硬件地址才能发送数据。P2P的连接是不需要ARP的。

③RARP:反向地址解析协议。允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。局域网网关路由器中存有一个表以映射MAC和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器。

④IGMP:组播协议包括组成员管理协议和组播路由协议。组成员管理协议用于管理组播组成员的加入和离开,组播路由协议负责在路由器之间交互信息来建立组播树。IGMP属于前者,是组播路由器用来维护组播组成员信息的协议,运行于主机和和组播路由器之间。IGMP 信息封装在IP报文中,其IP的协议号为2。

⑤ICMP:Internet控制报文协议。用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

⑥RIP:路由信息协议。是一种分布式的基于距离矢量的路由选择协议。

(4)传输层:为两台主机上的应用程序提供端到端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。
①TCP(Transmission Control Protocol): 一种面向连接的、可靠的、基于字节流的传输层通信协议。同时兼有流量控制、超时重传、拥塞控制等特性。

② UDP(User Datagram Protocol): 用户数据报协议,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

它只负责将数据发送往指定端口,不管成功还是失败,所以它的优点就是快,但是就不可靠,通常用于视频等大文件传输

(5)应用层:负责处理应用程序的逻辑,比如文件传输,名称查询和网络管理等。
①HTTP( Hyper Text Transfer Protocol):超文本传输协议,基于TCP,是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。

②FTP(File Transfer Protocol):文件传输协议,用于Internet上的控制文件的双向传输。同时也是一个应用程序。

③MQTT:消息队列遥测传输。

④DNS:域名服务协议,提供机器域名到IP地址的转换。(如将www.baidu.com转化成百度的IP,输入域名就直接可以进入。因为IP地址记的时候太麻烦,就像每个人都是由身份证唯一标识的,但为了好记就起了名字。DNS就是一个将姓名与身份证对应的过程)
分层

TCP/IP 协议栈中不同协议所完成的功能是不一样的, 某些协议的实现要依赖于其它协议,依据这种依赖关系,可以将协议栈分层。在上图中,低层协议为相邻的上层协议提供服务,是上层协议得以实现的基础。

二、协议层报文间的封装与拆封

组包、解包

1.发送数据

当用户发送数据时,将数据向下交给传输层,这是处于应用层的操作,应用层可以通过调用传输层的接口来编写特定的应用程序。而 TCP/IP 协议一般也会包含一些简单的应用程序如 Telnet 远程登录、FTP 文件传输、 SMTP 邮件传输协议等。传输层会在数据前面加上传输层首部(此处以 TCP 协议为例,上图的传输层首部为 TCP 首部,也可以是 UDP首部),然后向下交给网络层。同样地,网络层会在数据前面加上网络层首部(IP 首部),然后将数据向下交给链路层,链路层会对数据进行最后一次封装,即在数据前面加上链路层首部(此处使用以太网接口为例),然后将数据交给网卡。最后,网卡将数据转换成物理链路上的电平信号,数据就这样被发送到了网络中。数据的发送过程,可以概括为TCP/IP 的各层协议对数据进行封装的过程。

2.接收数据

当设备的网卡接收到某个数据包后,它会将其放置在网卡的接收缓存中,并告知TCP/IP 内核。然后 TCP/IP 内核就开始工作了,它会将数据包从接收缓存中取出,并逐层解析数据包中的协议首部信息,并最终将数据交给某个应用程序。数据的接收过程与发送过程正好相反,可以概括为 TCP/IP 的各层协议对数据进行解析的过程。
组包-拆包