1. TCP/IP协议族体系结构:
应用层:ping, telnet, OSPF, DNS
传输层:TCP, UDP
网络层:ICMP, IP (使用IP寻址)
数据链路层:ARP, RARP (使用物理地址寻址)
数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。网络驱动程序隐藏了不同物理网络的电气特性,为上层提供统一的接口。
ARP地址解析协议,RARP逆地址解析协议。实现了IP地址和机器物理地址之间的相互转换。
网络层实现数据包的选路和转发。网络上的主机不是直接相连的,而是通过多个中间节点,网络层的任务就是选择这些中间节点,以确定两台主机之间的通信路径。
IP协议通过数据包的目的IP地址来决定如何投递它,如果不能直接发给目标主机,那么IP协议就为它寻找一个合适的下一跳路由器。
传输层为两台主机上的应用层序提供端到端的通信,只关心通信的起始端和目的端。
传输层协议有:TCP协议,UDP协议和SCTP协议。
TCP协议为应用层提供可靠的、面向连接的和基于流的服务。使用超时重传、数据确认等方式来确保数据包被正确的发送至目的端。
使用TCP协议必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态、读写缓冲区,以及诸多定时器等。
UDP协议为应用层提供不可靠、无连接和基于数据报的服务。
应用层服务处理应用程序的逻辑,在用户空间实现。数据链路层、网络层和传输层负责网络通信细节,在内核空间中实现。
1.2 封装
应用程序数据在发送到物理网络之前,将沿着协议栈从上往下传递,每层协议都将在上层数据的基础上加上自己的头部信息。
经过TCP封装的称为TCP报文报;
经过IP封装后的数据称为IP数据报;
经过数据链路层封装的数据称为帧(frame)。
帧的最大传输单元MTU,即帧最多能携带多少上层协议数据。帧才是最终在物理网络上传送的字节序列。
1.3 分用
当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。
因为IP协议、ARP协议和RARP协议都使用帧传输数据,所以帧的头部需要提供字段来区分它们。以太网帧使用2字节的类型字段来标识上层协议(0x800为IP数据报;0x806为ARP请求,0x835为RARP请求)
同样,因为ICMP协议,TCP协议和UDP协议使用IP协议,所以IP数据报的头部采用16位的协议字段来区分它们。
TCP报文段和UDP报文段则通过其头部中的16位端口号字段来区分上层应用程序。(DNS协议端口为53,HTTP协议对应80)
一个携带ARP请求/应答报文的以太网帧长度为46字节。