网络中每个通信实体的 socket 是用一个三元组标识的。三元组往往称为半相关

三元组指的是:协议族(地址族),网络地址、和传输层端口 (

Ipv4 )。

通信双方的一个连接是用网络五元组来标识的,它是由双方相同协议族的两个本地三元组合成的。五元组往往称为全相关。

网络五元组指的是:协议族(地址族)、本地网络地址、本地端口、远程网络地址和远程端口。

套接口分为若干类型,常用的是

SOCK_STREAM 和 SOCK_DGRAM 。

SOCK_STREAM 是面向连接的套接字,使用的协议是 TCP ,通信的双方通过三次握手建立起虚拟的连接线路,通信的过程是可靠的。

SOCK_DGRAM 是面向非连接的套接字,使用的协议是 UDP ,通信双方以数据包的方式进行通信,通信的可靠性就不能得到保证。本项目要求采用 SOCK_STREAM 类型。

五元组格式(协议,本地 IP ,本地端口,远方 IP ,远方端口)的建立过程

服务器一般都有两个功能:监听 和 处理

在监听的时候,协议 / 本地 IP/ 本地端口(监听端口)都是确定的,当收到客户端的报文时,远方 IP 就是报文的源 IP 地址,远方端口就是报文的源端口,这样一来五元组就确定了。

然后服务器进入处理阶段,需要开启一个新的线程与客户端交互,当然就需要确定一个新的五元组,这时候协议 / 本地 IP/ 远方 IP/ 远方端口都来自监听阶段确定的五元组,而本地端口会在 1024 以上随机选取 (不再使用监听端口,以便监听其他客户端的请求)。

客户端的话正好相反,在发送请求时采用随机的本地端口 ,而接受响应时采用服务器的源端口作为远方端口。

1.  创建套接字

int socket(int family, int type, int protocol);

Socket 函数用于建立三元组中的协议族部分 。

2. 绑定套接字

int bind(int sockfd, cost struct sockaddr * saddr,  socklen_t addrlen);

bind 函数用于建立三元组中的本地 IP 地址和本地端口号部分。

3. 监听

int listen( int sockfd, int backlog ) ;

4. 接受连接

int accept( int sockfd, struct sockaddr * client_addr, socklen_t *addrlen);

5. 连接服务器

int connect(int sockfd, const struct sockaddr *serv_addr,  socklen_t addrlen);

connect 完成后通信双方两个三元组组成的五元组就建立起来了。

PCAP文件格式分析

pcap文件格式是常用的数据报文存储格式,主流抓包软件,如wireshark、tcpdump等都支持这种格式。

其具体格式为:

pcap文件头 + {

数据报文信息 +

数据报文}+..

二、文件头结构体:24字节

sturct pcap_file_header

{

DWORD              magic; //标识位,目前为“D4 C3 B2 A1”

WORD                 version_major;//主版本号

WORD                 version_minor;//副版本号

DWORD              thiszone;//时区

DWORD              sigfigs;//精确时间戳

DWORD              snaplen;//数据包最大长度

DWORD              linktype;//链路层类型,1代表以太网

}

三、数据包头结构体:16字节

struct pcap_pkthdr

{

struct timeval         ts; //时间戳

DWORD              caplen;//数据包长度

DWORD              len;//数据包实际长度

}

struct timeval

{

DWORD       GMTtime;//秒计时

DWORD       microTime;//毫秒计时

}

数据报文,即网络中传输的数据包,其具体格式依赖于具体的网络协议,比如一个数据报文链路层采用以太网协议,网络层采用IP协议,传输层采用TCP协议,那么其内容就需要一层一层向上解析。可以自己对比协议规范去进行pcap文件的解析。

java解析五元组_抓包分析提取五元组相关推荐

  1. 华为——OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态

    华为--OSPF单区域实验配置,实验抓包分析,五种报文分析,六种LSA介绍,以及如何建立邻接关系的七种状态 前言 一:OSPF简介 1.1:工作原理 1.1.1:架构介绍 1.1.2:信息传递 1.1 ...

  2. 第6组-17通信工程3班-156 黄子羡 网络抓包分析

    一.地址规划表 源ip地址 目的ip地址 备注 192.168.43.156 221.130.200.202 360搜索导航 192.168.43.156 183.232.136.130 YY直播平台 ...

  3. ffmpeg抓取rtsp流并保存_详细解析RTSP框架和数据包分析(1)

    0.引言 本文主要讲解RTSP框架和抓取RTSP数据包,进行详细分析.可以阅读以下几篇文章,能够帮助你更详细理解. 手把手搭建RTSP流媒体服务器 HLS实战之Wireshark抓包分析 HTTP实战 ...

  4. Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包

    在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)--抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要 ...

  5. Java抓包+分析网络数据包

    Java抓包+分析网络数据包   本程序基于java语言,需安装winpcap和配置Jpcap.jar库文件(需要的可以评论留下邮箱),成功实现了对本主机网卡接口的显示和网络数据包的抓取,并调用函数对 ...

  6. 抓包红色_抓包三部曲 WebSocket 协议原理抓包分析

    这篇文章通过抓包分析 WebSocket 协议的细节,学习一下 WebSocket 执行流程. 1.WebSocket 流程说明 (1)客户端和服务器之间完成三次握手建立 TCP 连接(TLS/SSL ...

  7. java实现FTP协议:wireshark抓包解析

    本节我们看看ftp协议的数据包格式,同时使用代码加以实现.首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示 ...

  8. wireshark 手机抓包_美团外卖抓包分析

    前言 博客:http://2h0n9.com 分析 1.Charles抓包 一开始爬 美团外卖App 我是直接Charles上手就干的,但我抓了一天都没抓到有用的数据我就开始找资料,遗憾的是网上没有一 ...

  9. 正方教务隐藏入口_正方教务处抓包分析

    大概全中国的教务处网站都是一样的,选课时期总是出去薛定谔的猫的状态,因此使用爬虫来选课对于计算机的学生来说就很正常了,在进行爬虫爬取之前,我们首先需要对它进行抓包分析. 试探 首先登录教务处网址,我们 ...

最新文章

  1. 81. Leetcode 21. 合并两个有序链表 (排序)
  2. codeforces-constructive algorithms(构造算法.)
  3. 数据库表之间的数据导入 sql语句
  4. 设计模式之一(单例模式)
  5. 我是如何用单例模式征服面试官的?
  6. 生产环境下戴尔 R820 kvm虚拟化部署二(物理主机系统优化)
  7. Inpaint2021一款非常强大图片去水印神器
  8. 公众号排名优化技巧分享
  9. 网站隐藏跳转代码php,域名跳转代码[可隐藏与不隐藏域名转向代码(自动跳转代码) ]...
  10. 新浪微博认证——应用程序支持新浪微博登陆
  11. 经纬财富:吴忠白银投资五种方式
  12. Kibana基础:3:生成定制化的Dashboard
  13. T-LESS:制作RGBD 6D姿态数据集和标签
  14. 光伏发电并网逆变simulink/matlab仿真 两级三相/单相系统
  15. 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式
  16. 3D视觉的学习路线都在这里了~
  17. Windows Server 2008 R2 配置AD(Active Directory)域控制器(图文教程)
  18. 如何挖掘和策划公关传播内容,不再局限于新闻稿
  19. (二十三)系统集成中级-项目收尾管理
  20. 文件替换后怎么恢复,恢复被覆盖的文件

热门文章

  1. Java基础笔记01
  2. python中os.fork()理解
  3. 我的世界手机版javaui材质包_45woool传奇世界网手机版下载-45woool传奇世界手游全部版本合集...
  4. 【LC中等】1596. 每位顾客最经常订购的商品
  5. chmod 权限-rw-r--r--表示什么含义
  6. Java高效率复习-MySQL上篇[MySQL]
  7. 【微信公众号】8、SpringBoot整合WxJava发送模板消息
  8. th标签与td标签的区别
  9. IPv6地址格式简介以及常见的IP地址
  10. 做IT这几年,我整理了这些干货想要送给你!