目录
一、网络层介绍
1.1 网络层的功能
网络层的功能:定义基于IP协议的逻辑地址,连接不同的网段,选择数据通过网络的最佳的路径。
其中协议号指的是上层协议TCP协议号为6、UDP协议号为17。
IP地址的封装格式
1.2 ICMP协议
ICMP:Internet控制报文协议,是错误侦测与回馈机制。
作用:测试网络联通性并给予一定的反馈。(ping+IP地址)(tracert+IP)
(ping的常用命令:ping -t:参数可以一直不停的执行ping,ctrl+c可以中断命令,用来
调试故障或需要进行持续连通性测试时应用。
ping -a:参数可以显示目标主机的名称。
ping -l:参数可以设定ping包的大小默认的字节大小为32位)
1.3 ARP协议
ARP协议:正向地址解析协议,即ARP,是根据IP地址获取物理地址的一个TCP/IP协议,将一个已知的目标IP地址解析成对应的MAC地址。(使用场合:已知目标IP,未知目标MAC用)。
工作原理:pc1已知pc2的IP,未知pc2的mac时候,用pc1发送ARP广播给二层交换机,二层交换机收到ARP广播消息进行无条件泛洪处理,连接到二层交换机下的所有pc都接收此消息,每个pc会对自己的IP的地址和目标IP进行比对,若一致则接收广播消息,并回复给pc1,pc1接收到返回的数据包后会记录下pc2的IP和mac地址,记录到ARP缓存表中,若不一致则丢弃处理。
(常用的ARP的命令:arp -a 查看本地网卡缓存,arp -s +IP+MAC ARP绑定,arp -d +IP地址 删除特定IP)
1.4 ARP攻击原理
ARP攻击主要是通过伪造IP地址和MAC地址进行欺骗。使以太网数据包的源地址、目标地址和ARP通信数量剧增导致网络中断或中间人攻击。ARP攻击主要存在于局域网中。若其中一台计算机感染ARP病毒。就会试图通过ARP欺骗截获局域网内其他计算机的信息,造成局域网内的计算机通信故障。
(避免ARP攻击的方法:手动ARP绑定,还可以借助第三方软件进行绑定)
二、传输层协议
2.1 TCP协议
TCP协议是面向连接的,可靠的进程到进程通讯协议,提供全双工服务,数据可以同一时间双向传输。
源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
保留字段——占 6 位,保留为今后使用,但目前应置为 0。
紧急 URG —— 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
确认 ACK —— 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。
推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
复位 RST (ReSeT) —— 当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
终止 FIN (FINish) —— 用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。
2.2 UDP 协议
UDP协议:是一个无连接,不可靠的传输协议,其特点,花费开销小,传输效率高
UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
2.3 三次握手
TCP建立连接的过程称为三次握手。
原理:客户端向服务器发送SYN同步请求,请求与服务器建立连接,服务器收到SYN同步请求后会针对客户端的SYN同步请求进行ACK响应,响应的同时会发送一个SYN同步请求,当客户端接收到服务器发过来的SYN同步请求会给予一个ACK响应。
第一次握手:建立连接时,客户端A发送SYN包(SYN=x)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=x+1),同时自己也发送一个SYN包(SYN=x),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=x+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据
2.4 四次断开
TCP断开的过程称为四次断开。
原理:客户机向服务器发送FIN断开请求,服务器接收到此请求后,回复一个ACK,服务器向客户机发送一个FIN断开请求,客户机收到请求后,回复一个ACK断开连接。
如果过程中TCP处于半封闭状态是什么情况:客户机向服务器发送FIN请求,服务器也正常给予ACK响应,但是服务器和客户机之间还有数据没有传输完,因此服务器并没有向客户机发送FIN请求。
三、TCP端口号和功能
3.1 常用端口号和功能
21 | FTP | FTP服务器所开发的控制端口 |
23 | TELNET | 用于远程登陆,可以远程控制目标计算机 |
25 | SMTP | SMTP服务器开放的端口用于发送邮件 |
80 | HTTP | 超文本传输协议 |
110 | POP3 | 用于邮件接收 |
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
3.2 端口号的定义和分类
客户段根据需要那种服务,从而发送到特定的目的的端口,端口划分位三个类别,其类别范围介于1到65,555之间。
1.公认端口:与通用网络应用程序相关联的目的端口称为公认的端口,端口范围1到1023。
2.注册端口:端口从1024到4915可作为源端口或目的端口使用,组织可以使用这些端口进行端口注册即时消息等应用程序。
3.私有端口:端口49152到65535通常用于源端口。
(客户机端口号随机变化,服务器端口号是固定不变的)
四、总结
三次握手请求了三次,断开四次次的原因是:数据传输方向是双向传输,一个方向的数据通道关闭需要一次请求和一次确认,因此需要断开两次,而我们有两个数据方向,因此要断四次。简单说来是 “先关读,后关写”,一共需要四个阶段。1.服务器读通道关闭。2.客户机写通道关闭。3.客户机读通道关闭。4.服务器写通道关闭