文章目录
前言:协议分层
图是TCP/IP协议分层图,注意,虽然ARP和RARP协议都划分在链路层,实际上IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧;同样的,ICMP和IGMP协议虽然划分在网络层,实际它们都需要IP协议来封装成数据报。
图1中没有画出的物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。简单来说物理层都是硬件部分。
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步、冲突检测、数据差错校验等工作,现在我们平时接触到的基本是以太网。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式可能不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
网络层则主要是经常提及的IP协议,IP协议不保证数据传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。
传输层则是TCP和UDP协议,TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流。UDP协议不面向连接,也不保证可靠性。
应用层则是我们自己的应用程序。而在应用程序里面发送的数据,在网络上则不仅仅是那些数据本身,还有各个协议头部,数据包的封装过程如图二所示。各层协议头部和内容在接下来会通过一个例子来分析。
TCP/IP协议
计算机为了联网,就必须规定通信协议,早期都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容,这就好比一群人有的说英语,有的说中文