目录
一、网络层协议介绍
1.网络层的功能
进行逻辑地址(IP地址)寻址和路由选择
2.IP数据包格式
IP头部的组成:
*源IP地址 *目的IP地址 *IP版本(IPv4|IPv6) *IP头部长度(最短20字节,可根据可选项变长) 优先级与服务质量 总长度(包含IP头部和上层数据) 标识符 标志 段偏移量 *TTL(每经过一个路由器TTL减1,为0时会被丢弃) *协议号(UDP为17 TCP为6) 头部校验和 可选项
3.ICMP协议介绍
(1)概述
ICMP 互联网控制报文协议
工作在 网络层
是一个错误侦测与回馈机制
发送心跳消息(ping请求 pong响应)来探测节点间的网络连通信
(2)ICMP协议的封装
4.ARP协议介绍
(1)概述
ARP 地址解析协议
工作在网络层
用来通过IP地址解析出MAC地址
*(2) IP地址解析为MAC地址的工作原理
1)PC1发送数据给PC2前,会先查询本地的ARP缓存表有没有目标主机的IP与MAC的记录,如果有则直接单播通信
2)如果ARP缓存表没有相关记录,则会通过广播的方式发送ARP请求消息(此时ARP请求消息的目的MAC地址为广播地址FF-FF-FF-FF-FF-FF)
3)交换机收到ARP请求消息后会进行广播泛洪,只要拥有对应IP的主机会接收ARP请求消息,其它主机则会丢弃
4)目标主机会先根据ARP消息将源主机的IP与MAC地址记录到自己的ARP缓存表中,再通过单播的方式回复ARP应答消息,交换机会根据MAC地址表进行转发给源主机
5)PC1收到ARP应答消息后,会将PC2的IP与MAC地址记录到ARP缓存表中,此后即可通过单播发送数据给PC2
(3)ARP相关命令
arp -a #查看arp缓存表
arp -d <IP> #删除arp缓存记录
arp -s <IP> <MAC> #静态绑定arp缓存记录
动态学习到的arp缓存的默认老化时间为120s
5.ARP攻击原理
二、传输层协议介绍
1.传输层的功能
建立主机端到端连接
2.TCP/UDP协议介绍
TCP:面向连接的网络协议;是可靠传输,支持流量控制和拥塞控制;首部最小20字节,最大60字节;只能一对一通信;面向字节流的
UDP:面向无连接的网络协议;是不可靠传输,但是传输效率更高;首部仅8字节;支持一对一,一对多,多对一和多对多交互通信;面向报文的
3.TCP报文格式
TCP头部组成:*源端口号 *目的端口号 序号 确认号 头部长度(可根据选项变长,20~60字节) *控制位(URG ACK PSH RST SYN FIN) 滑动窗口(控制流量大小) 校验和 紧急指针 选项
SYN:同步位,SYN=1 表示连接请求报文
ACK:确认位,ACK=1 确认号才生效
FIN:断开位,FIN=1 表示断开连接
RST:重置位,RST=1 重新建立连接
PSH:急迫位/推送位,PSH=1 尽快地把数据送达应用层
URG:紧急位,URG=1 表示紧急数据,配合紧急指针才有效
*4.TCP三次握手
建立连接(三次握手):
第一次:客户向服务器发送连接请求段,建立连接请求控制段(SYN=1),表示传输的报文段的第一个数据字节的序列号是x,此序列号代表整个报文段的序号(seq=x);客户端进入 SYN_SEND (同步发送状态);
第二次:服务器发回确认报文段,同意建立新连接的确认段(SYN=1),确认序号字段有效(ACK=1),服务器告诉客户端报文段序号是y(seq=y),表示服务器已经收到客户端序号为x的报文段,准备接受客户端序列号为x+1的报文段(ack_seq=x+1);服务器由LISTEN进入SYN_RCVD (同步收到状态);
第三次:客户对服务器的同一连接进行确认.确认序号字段有效(ACK=1),客户此次的报文段的序列号是x+1(seq=x+1),客户期望接受服务器序列号为y+1的报文段(ack_seq=y+1);当客户发送ack时,客户端进入ESTABLISHED 状态;当服务收到客户发送的ack后,也进入ESTABLISHED状态;第三次握手可携带数据;
*5.TCP四次挥手
释放连接(四次挥手)
第一次:客户向服务器发送释放连接报文段,发送端数据发送完毕,请求释放连接(FIN=1),传输的第一个数据字节的序号是x(seq=x);客户端状态由ESTABLISHED进入FIN_WAIT_1(终止等待1状态);
第二次:服务器向客户发送确认段,确认字号段有效(ACK=1),服务器传输的数据序号是y(seq=y),服务器期望接收客户数据序号为x+1(ack_seq=x+1);服务器状态由ESTABLISHED进入CLOSE_WAIT(关闭等待);客户端收到ACK段后,由FIN_WAIT_1进入FIN_WAIT_2;
第三次:服务器向客户发送释放连接报文段,请求释放连接(FIN=1),确认字号段有效(ACK=1),表示服务器期望接收客户数据序号为x+1(ack_seq=x+1);表示自己传输的第一个字节序号是y+1(seq=y+1);服务器状态由CLOSE_WAIT 进入 LAST_ACK (最后确认状态);
第四次:客户向服务器发送确认段,确认字号段有效(ACK=1),表示客户传输的数据序号是x+1(seq=x+1),表示客户期望接收服务器数据序号为y+1+1(ack_seq=y+1+1);客户端状态由FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,进入CLOSED状态;服务器在收到最后一次ACK后,由LAST_ACK进入CLOSED;
6.UDP报文格式
UDP头部组成:
源端口号 目的端口号 UDP总长度(包含数据和头部) 校验和