博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络协议 11 - Socket 编程(下):眼见为实耳听为虚
阅读量:5168 次
发布时间:2019-06-13

本文共 1194 字,大约阅读时间需要 3 分钟。

系列文章传送门:


    之前我们基本了解了网络通信里的大部分协议,一直都是在“听”的过程。很多人都会觉得,好像看懂了,但关了页面回忆起来,好像又什么都没懂。这次咱们就“真枪实弹”的码起来,再用一个“神器”-网络分析系统详细跟踪下数据包的生命历程,让我们的理论真实的呈现出来,对网络通信感兴趣的博友,还可以自己拿着系统分析一遍,你一定会大有所获。

    不多说,直接上代码。有兴趣的博友可以按各编程语言进行相关改写,然后拿着我们的分析系统真实的看看网络通信过程。

本机请求转发到网关

    代码中的 192.168.1.10 是内网另一台服务器,楼主的 IP 是 192.168.1.73。在本机跑服务器的时候,要做一个路由配置,否则分析系统无法抓取相关的包。window 下可按下面步骤配置:

  1. 管理员身份打开 DOS 窗口;
  2. route add 本机ip mask 255.255.255.255 网关ip(路由转发,还记得吗?忘记了?);

    什么?不知道怎么查 IP 和网关?

    操作完成后记得删除转发规则,否则,你会发现本机的请求,速度会变得很慢、、、
    实例:

// 添加路由转发规则route add 192.168.1.73 mask 255.255.255.255 192.168.1.1 // 删除转发规则route delete 192.168.1.73

基于 TCP 的 Socket

    服务端:

    客户端:

    上面的代码是基于 PHP 原生 Socket 写的,其它语言也有对应 Socket 操作函数,进行相关的改写即可。主要是下面的分析过程。

861679-20181208172638786-201596475.png

    如上图,这是我们的分析系统捕捉的所有数据传输过程,你可以真实的看到每一步都发生了什么,以及对应的状态的改变(图片较大,建议右键在新标签页打开看)。

    在图中上半部分,我们可以看到分析系统将整个 TCP 的生命历程分为了三个阶段:建立连接、交易、关闭连接。这和我们之前了解的理论知识完全相符。

    左下角的交易时序图,则详细记录了客户端和服务端每次通信的详细信息,而右下角部分,则展示了每次通信,数据包的状态等信息。

基于 UDP 的Socket

客户端:

UDP 数据包分析图:

861679-20181208174449420-2050339711.png

    如上图,UDP 数据包分析图,明显比 TCP 要简单很多,人家单纯嘛,就不多说了。不过要注意的,写代码的时候,UDP 的服务端,在循环里千万不要关闭 Socket

分析系统介绍

    上面用到的分析系统叫:科来网络分析系统,。这个分析系统很良心,提供了一个免费的技术交流版。有兴趣的小伙伴可以下载下来玩玩,很强大。

转载于:https://www.cnblogs.com/BeiGuo-FengGuang/p/10088410.html

你可能感兴趣的文章
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>
ES5_03_Object扩展
查看>>
bzoj 2600: [Ioi2011]ricehub
查看>>
创建数据库,表
查看>>
工厂模式
查看>>