ARP协议

简介:

将IP地址解析为以太网MAC地址(物理地址)的协议。ARP协议有‘IP,MAC’映射关系表,生存时间20分钟

通过arp -a查看

工作流程:

1、在局域网发送包含IP地址的广播数据报,请求MAC地址

2、局域网内所有主机均会接收并处理报文;符合IP的主机处理请求,其余丢弃报文

3、验证成功返回ARP单播数据报,包含自己的IP和MAC地址

ARP报文格式

image-20210810141143977

硬件类型: 16位字段,用来定义运行ARP的网络类型。每个局域网基于其类型被指派一个整数。例如:以太网的类型为1。ARP可用在任何物理网络上。
协议类型: 16位字段,用来定义使用的协议。例如:对IPv4协议这个字段是0800。ARP可用于任何高层协议
硬件长度: 8位字段,用来定义物理地址的长度,以字节为单位。例如:对于以太网的值为6。
协议长度: 8位字段,用来定义逻辑地址的长度,以字节为单位。例如:对于IPv4协议的值为4。
操作码: 16位字段,用来定义报文的类型。已定义的分组类型有两种:ARP请求(1),ARP响应(2)。
源硬件地址: 这是一个可变长度字段,用来定义发送方的物理地址。例如:对于以太网这个字段的长度是6字节。
源逻辑地址: 这是一个可变长度字段,用来定义发送方的逻辑(IP)地址。例如:对于IP协议这个字段的长度是4字节。
目的硬件地址: 这是一个可变长度字段,用来定义目标的物理地址,例如,对以太网来说这个字段位6字节。对于ARP请求报文,这个字段为全0,因为发送方并不知道目标的硬件地址。
目的逻辑地址: 这是一个可变长度字段,用来定义目标的逻辑(IP)地址,对于IPv4协议这个字段的长度为4个字节。

IP协议

简介:

TCP/IP协议核心协议。规定了IP数据报文

IP报文格式

image-20210810141201591

版本: 包含IP数据报的版本号:ipv4为4,ipv6为6
首部长度: 其中保存的是整个首部中的“32位字”的数量。
这个字段正常的值为: 5(假设“可选字段长度为0”)
该字段最大值为: 15(可选字段长度全满加上原有字段)
区分服务: image-20210810141226454
优先级(3位)和数据链路层的QoS机制有关,定义了8个服务级别。当Qos选择了某种服务模型后,优先级越高,字段越优先传输。 D、T、R分别表示延时、吞吐量、可靠性。当这些值都为1时,分别表示低延时、高吞吐量、高可靠性。
ECN: 用于为数据报标记“拥塞标识符”。 当一个带有ECN标记的分组发送后,如果接收端“持续拥塞”且“具有感知ECN的能力”(如TCP),那么接收端会通知发送端降低发送速度。
总长度: 该字段指的是IPv4数据报的总长度(以字节为单位)。 通过该字段和“首部长度”字段,我们可以推测出ip数据报中“数据部分”从哪开始以及长度。
标识、标志、分偏移: 该字段帮助标识由IPv4主机发送的数据报。 这个字段对实现分片很重要,大多数数据链路层不支持过长的ip数据报,所以要把ip数据报分片,每一片都是一个独立的ipv4数据报。 发送主机每次发送数据报都讲一个“内部计数器”加1,然后将数值复制“标识”字段中。
生存时间: 该字段用于设置一个“数据报可经过的路由器数量”的上限。 发送方在初始发送时设定某个值(建议为64,、128或255),每台路由器再转发时都将其减一,当字段达到0时,该数据报被丢弃,并使用一个ICMP消息通知发送方。
协议: 包含一个数字,该数字对应一个“有效载荷部分的数据类型”。比如17代表UDP,6代表TCP。
首部校验和: 该字段“仅计算”IPv4首部。也就是说只“校验”首部。并不检查数据报的“数据部分”。 首先将“首部校验和”设置为0,。 然后对首部(整个首部是一个16位字的“序列”)计算16位二进制反码和。该值被存储在首部校验和字段中。 当接收方接收到数据报后,也对其首部进行校验计算,如果结果与“首部校验和”的值不同,就丢弃收到的数据报。
可选字段: IP支持很多可选选项。 如果选项存在的话,它在IPv4分组中紧跟在基本IPv4头部之后。

ICMP协议

简介:

IPV4协议簇中的一个子协议,用于在IP主机、路由器之间传递控制消息。如网络通不通、主机是否可达、路由是否可用等网络本身消息。

ICMP报文格式

image-20210810144029664

类型: 占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。
代码: 占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。
校验和: 占2个字节,包括数据在内的整个ICMP数据包的检验和,以检验报文在传输过程中是否出现了差错;其计算方法和IP头部检验和的计算方法一样的。
标识: 占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。
序列号: 每一个ICMP回显报文都有一个序列号且是递增的
数据: 表示是一个32字节的数据

ICMP报文的前4个字节是统一的格式,共有三个字段:即类型,代码和检验和。8位类型和8位代码字段一起决定了ICMP报文的类型。类型8,代码0:表示回显请求(ping请求)。类型0,代码0:表示回显应答(ping应答)。类型11,代码0:超时。

类型(十进制) 内容
0 回送应答
3 目标不可达
4 原点抑制
5 重定向或改变路由
8 回送请求
9 路由器公告
10 路由器请求
11 超时
17 地址子网请求
18 地址子网应答

TCP协议

简介:

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议;是TCP/IP协议体系中最主要的传输层协议。

TCP报文格式

image-20210810144358154

源、目标端口号字段: 占16比特。
TCP协议通过使用”端口”来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。在服务器端,每种服务在”众所周知的端口”(Well-Know Port)为用户提供服务。
顺序号字段: 占32比特。
用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
确认号字段: 占32比特。
只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。
头部长度字段: 占4比特。
给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。
标志位字段(U、A、P、R、S、F): 占6比特。
各比特的含义如下:
URG: 紧急指针(urgent pointer)有效。
ACK: 为1时,确认序号有效。
PSH: 为1时,接收方应该尽快将这个报文段交给应用层。
RST: 为1时,重建连接。
SYN: 为1时,同步程序,发起一个连接。
FIN: 为1时,发送端完成任务,释放一个连接。
窗口大小字段: 占16比特。
此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。
TCP校验和字段: 占16比特。
对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。
紧急指针字段: 占16比特。
它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
选项字段: 占32比特。
可能包括”窗口扩大因子”、”时间戳”等选项。

TCP三握手(建立连接)

第一次握手:

客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

第二次握手:

服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手.

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

image-20210810144955465

TCP四挥手(释放连接)

第一次挥手:A数据传输完毕需要断开连接,A的应用进程向其TCP发出连接释放报文段(FIN = 1,序号seq = u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待B的确认。

第二次挥手:B收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关闭状态,A到B的连接释放。而A收到B的确认后,进入FIN-WAIT-2状态,等待B发出的连接释放报文段。

第三次挥手:当B数据传输完毕后,B发出连接释放报文段(FIN = 1,ACK = 1,序号seq = w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A 的最后确认。

第四次挥手:A收到B的连接释放报文段后,对此发出确认报文段(ACK = 1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSE状态。

image-20210810145016807

UDP协议

简介:

无连接、无拥塞控制、尽最大努力交付、面向报文的传输层协议。

UDP报文格式

image-20210810145032536

源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
目的端口: 目的端口号,在终点交付报文的时候需要用到。
长度: UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
校验和: 检测UDP数据报在传输中是否有错,有错则丢弃。
该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0. 当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。 如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。

DNS协议

简介:

将域名解析到IP地址的一种协议。基于UDP和TCP协议,端口号为53,用户到服务器采用UDP,DNS服务器通信采用TCP。

域名结构

image-20210810145101745

递归查询:客户机向本地DNS服务器查询发起的为递归查询。

迭代查询:本地NDS服务器与跟等其他DNS服务器的解析过程。

DHCP协议

简介:

动态分配IP地址,提供安全、可靠、简单的TCP/IP网络配置。协议端口:67(收)、68(发)

DHCP原理

1、客户机发送DHCP Discovery广播包,请求IP地址(包含客户机的MAC地址)

2、服务器响应DHCP Offer广播包,提供IP地址(无子网掩码、网关等参数)

3、客户机发送DHCP Request广播包,确认IP

4、服务器发送DHCP ACK广播包,确定租约、提供网卡详细参数、IP、掩码、网关、DNS、租期等

DHCP续约:

租期50%过后,客户机再次发送DHCP Request包进行续约,付过服务器无响应则继续使用;

租期87.5%租期过后,再次发送DHCP Request包进行续约,如果无响应则释放IP地址。

之后,重新发送DHCP Discovery广播包来获取IP地址,当无任何服务器响应时,自动分配169.254.x.x/16的无效IP,用于临时的内网通信

命令 说明
ipconfig /release 释放IP
ipconfig /renew 重新获取IP