0#4 wireshark 分析传输层协议
2018-07-15 本文已影响0人
dogo_L1L
0x00简介
第二层:运输层
创建两台主机通信时使用的套接字,在两台设备之间创建出一条独立连接。
举例:
- TCP: 传输控制协议(可靠协议)
- UDP:用户数据报协议(不可靠通信协议)
0x01 TCP 面向消息的协议
TCP 是一种面向连接的协议,很多应用层i协议都使用 TCP 来确保文件在传输的过程中不会出现丢包的情况。
TCP 可以通过接不能的序列号和确认号来确保通信的主机之间不会在传输过程中出现丢包的情况。
TCP通信过程中,通信的双方会执行一个称为三次握手的进程,以便在通信过程中在参与通信的两台主机之间创建出一条独立的通道。
TCP 的头部的各种标记
TCP 头部的长度通常为20字节。但是有些情况下会使用TCP的可选字段,会达到60字节。
TCP.png- 源端口(16位):通信发送方使用的端口号
- 目标端口(16位):通信接收方使用的端口号
- 序列号(32位):用来确保数据可靠传输的唯一值
- 确认号(32位):接收方在响应时发送的数值
- 数据偏移(4位):标志数据包开始的位置,TCP头部的长度。
- 标记(12位/6位重要):
SYN:(同步)发起连接的数据包
ACK:(确认)确认收到的数据包
RET:(重置)之前尝试的连接被关闭,(信号差,信号拥挤)
FIN:(结束)连接成功,传输完毕之后,连接正在断开
PSH:(推送)数据包直接发送给应用,而不是缓存起来
URG:(紧急)数据包中承载的内容应该立即由TCP 协议栈立即进行处理
CWR:(拥塞窗口减小)缓存区已满或者拥挤,通信双方都应该降低传输的速率 - 窗口大小(16位):匹配缓存区的大小
- 校验和(16位):确认 TCP 数据段中的内容是否发送了变化
- 紧急指针(16位):明确显示数据之前的16进制序列号
0x02 UDP 面向事务的协议
UDP 用户数据包协议,UDP是一种无连接的协议,这种协议适合主机间传输实时数据。在这个过程中丢弃的数据包也不能回复,因为在传输过程中没有人会向发送方通告丢包的消息。不过很多协议(DHCP\DNS\TFTP\SIP)在传输层使用的都是UDP协议。以UDP作为传输层机制的协议需要通过其他方法确保数据传输是可靠的,并提供校验功能。
UDP 的头部标记
UDP 的头部只有8个字节,但是包含头部的数据可达65535字节。
UDP.png- 源端口(16位):通信发送方使用的端口号
- 目标端口(16位):通信接收方使用的端口号
- 数据包长度(16 位):标志数据包开始的位置,TCP头部的长度。
- 校验和(16位):确认 UCP 数据段中的内容是否发送了变化
当显示00 00 表示这个数据包不需要校验