网络中一些很常见的协议,以及他们对应的报文格式介绍
以太网帧结构
注:
当 LLC-PDU 中携带的是数据的时候,那么左侧的 2 字节表示的就是长度;当然,以太帧可以携带其他协议,当 LLC-PDU 中是协议的时候,2 字节就代表了类型。
CRC 为校验码。
以太网帧最小为 64 字节,数据区取左侧 46 字节;最长为 1518 字节。
接下来详细介绍一下以太网帧的 2 字节类型字段因为后面的数据区,是 46--1500 字节,所以如果 2 字节的长度/类型字段大于 5DC(1500),那么这个域表示的是类型。(如:0800 表示 IP 协议,0806 表示 ARP 协议)==这个 1500 字节,也就是我们以后会提到的以太网的 MTU(最大传输单元),也就是因为这个我们在 ip 数据报哪里经常会听到一个 IP 数据报分段的概念==
如果一个以太网帧携带的是 IP 数据帧的话,它的帧格式是这样的:
IP 报文格式
这个 IP 报文就是填在,上面以太网帧的数据区字段 1500 字节的东东。
注:
在 IPV4 中首部最先的可选字段是不使用的,所以 IPV4 的首部为 20 字节。(巧了,这也就是我们经常会听到的以 1480 字节为最大一段,分割 IP 报文,1500-20 呗)
片偏移:比如,一个长度为 4000 字节的 ip 报文,到达路由器。这是超过了链路层的 MTU,需要进行分片,4000 字节中,20 字节为包头,3980 字节为数据,需要分成 3 个 ip 片(链路层 MTU 为 1500),那么第一个分片的片偏移就是 0,表示该分片在 3980 的第 0 位开始,第 1479 位结束。第二个 ip 片的片偏移为 185(1480/8),表示该分片开始的位置在原来 ip 的第 1480 位,结束在 2959。<font color="red">2960-1480=1480,所以每次都是最大为 1480,因为每个数据报都有头部呀</font>第三片的片偏移为 370(2960/8),表示开始的时候是 2960 位,结束的时候在 3979 位。
协议:数据报进入上层传输层,就是通过这个字段来指出应将数据部分交给哪一个进程。
首部校验和的计算方法
ARP 协议
概念:地址解析协议,即 ARP(Address Resolution Protocol),是<font color="red">根据 IP 地址获取物理地址(MAC)</font>的一个 TCP/IP 协议。主机发送信息时将包含目标 IP 地址的 ARP 请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该 IP 地址和物理地址存入本机 ARP 缓存中并保留一定时间,下次请求时直接查询 ARP 缓存以节约资源。工作原理 ARP 协议的请求包是以广播的方式发送的。网段中的所有主机都会接受到这个包,如果一个主机的 IP 地址和 ARP 请求中的目的 IP 地址相同,该主机会对这个请求数据包做出与 ARP 应答,将其 MAC 地址发送给源端。
命令对主机的 ARP 缓存表操作
具体的 ARP 分组格式
<font color="red">使用 ARP 应当注意的问题</font>
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的网关路由器的硬件地址,然后把分组发送给这个网关路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。<a href="https://blog.csdn.net/wxnshuai/article/details/108072605">ARP 协议的工作过程可以看这篇文章理解一下</a>
ICMP 协议
ICMP(Internet Control Message Protocol)Internet 控制报文协议。它是 TCP/IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP 数据包封装在 IP 数据报里传输
具体的 ICMP 报文格式:
ICMP 有两种报文:
差错报文
查询报文
UDP 用户数据包协议
<a href="https://blog.csdn.net/wxnshuai/article/details/107826812">TCP 与 UDP 的区别比较可以看这篇文章 </a>
UDP 采用非连接的方式提供网络应用层的事务处理,UDP 不提供可靠性,也就是说,UDP 协议不提供端到端的确认和重传功能,它不保证数据包一定能送达目的地,因此称为不可靠协议。
UDP 协议是封装在 IP 数据包里中
UDP 报文格式
UDP 的校验和有一个特殊之处:
UDP 在计算校验和时,包含一个 12 字节的伪报头。
伪报头包含 IP 报头的源 IP 和目的 IP,目的是让 UDP 检测数据确定到达正确的目的端。
伪报头不参与传输的。
DNS
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。DNS 是一种可以将域名和 IP 地址相互映射的以层次结构分布的数据库系统。DNS 协议将域名转换为 IP 地址(也可以将 IP 地址转换为相应的域名地址),DNS 使用 UDP 端口 53。DNS 定义了两种报文 ,一种为查询报文;另一种是对查询报文的响应,称为响应报文。
TCP 协议
TCP 协议的报文格式(也是封装在 IP 数据报里的)
TCP 首部介绍:
TCP 三次握手
第一次第一次握手:建立连接时,客户端发送 syn 包(seq=j)到服务器,并进入 SYN_SENT 状态,等待服务器确认;SYN:同步序列编号(SynchronizeSequence Numbers)。
第二次第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(seq=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。
第三次第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED(TCP 连接成功)状态,完成三次握手。
FTP 协议
文件传输协议(File TransferProtocol,FTP)是用于在网络上进行文件传输的一套标准协议,FTP 允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。
FTP 支持两种模式:Standard (PORT 方式,主动方式),Passive (PASV,被动方式)。
HTTP 协议
HTTP 是应用层协议,是 WWW 服务的支撑协议。
HTTP 是基于客户/服务器模式,且面向连接的。典型的 HTTP 事务处理有如下的过程:
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
HTTP 是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
HTTP 报文由从客户机到服务器的请求和从服务器到客户机的响应构成。
请求报文格式:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
应答报文格式:状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
SMTP 协议
SMTP 是一种提供可靠且有效的电子邮件传输的协议。SMTP 是建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
SMTP 协议的工作过程可分为如下 3 个过程:(1)建立连接 (2)邮件传送 (3)连接释放
POP 协议
POP 的全称是 Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用 TCP 的 110 端口。常用的是第三版 ,所以简称为 POP3。
SSH 协议
SSH 是英文 Secure Shell 的简写形式。通过使用 SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止 DNS 欺骗和 IP 欺骗。使用 SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替 Telnet,又可以为 FTP、Pop、甚至为 PPP 提供一个安全的"通道"。
版权声明: 本文为 InfoQ 作者【阿柠xn】的原创文章。
原文链接:【http://xie.infoq.cn/article/90ea5cad771ed532fc849fce6】。文章转载请联系作者。
评论