网络中常见的各种协议--报文格式总结
以太网帧结构
注:
- 当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呗)
IP报文字段 | 具体作用 |
---|---|
版本 | ip报文中,版本占了4位,用来表示该协议采用的是那一个版本的ip,相同版本的ip才能进行通信。一般此处的值为4,表示ipv4 |
首部长度(头长度) | 该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。有可选部分的话就会变成24个字节 |
区分服务 (Tos服务字段) | 该字段用8位表示。该字段一般情况下不使用。 |
总长度 | 该字段表示整个ip报文的长度,单位是1字节。能表示的最大字节为2^16-1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头) |
标识 | 该字段是ip软件实现的时候自动产生的,该字段的目的不是为了接受方的按序接受而设置的,而是在ip分片以后,用来标识同一片分片的。方便ip分片的重组。 |
标志 | 该字段是与ip分片有关的。其中有三位,但只有两位是有效的,分别为MF,DF。MF标识后面是否还有分片,为1时,表示后面还有分片。DF标识是否能分片,为0表示可以分片。 |
片偏移 | 该字段是与ip分片后,相应的ip片在总的ip片的位置。该字段的单位是8字节 (下面有举例说明) |
生存时间(TTL) | ip分片每经过一个路由器该值减一,它的出现是为了防止路由环路,浪费带宽的问题。比如,该ip在R1路由器发送到R2路由器。R2路由器又发给R1路由器。防止这种循环。window系统默认为128. |
协议 | 该值标识上层的协议。占8位。其中1,标识ICMP、2标识IGMP、6标识TCP、17标识UDP、89标识OSPF。 |
校验和(首部校验和) | 该值是对整个数据包的包头进行的校验。占16位。 |
源地址和目的地址 | 标识发送ip片的源和目的ip,32位 |
可选部分 | 一般一些特殊的要求会加在这个部分。 |
注: |
- 片偏移:比如,一个长度为4000字节的ip报文,到达路由器。这是超过了链路层的MTU,需要进行分片,4000字节中,20字节为包头,3980字节为数据,需要分成3个ip片(链路层MTU为1500),那么第一个分片的片偏移就是0,表示该分片在3980的第0位开始,第1479位结束。第二个ip片的片偏移为185(1480/8),表示该分片开始的位置在原来ip的第1480位,结束在2959。2960-1480=1480,所以每次都是最大为1480,因为每个数据报都有头部呀第三片的片偏移为370(2960/8),表示开始的时候是2960位,结束的时候在3979位。
- 协议:数据报进入上层传输层,就是通过这个字段来指出应将数据部分交给哪一个进程。
首部校验和的计算方法
ARP协议
概念:
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址(MAC)的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
工作原理
ARP协议的请求包是以广播的方式发送的。网段中的所有主机都会接受到这个包,如果一个主机的IP地址和ARP请求中的目的IP地址相同,该主机会对这个请求数据包做出与ARP应答,将其MAC地址发送给源端。
命令对主机的ARP缓存表操作
命令 | 操作 |
---|---|
arp -a | 查看ARP缓存表中的内容 |
arp -d | 删除ARP表中的一行内容 |
arp -s | 手动在ARP表中指定IP地址与MAC地址的对应项 |
ARP的封装 | |
ARP报文在以太网帧里: | |
具体的ARP分组格式
使用ARP应当注意的问题
- ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
- 如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的网关路由器的硬件地址,然后把分组发送给这个网关路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
ARP协议的工作过程可以看这篇文章理解一下
ICMP协议
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP数据包封装在IP数据报里传输
具体的ICMP报文格式:
ICMP有两种报文:
- 差错报文
- 查询报文
UDP用户数据包协议
- 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字段 | 功能 |
---|---|
源端口号 | 表示发送端端口号,字段长度16位 |
目标端口号 | 表示接收端端口号,字段长度16位 |
序号 | 序列号是指发送数据的位置。每发送一次数据,就累加一次该数据字节数的大小。字段长度32位 |
确认号 | 是指期望下一次应该收到的数据的序列号。发送端接收到这个确认应答号以后就可以认为在这个序号以前的数据都已经被正常接收了。字长32位 |
首部长度 | 指出TCP报文首部含选项时的长度,没有选项时为5,字长4位 |
保留 | 该字段主要为以后扩展使用。一般设置为0. |
URG | 为1时,表示包中有需要紧急处理的数据。 |
ACK | 为为1时,确认应答的字段变为有效。TCP规定除了在最初建立连接时候的SYN包之外该位必须设置为1 |
PSH | 该位为1时,表示需要将收到的数据立刻上传给上层应用协议。PSH为0时,则不需要立即传,而是先进行缓存。 |
RST | 该位为1时,表示TCP连接出现异常,必须强制断开连接。 |
SYN | 用于建立连接。SYN为1时表示希望建立连接,并在其序列号的字段进行序列号初始值的设定。 |
FIN | 该位为1时,表示今后都不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换FIN位置为1的TCP段。(每个主机又对对方的FIN包进行确认应答以后就可以断开连接了。不过主机收到FIN设置为1的TCP段以后不必马上回复一个FIN包,而是可以等到缓冲区中的所有数据都因已成功发送而被自动删除之后再发。) |
窗口 | 用来让对方设置发送窗口的依据(告诉对方自己能接受多少数据),2字节 |
检验和 | 检验和字段检验的范围包括首部和数据这两个部分。在计算检验和是,要在TCP报文段的前面加上12字节的伪首部 |
紧急指针 | 指出在本报文段紧急数据共多少个字节(紧急数据放在本报文段数据最前面) |
TCP三次握手
- 第一次
第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize
Sequence Numbers)。 - 第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。 - 第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
FTP协议
- 文件传输协议(File Transfer
Protocol,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提供一个安全的"通道"。
- 点赞
- 收藏
- 关注作者
评论(0)