0#4 wireshark 分析传输层协议

0x00简介

第二层:运输层
创建两台主机通信时使用的套接字,在两台设备之间创建出一条独立连接。
举例:

  1. TCP: 传输控制协议(可靠协议)
  2. UDP:用户数据报协议(不可靠通信协议)

0x01 TCP 面向消息的协议

TCP 是一种面向连接的协议,很多应用层i协议都使用 TCP 来确保文件在传输的过程中不会出现丢包的情况。
TCP 可以通过接不能的序列号和确认号来确保通信的主机之间不会在传输过程中出现丢包的情况。

TCP通信过程中,通信的双方会执行一个称为三次握手的进程,以便在通信过程中在参与通信的两台主机之间创建出一条独立的通道。

tcp-ecn-sample.pcap

TCP 的头部的各种标记

TCP 头部的长度通常为20字节。但是有些情况下会使用TCP的可选字段,会达到60字节。

TCP.png
  1. 源端口(16位):通信发送方使用的端口号
  2. 目标端口(16位):通信接收方使用的端口号
  3. 序列号(32位):用来确保数据可靠传输的唯一值
  4. 确认号(32位):接收方在响应时发送的数值
  5. 数据偏移(4位):标志数据包开始的位置,TCP头部的长度。
  6. 标记(12位/6位重要):
    SYN:(同步)发起连接的数据包
    ACK:(确认)确认收到的数据包
    RET:(重置)之前尝试的连接被关闭,(信号差,信号拥挤)
    FIN:(结束)连接成功,传输完毕之后,连接正在断开
    PSH:(推送)数据包直接发送给应用,而不是缓存起来
    URG:(紧急)数据包中承载的内容应该立即由TCP 协议栈立即进行处理
    CWR:(拥塞窗口减小)缓存区已满或者拥挤,通信双方都应该降低传输的速率
  7. 窗口大小(16位):匹配缓存区的大小
  8. 校验和(16位):确认 TCP 数据段中的内容是否发送了变化
  9. 紧急指针(16位):明确显示数据之前的16进制序列号
TCP show.png

0x02 UDP 面向事务的协议

UDP 用户数据包协议,UDP是一种无连接的协议,这种协议适合主机间传输实时数据。在这个过程中丢弃的数据包也不能回复,因为在传输过程中没有人会向发送方通告丢包的消息。不过很多协议(DHCP\DNS\TFTP\SIP)在传输层使用的都是UDP协议。以UDP作为传输层机制的协议需要通过其他方法确保数据传输是可靠的,并提供校验功能。

opensafety_udp_trace.pcap

UDP 的头部标记

UDP 的头部只有8个字节,但是包含头部的数据可达65535字节。

UDP.png
  1. 源端口(16位):通信发送方使用的端口号
  2. 目标端口(16位):通信接收方使用的端口号
  3. 数据包长度(16 位):标志数据包开始的位置,TCP头部的长度。
  4. 校验和(16位):确认 UCP 数据段中的内容是否发送了变化
    当显示00 00 表示这个数据包不需要校验
UDP show.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 1,266评论 0 1
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,992评论 1 13
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,146评论 6 174
  • 目录 TCP协议的基本概念面向链接的服务可靠的服务序列号字节流传输 TCP协议数据段的格式TCP伪头部 TCP协议...
    kirito_song阅读 3,023评论 2 33
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,550评论 0 6