ARP协议
简介:
将IP地址解析为以太网MAC地址(物理地址)的协议。ARP协议有‘IP,MAC’映射关系表,生存时间20分钟
通过arp -a查看
工作流程:
1、在局域网发送包含IP地址的广播数据报,请求MAC地址
2、局域网内所有主机均会接收并处理报文;符合IP的主机处理请求,其余丢弃报文
3、验证成功返回ARP单播数据报,包含自己的IP和MAC地址
ARP报文格式
硬件类型: | 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报文格式
版本: | 包含IP数据报的版本号:ipv4为4,ipv6为6 |
首部长度: | 其中保存的是整个首部中的“32位字”的数量。 |
这个字段正常的值为: | 5(假设“可选字段长度为0”) |
该字段最大值为: | 15(可选字段长度全满加上原有字段) |
区分服务: | ![]() 优先级(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报文格式
类型: | 占一字节,标识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报文格式
源、目标端口号字段: | 占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
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状态。
UDP协议
简介:
无连接、无拥塞控制、尽最大努力交付、面向报文的传输层协议。
UDP报文格式
源端口: | 源端口号,需要对方回信时选用,不需要时全部置0. |
目的端口: | 目的端口号,在终点交付报文的时候需要用到。 |
长度: | UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部) |
校验和: | 检测UDP数据报在传输中是否有错,有错则丢弃。 该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0. 当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。 如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。 |
DNS协议
简介:
将域名解析到IP地址的一种协议。基于UDP和TCP协议,端口号为53,用户到服务器采用UDP,DNS服务器通信采用TCP。
域名结构
递归查询:客户机向本地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 |