一、TCP/IP协议族
1、数据链路层
ARP协议和RARP协议,它们实现了IP地址和机器物理地址之间的相互转化
-
ARP协议(Address Resolve Protocol,地址解析协议)
-
RARP协议(Reverse Address Resolve Protocol,逆地址解析协议)
作用:网络层是用IP地址寻址一台机器,而数据链路层是用物理地址寻址一台机器,因此网络层必须先将目标机器的IP地址转化成其物理地址,这就是ARP协议的用途。RARP协议仅用于网络上某些无盘工作站。因为缺乏储存设备,无盘工作站无法记住自己的IP地址。但是它们可以利用网卡上的物理地址来向网络管理者查询自身的IP地址。运行RARP服务的网络管理者通常存有该网络上有所及其得物理地址到IP地址映射。
2、网络层
ip协议和ICMP协议,它们实现了数据包的选路和转发。网络层的任务就是选择这些中间节点,已确定两台主机之间通信路径。
3、传输层
TCP协议、UDP协议和SCTP协议
传输层为两台主机上的应用程序提供端对端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。
- TCP协议,传输控制协议
- UDP协议,用户数据报协议
- SCTP协议,流控制传输协议
4、应用层
应用层在用户空间实现,而数据链路层、网络层和传输层处理网络通信细节,这部分必须稳定有高效,因此它们都在内核空间中实现。
4.1、传输层和网络层区别
传输层为两台主机上的应用程序提供端对端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程
4.2、TCP协议的特点
为应用层提供可靠的、面向连接和基于流的服务。TCP协议通信使用超时重传、数据确定等待来确保数据包被正确地发送至目的端。因此TCP服务是可靠的。
使用TCP协议通信的双方必须先建立TCP连接,并在内核中为连接维持一些必要的数据结构,比如连接的状态、读写缓冲区以及诸多定时器等。当通信结束时,双方必须关闭连接已释放这些内核数据。TCP服务时给予流的。给予流的数据没有边界限制,它源源不断地从通信的一端流入另一端。发送端可以逐个字节地向数据流写入数据,接受端也可以逐个字节地将它们读出
4.3、UDP协议的特点
为应用层提供不可靠、无连接和基于据包的服务。
UDP协议无法保证数据从发送端正确的地传送到目的端。如果数据在中途丢失,或者目的端数据校验发现数据错误误将其丢弃,则UDP协议知识简单的通知应用程序发送失败,因此,使用UDP协议的应用程序通常要自己处理数据确认、超时重传等逻辑。UDP协议是无连接的,即通信双方不保持一个长久的联系,因此应用程序每一次发送数据都要指定接收方的地址。每一个UDP数据都有一个长度,就接受端必须以该长度为最小单位将其所有内容一次性读出,否则数据将被截断。
二、封装和分用
1、封装
上层协议是如何使用下层协议提供的服务的呢?其实通过封装实现的。应用程序数据在发送到无力网络上之前,将沿着协议栈从上往下依次传递。每一层协议都将在上册数据的基础上加上自己的头信息。
- 经过TCP封装后的数据称TCP报文段,经过UDP封装后的数据称为UDP数据包。
- 经过IP封装后的数据称为IP数据报。
- 经过数据链路层封装后的数据称帧
2、分用
当帧到达目的的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头数据,以获取所需的信息,并最终将处理后的帧交给目的应用程序。