首先我们用一张图片来描述这个看似复杂的数据传输过程
TCP/IP四层协议族
TCP协议:为应用层提供安全的、面向连接和基于流的服务,TCP使用超时重传,数据确认方式来传输数据,因此TCP协议是安全的;它会把数据逐字节写入数据流,接收端也会逐字节的接收数据流,所以它的速度是相对来说慢一些。
UDP协议:与TCP完全相反,为应用层提供不可靠的、无连接和基于数据报的服务。它在传输过程中不保证数据的丢失,接收端因数据错误而丢弃,只是负责告诉发送端传输失败,所以使用UDP发送端通常要注意处理数据丢失、超时重传问题。UDP传输数据以数据报形式,接收端可以一次性读取最小单位的数据报,所以它的速度是较快的。
OSPF路由协议:计算出最短路由,是用于路由之间的通信,告知各自路由的信息。
ICMP因特网控制报文协议:它是IP协议的重要补充,用于测试网络。因此可以看出ping是直接到达网络层ICMP,用于测试服务器网络是否连接。
ARP、RARP地址解析协议:他们实现了IP地址和物理地址之间的转换。
ARP作用:网络层是用ip地址通过ARP转换为物理地址寻找服务器,数据链层则是通过ARP转换为IP地址来寻找网络层,从而使用数据链层的服务。
数据传输过程
应用层->传输层->网络层->数据链层,这个过程数据传递的方式是封装。
封装:应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装。封装数据在到达数据链层后经过封装后称为帧,帧是数据链层最终传送的字节序列。
封装.png
数据链层->网络层->传输层->应用层,这个过程传递的方式是分用
分用:当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用。那么帧在传递过程中如TCP、UDP、ICMP这些都是使用IP协议的要如何区分?它是通过其头部IP数据报中的端口来区分的,因此我们的服务都会带上端口号,端口号用来分用过程中准确的传递数据。
分用.png