文章目录
- 一、网络层
- 1、IP数据包格式
- 2、ICMP协议
- 3、ARP协议
- 二、传输层
- 1、TCP协议
- 1.1、TCP报文段
- 1.2、TCP 三次握手
- 1.3、TCP 四次挥手
- 1.4、TCP端口号
- 2、UDP协议
一、网络层
网络层的功能
- 定义了基于IP地址的逻辑功能
- 连接不同的媒介类型
- 选择数据通过网络的最佳路径
网络层主要的媒介是路由器,同一个网络不需要路由器,不同网络就需要使用路由器,网络层的主要协议是:IP;其余四个协议:ICMP、IGMP、ARP、RARP是围绕IP展开的。
1、IP数据包格式
版本:识别是IPV4(OX40)还是IPV6,基本上是IPV4;
首部长度:不带数据的IP包头部长度;
优先级与服务类型:定义IP数据包是否优先传送;
总长度:定义IP数据包总长度是多少;
标识符:用于IP数据包的分片,给每个分片打标;
标志:标志和分片一起被用来船体信息分片之后,是否分片;
段偏移量:分片之后需要重组,根据原有的顺序排列,保证是一个完整正确的顺序传输;
TTL:Time to live,网络中生存时间,每经过一个路由器减一,减到0后数据包就被丢弃了,IP包被路由器丢弃之前允许通过的最大网段数量;
协议号:标志了上层数据,是TCP,还是UDP?
首部校验和:为了数据的传输完整,会进行一个校验,如果出错或者丢包会进行重传;
源地址:从哪发出,发送数据包的设备网络地址;
目标地址:发哪去,接收点的设备网络地址;
可选项:根据实际情况可变长,可以和IP一起使用的选项有多个。
2、ICMP协议
ICMP协议用于IP主机、路由器之间传递控制消息,这里的控制消息可以包括很多种,从TCP/IP的分层结构看ICMP属于网络层,它配合着IP数据报的提交,提高IP数据报递交的可靠性; 主要功能是发送错误消息,不用于传输数据
-
协议包含以下三点功能
- ICMP是一个“错误侦测与回馈机构”
- 是通过IP数据包封装的
- 用来发送错误和控制消息
-
ICMP协议的封装分为2部分介绍
- ICMP协议属于网络层协议
- ICMP数据的封装过程,如下图,ICMP是封装在IP数据报中进行发送的
-
协议Ping
PING命令是用来检查要到达的目标IP地址并记录结果,显示目标是否响应以及接收答复所需的时间。如果在传递到目标过程中有错误,ping 命令将显示错误消息。- Ping命令
命令的基本格式:
- Ping命令
C:\ping[-t][-l字节数][-a][-i] IP_Address| target_name
举例说明
PC>ping 192.168.1.3
Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break
From 192.168.1.3: bytes=32 seq=1 ttl=128 time=47 ms
From 192.168.1.3: bytes=32 seq=2 ttl=128 time=63 ms
From 192.168.1.3: bytes=32 seq=3 ttl=128 time=62 ms
From 192.168.1.3: bytes=32 seq=4 ttl=128 time=63 ms
From 192.168.1.3: bytes=32 seq=5 ttl=128 time=62 ms
--- 192.168.1.3 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 47/59/63 ms
-
Ping抓包对应的消息类型和编码类型:
这些是在Ping抓包的时候,没有抓到包对应的报错信息。
请求是发广播,应答是发单播。- Ping命令返回信息的含义
-t:参数会一直不停的执行Ping
-a:可以显示参数主机的名称
-l:参数可以设定Ping包的大小,ping -l 后面跟着单位参数
如下图
3、ARP协议
- 协议概述
地址解析协议,基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。主要作用于网络层IPv4中的协议。 - 工作原理
- IP地址解析为MAC地址
比如电脑PC1发送数据给PC2,查看ARP缓存没有PC2的MAC地址,那么PC1发送ARP请求消息(广播),然后所以主机就能接收到ARP请求信息,PC2回应ARP应答(单播),其他主机丢弃数据。
ARP有Rquest(请求消息)和Reply(应答消息) - 动态ARP老化时间 180s,静态没有老化时间
- IP地址解析为MAC地址
问:pc1需要给pc2发送数据原理?其中设置mac地址:pc1为11,pc2为22
答:pc1会发数据给pc2,首先查看arp缓存表,源ip10.0.0.1,源mac11,向pc2发送广播,这时候pc2接收到会回应pc1并且回应,这时候源ARP地址就10.0.0.2,源Mac地址变成22,其他无关的主机就会丢弃数据。
- ARP的报文结构
以太网首部,指的帧头的MAC目的地址和源地址,是ARP的帧头
帧类型:ARP,0P:0是请求,1是回应。 - ARP相关命令**
- arp-a 查看ARP缓存表
- arp-d 清除ARP缓存
- ARP绑定
- ARP原理
需求分析:
对等网的环境
PC1和PC2第一次通信
实现步骤:
- 使用ipconfing/all查看PC1和PC2的MAC地址
- 用“arp-a”查看ARP缓存
- 在PC1上ping PC2后,再用“arp-a”查看ARP缓存
- ARP攻击原理
- 欺骗其他所有计算机
- 欺骗被攻击计算机 (这两点主要是让你上不了网)
- ARP欺骗网关,如下图(ARP没有检查的机制,所以来信息就会被记录上,窃取信息)。※ARP欺骗主机
※利用ARP欺骗管理网络
通过长角牛网络监控机软件管理网络
- ARP的故障处理
使用ARP防火墙,自动抵御ARP欺骗和攻击- 在主机B上开启ARP防火墙
- 在主机A上开启长角牛网络监控机,模拟ARP病毒
- 查看ARP防火墙统计数据的变化
- 在主机B上测试与网关的连通性。
二、传输层
传输层的功能:定义传输数据的协议端口号,以及流控和差错校验,主要的协议是:TCP、UDP
1、TCP协议
全称: 传输控制协议, 顾名思义, 就是要对数据的传输进行一定的控制
- 是面向连接的、可靠的进程到进程通信的协议:是指在每一次我访问之前,先进行一个连接,建立一个安全的通道;
- 提供全双工服务,即数据可在同一时间双向传输
- TCP报文段:因为传输层的协议是数据段,TCP是传输层的主要协议
TCP将若干个字节构成一个分组,叫报文段
TCP报文段封装在IP数据报中
1.1、TCP报文段
序号: 发送的时候会给每个字节进行编号,编号是为了重组用的;
确认号 用于确认已接收发送端的信息,和序号是一对;
首部长度:tcp整个头部的长度;
保留6个控制位:URG AVK PSH SYN FIN ;
窗口大小:网络传的通道,若没有其他数据传输时,就把通道改大,数据就会传输的多且快,反之同理;
校验和:校验数据是否完整;
六个控制位分别的意思
FIN 当TCP断开连接时将该位置为1
RST 重传的机制
PSH 当数据在传输过程中因意外关闭,或者对方拒绝请求,该值置为1
URG:紧急指针字段有效.他告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级数据),而不要按原来的排队序列来传送;
SYN:同步序列号位,TCP需要建立连接时需讲此位设置为1;
ACK:确认序号位,当该位为1时,用于确认发送方。
1.2、TCP 三次握手
TCP建立连接的过程叫三次握手
- 客户端产生初始化序列号Seq=x,向服务端发送建立连接的请求报文,将SYN=1同步序列号;
- 服务端接收建立连接的请求之后,产生初始化序号Seq=y,确认客户端的SYN(Ack=x+1),向客户端发送建立连接的请求(SYN=1),确认客户端的数据(ACK=1)
- 客户端收到服务端的回复(Ack=y+1,包含收到请求,确认信号),ACK=1,确认客户端的数据,三次握手成功
1.3、TCP 四次挥手
- 客户端发送断开连接(FIN=1)请求给服务端,断开连接确认(ACK=1),第一次挥手;
- 服务端接收到断开连接的请求,发回一个ACK确认包,第二次挥手;
- 服务端再次确认(ACK=1)请求断开服务器(FIN=1),第三次挥手;
- 最终客户端确认断开连接请求(ACK=1),第四次挥手
拓展:2和3需要两步的原因是什么?
第一次接收到客户端的请求时,但是服务器的数据并没有传输完成,待我把数据传输完成之后就可以关闭连接了;第四次挥手也没有真正的关闭,需要经过一个time-wait:2msl,存在的原因是等个1-4分钟确认未发送完成的数据发送完成。
1.4、TCP端口号
常用的端口号及其功能
2、UDP协议
全程:用户数据报协议
- 是一种无连接,不可靠的传输协议
- 优点是花费的开销小
UDP报文的首部格式如下:
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错校验,他是UDP协议提供的唯一可靠机制
- 常用的UDP端口号及其功能