目录
4.TCP三次握手(没有真实数据)为什么三次?两次报文都有去有回了
一、TCP /IP
1.TCP/IP简单介绍
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
2.TCP/IP分层
TCP/IP 4层模型(思科)
TCP/IP 5层模型(华为)
3.TCP/IP和OSI模型的对比
相同点 | 不通点 | |
---|---|---|
TCP/IP |
|
|
OSI |
|
4.TCP/IP协议
TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议。
模型层 | 协议 | 含义 |
---|---|---|
物理层 | IEEE802.3有线局域网(以太网) | |
数据链路层 | ppp:点到点协议 | |
网络层 | ARP:地址解析协议 | 是将IP地址转换成物理mac地址 的协议 |
RARP:逆地址解析协议 | 是根据物理mac地址转换成IP地址的协议 | |
ICMP:网际控制报文协议 | ping 网络连通性检测 检测网络连通性 | |
IGMP:网际组管理协议 | 一个组播协议,该协议运行在主机和组播路由器之间 | |
模型层 | 协议 | 特点 |
传输层 | TCP :传输控制协议 | 慢,可靠,稳定,安全 |
UDP:用户数据报协议 | 快,不可靠,不稳定,不安全 | |
模型层 | 协议 | 端口号 |
应用层 | HTTP:超文本传输协议 | TCP的 80端口 |
HTTPs:超文本传输安全协议 加密 | TCP的 443端口 | |
FTP:文件传输协议 | TCP的 20端口 21端口 | |
TFTP:简单文件传输协议 | UDP的 69端口 | |
SNMP:简单网络管理协议 | UDP的 161端口 | |
SMTP:简单邮件传输协议 | TCP的 25端口 | |
telnet:远程登陆协议 明文 | TCP的 23端口 | |
ssh:安全的远程登陆协议 加密 | TCP的 22端口 | |
DNS :域名解析系统 | TCP和UDP 的 53端口 | |
DHCP:动态主机配置协议 | UDP 的 67端口 68端口 |
二、TCP协议介绍
1.TCP介绍
- TCP是面向连接的、可靠的进程到进程通信的协议
- TCP提供全双工服务,即数据可在同一时间双向传输
2.TCP特性
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口
3.TCP报文格式
源端口号(16) | 目标端口号(16) | |||||||
序号(32) | ||||||||
确认号(32) | ||||||||
首部长度(4) | 保留(6) | U R G | A C K | P S H | R S T | S Y N | F I N | 窗口大小(16) |
校验和(16) | 紧急指针(16) | |||||||
选项 |
扩:系统中有pid号和端口号
pid号:系统每开启一个进程 会自动分配一个pid号,方便系统管理,
端口号:来区别两个系统之间的进程
服务端:端口号约定不会轻易改变(iana组织规定的 前1024) 服务端会开启一个监听的进程()
客户端:端口号随机生成
端口号:0~65535
开启了一个应用为别人提供服务,这个应用就会处于监听状态。
报文格式解析:
-
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即 65536 (0-65535)
-
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始 无限循环
-
确认号:(ack)表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号:传输是否有问题?
-
数据偏移/首部长度:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
-
控制位:确定两台主机处于什么状态
URG(紧急位):表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
ACK(确认位):表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
SYN(同步位):在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
-
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值
-
校验和:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置
-
选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节
4.TCP三次握手(没有真实数据)为什么三次?两次报文都有去有回了
1、PC1客户端想和PC2服务端建立连接
第一次握手PC1发送请求报文给PC2
发送seq(序列号随机的)=x 控制位SYN=1的报文。
第二次握手PC2回复PC1请求连接报文
SYN + ack (确认号) 报文
seq(序列号) = y #pc2随机生成的序列号
ack=x+1 #pc2 希望pc1 下次回复的时候,序号是x+1
控制位 SYN=1 请求连接
ACK=1 同意连接
第三次握手PC1 回复PC2同意连接的报文
ACK报文(确认报文)
seq = x+1 序号是从PC2那里得来的
ACK = 1 同意连接
ack = y + 1#希望下次发送真实数据时,报文的序列号y+1
5.TCP四次挥手
有限状态机(扩展)
-
CLOSED 没有任何连接状态
-
LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进程 看着 有没有人找 http )
-
SYN-SENT 在发送连接请求后,等待对方确认
-
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
-
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
-
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
-
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
-
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
-
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
-
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
-
CLOSING 双方同时尝试关闭传输连接,等待对方确认
客户端先发送一个FIN给服务端,自己进入FIN_WAIT_1状态,这时等待接收服务端报文,该报文会有三种可能:
-
只有服务端的ACK
-
只有服务端的FIN
-
基于服务端的ACK,又有FIN
三、UDP协议介绍
UDP协议
-
无连接、不可靠的传输协议
-
花费的开销小
UDP报文的首部格式
源端口号(16) | 目标端口号(16) |
UDP长度(16) | UDP校验和(16) |
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错校验,它是UDP协议提供的唯一的可靠机制
TCP和UDP的特性:
协议 | 特性 |
TCP |
|
UDP |
|
四、抓包分析wireshark
-
选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。一般是
-
使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
-
使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤
有混杂模式和普通模式两种模式
-
混杂模式:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。
-
普通模式:网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
1.停止抓取数据
在这里想要的数据类型,还可以筛选控制位、标志位、查找源地址、源地址是 xxx 或目的地址是xxx