协议

网络协议简称协议,是通信计算机双方必须共同遵循的一组约定。包括如何建立连接、怎样互相识别等。只要遵守这个约定,计算机之间才能互相通信交流。

三要素:语法、语义、时序

为了使数据再网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现在网络上传输的数据包的格式

协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。

常见的协议:

应用层:FTP(文件传输协议)、HTTP(超文本传输协议)、NFS(网络文件系统)

传输层:TCP(传输控制协议)、UDP(用户数据报协议)

网络层:IP(因特网互联协议)、ICMP(因特网控制协议)、IGMP(因特网组管理协议)

网络接口层:ARP(地址解析协议)、RARP(反向地址解析协议)

以太网协议

【网络编程】基础知识(协议、以太网协议、ARR协议)_IP

其中目的地址和源地址是指网卡的硬件地址(MAC地址),长度48位,是在出厂时固化的。可以通过ifconfig命令查看。类型(也就是数据中是哪种协议)有三种值,分别对应IP、ARP、RARP。帧尾是CRC校验码。

类型:0x800表示IP、Ox806表示ARP、0x835表示 RARP

ARP协议

    在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号(提前告知的,在程序中包含的),却不知道目的主机的硬件地址,而数据包首先被网卡接受到再去处理上层协议,如果接受到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用(也就是通过ip地址查找mac地址)。

    每台主机的内核中都维护着一个ARP缓存表,源主机首先在主机的ARP表中查找目的主机的硬件地址,如果找到了就将数据包发送给对应的目的主机。如果没有,则源主机将会用一个以太网协议封装好的ARP协议通过数据链路层广播一个ARP请求到本地网段(APP协议的目的端以太网(硬件)地址填00:00:00:00:00:00,以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)。目的主机接受到广播的ARP请求,发现其中的IP地址与本机的相符,则发送一个ARP应答数据包给源主机,并更新自己的ARP缓存表,将自己的硬件地址填写在应答包中。

请求ARP是ip类型,以太网是ARP类型;应答ip,ARP

    每台主机都维护着一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项过期时间一般为20分钟。

【网络编程】基础知识(协议、以太网协议、ARR协议)_缓存_02

当是广播时:目的端以太网地址 FF:FF:FF:FF:FF:FF