自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ctthuangcheng

自学成才。。。。加油!

  • 博客(173)
  • 资源 (4)
  • 收藏
  • 关注

转载 嵌入式LINUX环境下视频采集知识

V4L2是Linux环境下开发视频采集设备驱动程序的一套规范(API),它为驱动程序的编写提供统一的接口,并将所有的视频采集设备的驱动程序都纳入其的管理之中。V4L2不仅给驱动程序编写者带来极大的方便,同时也方便了应用程序的编写和移植,具有广泛的应用价值。     Video for Linux two(Video4Linux2)简称V4L2,是V4L的改进版。V4L2是linux操作系统下用于采

2013-07-31 17:39:53 2039

转载 Web安全测试之XSS

XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的.  比如获取用户的Cookie,导航到恶意网站,携带木马等。作为测试人员,需要了解XSS的原理,攻击场景,如何修复。 才能有效的防止XSS的发生。XSS 是如何发生

2013-07-31 16:39:17 1488

转载 Fiddler (五) Mac下使用Fiddler

Fiddler是用C#开发的。  所以Fiddler不能在Mac系统中运行。  没办法直接用Fiddler来截获MAC系统中的HTTP/HTTPS,    Mac 用户怎么办呢?Fiddler可以允许“远程连接”。  我们可以利用这个间接来实现Fiddler捕获Mac系统发出的HTTP/HTTPS。使用虚拟机Mac中安装虚拟机软件(比如VMware Fusion). 然后在虚拟机中安装一个 Win

2013-07-31 01:00:35 2000

转载 Fiddler (四) 实现手机的抓包

Fiddler是我最喜爱的工具,几乎每天都用, 我已经用了8年了。 至今我也只学会其中大概50%的功能。 Fiddler绝对称得上是"神器", 任何一个搞IT的人都得着的。小弟我立志, 一定要把Fiddler的所有的功能和用法都写出来。 写成一个完整系列的教程。Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求。Fiddler能捕获IOS设

2013-07-31 00:59:05 2137

转载 Fiddler (三) Composer创建和发送HTTP Request

Fiddler的功能还有很多, 很多功能都没有被挖掘出来。这次我们介绍Fiddler中的一个非常有用的功能Composer,是用来创建和发送HTTP Request的。Composer的使用方法很简单,看下就知道用了。Fiddler Composer介绍Composer的官方帮助文档:http://www.fiddler2.com/fiddler/help/composer.aspFiddler的

2013-07-31 00:56:55 2234

转载 Fiddler (二) Script 用法

现在我们来看看Fiddler的高级用法. Fiddler Script。   Fiddler中的script 可以让我们自动修改Http request和Response 的内容。  而不用手动地去下"断点"来修改http Request或Response中的值。 Fiddler的作者Fiddler 的作者是 Eric Lawrence 是个大师级的人物, 目前在微软总部西雅图工作。 他的博客是:

2013-07-31 00:54:52 1932

转载 HTTP协议 (七) Cookie

Cookie是HTTP协议中非常重要的东西, 之前拜读了Fish Li 写的【细说Cookie】, 让我学到了很多东西。Fish的这篇文章写得太经典了。 所以我这篇文章就没有太多内容了。 最近我打算写一个系列的HTTP文章,我站在HTTP协议的角度, 说说我对Cookie的理解。 Cookie是什么,有什么用,为什么要用到Cookie请看Fish Li 写的【细说Cookie】 Cookie的分类

2013-07-31 00:32:36 1440

转载 HTTP协议 (六) 状态码详解

HTTP状态码,我都是现查现用。 我以前记得几个常用的状态码,比如200,302,304,404, 503。 一般来说我也只需要了解这些常用的状态码就可以了。  如果是做AJAX,REST,网络爬虫,机器人等程序。还是需要了解其他状态码。  本文我花了一个多月的时间把所有的状态码都总结了下,内容太多,看的时候麻烦耐心点了。HTTP状态码的学习资料到处都有,但是都是理论上讲解。  本文介绍HTTP协

2013-07-31 00:22:29 1462

转载 HTTP协议 (五) 代理

这次介绍代理服务器, 代理服务器是HTTP协议中一个重要的组件, 发挥着重要的作用。 本文介绍一些HTTP代理服务器的概念和工作原理。什么是代理服务器Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。HTTP的代理服务器即是Web服务器又是Web客户端。  Fiddler就是个典型的代理Fiddler 是以代理web服务器的形式工作的,

2013-07-31 00:18:45 1857

转载 HTTP协议 (四) 缓存

这次继续介绍HTTP协议中的缓存机制。HTTP协议提供了非常强大的缓存机制, 了解这些缓存机制,对提高网站的性能非常有帮助。 本文介绍浏览器和Web服务器之间如何处理"浏览器缓存",以及控制缓存的http header.本文会使用Fiddler来查看HTTP request和Response。 缓存的概念缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有A

2013-07-31 00:15:54 1566

转载 HTTP协议 (三) 压缩

这次继续介绍HTTP协议中的压缩。本文会使用Fiddler来查看HTTP request和Response。HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件。 能大大减少网络传输的数据量,提高了用户显示网页的速度。当然,同时会增加一点点服务器的开销。 本文从HTTP协议的角度,来理

2013-07-31 00:13:46 1543

转载 HTTP协议 (二) 基本认证

http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别。 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何身份识别呢?什么是HTTP基本认证桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header A

2013-07-31 00:11:02 1789

转载 HTTP协议详解

当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方便地捕获HTTP Request和HT

2013-07-31 00:02:30 1515

转载 Wireshark基本介绍和学习TCP三次握手

这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段。更能加深我们对网络协议的理解。

2013-07-30 23:52:43 1406

转载 Fiddler 教程

Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大的帮助。Fiddler的基本介绍Fiddler的官方网站:  www.fiddler2.comFiddler官方网站提供了大量的帮助文档和视频教程, 这是学习Fiddler的最好资料。Fiddler是

2013-07-30 23:48:14 1803

转载 UNIX网络编程——线程池模式比较(ICE线程池模型和L/F领导者跟随者模式)

程池模式一般分为两种:L/F领导者与跟随者模式、HS/HA半同步/半异步模式。 HS/HA 半同步/ 半异步模式 :分为三层,同步层、队列层、异步层,又称为生产者消费者模式,主线程处理I/O事件并解析然后再往队列丢数据,然后消费者读出数据进行应用逻辑处理; 优点:简化编程将低层的异步I/O和高层同步应用服务分离,且没有降低低层服务性能。集中层间通信。 缺点:需要线程间传输数据,因此而带来的动态内存

2013-07-29 22:36:42 2180

原创 UNIX网络编程——常用服务器模型总结

下面有9种服务器模型分别是:迭代服务器。并发服务器,为每个客户fork一个进程。预先派生子进程,每个子进程都调用accept,accept无上锁保护。预先派生子进程,以文件锁的方式保护accept。 预先派生子进程,以线程互斥锁上锁的方式保护accept。预先派生子进程,由父进程向子进程传递套接口描述字。 并发服务器,为每个客户请求创建一个线程。预先创建线程,以互斥锁上锁方式保护accept。 预

2013-07-29 18:52:02 1868

原创 UNIX网络编程——客户/服务器程序设计示范(总结)

(1)当系统负载较轻是,每来一个客户请求现场派生一个子进程为之服务的传统并发服务器程序模型就足够了。这个模型甚至可以与inetd结合使用,也就是inetd处理每个连接的接收。我们的其他意见是就重负荷运行的服务器而言的,譬如Web服务器。 (2)相比传统的每个客户fork一次设计示范,预先创建一个子进程池或一个线程池的设计示范能够把进程控制CPU时间降低10倍或以上。编写这些示范的程序并不复杂,不过

2013-07-29 18:12:37 1512

原创 UNIX网络编程——客户/服务器程序设计示范(八)

TCP预先创建线程服务器程序,主线程统一accept             最后一个使用线程的服务器程序设计示范是在程序启动阶段创建一个线程池之后只让主线程调用accept并把每个客户连接传递给池中某个可用线程。            本设计示范的问题在于主线程如何把一个已连接套接字传递给线程池中某个可用线程。这里有多个市县手段。我们原本可以如前使用描述符传递,不过既然所有线程和所有描述符都在同

2013-07-29 17:17:58 1522

原创 UNIX网络编程——客户/服务器程序设计示范(七)

TCP预先创建线程服务器程序,每个线程各自accept        前面讨论过预先派生一个子进程池快于为每个客户线程派生一个子进程。在支持线程的系统上,我们有理由预期在服务器启动阶段预先创建一个线程池以取代为每个客户线程创建一个线程的做法有类似的性能加速。本服务器的基本设计是预先创建一个线程池,并让每个线程各自调用accept。取代让每个线程都阻塞在accept调用之中的做法,我们改用互斥锁以保

2013-07-29 16:46:12 1597

原创 UNIX网络编程——客户/服务器程序设计示范(六)

TCP并发服务器程序,每个客户一个线程             前面讲述了,每个客户一个进程的服务器,或为每个客户现场fork一个子进程,或者预先派生一定数目的子进程。如果服务器主机支持线程,我们就可以改用线程以取代子进程。#include "unpthread.h"intmain(int argc, char **argv){ int listenfd, connfd; voi

2013-07-29 16:40:59 1214

原创 UNIX网络编程——客户/服务器程序设计示范(五)

TCP预先派生子进程服务器程序,传递描述符               对预先派生子进程服务器程序的最后一个修改版本是只让父进程调用accept,然后把所接受的已连接套接字“传递”给某个子进程。这么做绕过了为所有子进程的accept调用提供上锁保护的可能需求,不过需要从父进程到子进程的某种形式的描述符传递。这种技术会使代码多少有点复杂,因为父进程必须跟踪子进程的忙闲状态,以便给空闲子进程传递新的套

2013-07-29 16:34:54 1198

原创 UNIX网络编程——客户/服务器程序设计示范(四)

TCP预先派生子进程服务器程序,accept使用线程上锁保护             我们使用线程上锁保护accept,因为这种方法不仅适用于同一进程内各线程之间的上锁,而且适用于不同进程之间的上锁。        为了使用线程上锁,我们的main,child_make和child_main函数都保持不变,唯一需要改动的是那3个上锁函数。在不同进程之间使用线程上锁要求:(1)互斥锁变量必须存放在由

2013-07-29 16:20:50 1256

原创 UNIX网络编程——客户/服务器程序设计示范(三)

TCP预先派生子进程服务器程序,accept无上锁保护                 我们的第一个“增强”型服务器程序使用称为预先派生子进程的技术。使用该技术的服务器不像传统意义的并发服务器那样为每个客户现场派生一个子进程,而是启动阶段预先派生一定数量的子进程,当各个客户连接到达时,这些子进程立即就能为他们服务。下图展示了服务器父进程预先派生出N个子进程且正有2个客户连接着的情形。

2013-07-29 13:57:01 1608

原创 UNIX网络编程——客户/服务器程序设计示范(二)

TCP并发服务器程序,每个客户一个子进程                            传统上并发服务器调用fork派生一个子进程来处理每个客户。这使得服务器能够同时为多个客户服务,每个进程一个客户。客户数目的唯一限制是操作系统对以其名义运行服务器的用户ID能够同时有多个子进程的限制。并发服务器的问题在于为每个客户现场fork一个子进程比较耗费CPU时间。                

2013-07-29 13:38:13 1523

原创 UNIX网络编程——客户/服务器程序设计示范(一)

下面给出的是客户程序用于测试我们的服务器程序的各个变体。#include "unp.h"#define MAXN 16384 /* max # bytes to request from server */intmain(int argc, char **argv){ int i, j, fd, nchildren, nloops, nbytes; pid_t pid; ss

2013-07-29 11:45:59 1380

原创 UNIX网络编程——使用线程的TCP回射服务器程序

同一进程内的所有线程除了共享全局变量外还共享:(1)进程指令;(2)大多数数据;(3)  打开的文件(即描述符);(4)信号处理函数和信号处置;(5)当前工作目录;(6)用户ID和组ID。不过每个线程有各自的:(1)线程ID;(2)寄存器集合,包括程序计数器和栈指针;(3)栈(用于存放局部变量和返回地址);(4)errno;(5)信号掩码;(6)优先级。

2013-07-29 11:07:47 1551

转载 UNIX网络编程——TCP—经受时延与nagle算法、滑动窗口、拥塞窗口

1、经受时延:    TCP在接收到数据时并不立即发送ACK,相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送,时延为200ms,超过时延范围,发送确认。   2、nagle算法:    一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。TCP收集这些少量的分组,在确认到来时以一个分组的方式发出去 3、滑动窗口窗口的左边沿向右边沿靠近

2013-07-28 23:07:46 1918

原创 UNIX网络编程——带外数据小结

TCP没有真正的带外数据,不过提供紧急模式和紧急指针。一旦发送端进入紧急模式,紧急指针就出现在发送到对端的分节中的TCP首部中。连接的对端收取该指针是在告知接收进程发送端已经进入紧急模式,而且该指针指向紧急数据的最后一个字节。然而所有数据的发送仍然受TCP正常的流量控制支配。      套接字API把TCP的紧急模式映射成所谓的带外数据。发送进程通过指定MSG_OOB标志调用send让发送端进入紧

2013-07-28 22:57:28 1482

原创 UNIX网络编程——send与recv函数详解

#include ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);send和recv的前3个参数等同于read和write;flags参数值为0或为下图列出的一个或多个常值的逻辑或

2013-07-28 22:43:17 2174

转载 UNIX网络编程——关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有 区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回 值 2、阻塞模式与非阻塞模式下write的返回值各代表什么意思? 有没有区别?阻塞与非阻塞write返回值没有区分,都是 0发送数据大小,特别:返回值 3、阻塞模式下read返回 值 非阻塞模式下read返回值  0表示接收到数据。 这2种模

2013-07-28 21:37:42 1931

转载 UNIX网络编程——TCP服务器“拒绝服务攻击” 解决方案

说这是一个完全的解决方案,其实有点夸大了,但这个方案确实可以缓解TCP服务器遭受“拒绝服务攻击”时表现出的脆弱性。       当服务器以TCP的方式提供服务时,客户端通过tcp连接上服务器。这时,恶意的程序,也可以通过tcp连接我们的服务器,如果恶意的程序采用循环与我们的服务器建立成千上万的连接,并在每个连接上都发送恶意的数据包给服务器,慢慢就会导致服务器资源耗尽而崩溃!           为

2013-07-28 21:25:17 2046

原创 UNIX网络编程——客户/服务器心搏函数

下面是关于回送客户和服务器程序开发一些简单的心搏函数。这些函数可以发现对端主机或到对端的通信路径的过早失效。         在给出这些函数之前我们必须提出一些警告。首先,有人会想到使用TCP的保持存活特性(SO_KEEPALIVE套接字选项)来提供这种功能,然而TCP得在连接已经闲置2小时之后才发送一个保持存活探测段。意识到这一点以后,他们的下一个问题是如何把保持存活参数改为一个小得多的值(往往

2013-07-28 20:31:08 3459

原创 UNIX网络编程——TCP带外数据小结

带外数据概念实际上时向接收端传送三个不同的信息:(1)发送端进入紧急模式这个事实。接收进程得以通知这个事实的手段不外乎SIGURG信号或select调用。本通知在发送进程发送带外字节后由发送端TCP立即发送,即使往接收端的任何数据发送因流量控制而停止了,TCP仍然发送本通知。本通知可能导致接收端进入某种特殊处理模式,以处理接收的任何后继数据。(2)带外字节的位置,也就是它相对于来自发送端的其余数据

2013-07-28 20:04:24 2682

原创 UNIX网络编程——sockatmark函数

每当收到一个带外数据时,就有一个与之关联的带外标记。这是发送进程发送带外字节时该字节在发送端普通数据流中的位置。在从套接字读入期间,接收进程通过调用sockatmark函数确定是否处于带外标记。#include int sockatmark(int sockfd); /* 返回值:如果在带外标记上为1, 不在标记上为0, 出错为-1 */       本函数时POSIX创造的,如下给出了常见的S

2013-07-28 19:36:49 2999

原创 UNIX网络编程——带外数据

许多传输层有带外数据的概念,它有时也称为经加速数据。其想法是一个连接的某端发生了重要的事情,而且该端希望迅速通告其对端。这里“迅速”意味着这种通知应该在已排队等待发送的任何“普通”(有时称为“带内”)数据之前发送。也就是说,带外数据被认为具有比普通数据更高的优先级。带外数据并不需要在客户和服务器之间再使用一个连接,而是被映射到已有的连接中。       不幸的是,一旦超越普通概念光临现实世界,我们

2013-07-26 17:18:22 5750 3

原创 UNIX网络编程——信号驱动式I/O

信号驱动式I/O是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程。     针对一个套接字使用信号驱动式I/O,要求进程执行以下3个步骤:建立SIGIO信号的信号处理函数。设置该套接字的属主,通常使用fcntl的F_SETOWN命令设置。开启该套接字的信号驱动式I/O,通常通过使用fcntl的F_SETFL命令打开O_ASYNC标志完成。 1.对于UDP套接字的SIGI

2013-07-26 16:29:19 2181

原创 UNIX网络编程——非阻塞accept

当有一个已完成的连接准备好被accept时,select将作为可读描述符返回该连接的监听套接字。因此,如果我们使用select在某个监听套接字上等待一个外来连接,那就没有必要把监听套接字设置为非阻塞,这是因为如果select告诉我们该套接字上已有连接就绪,那么随后的accept调用不应该阻塞。      不幸的是,这里存在一个可能让我们掉入陷阱的定时问题。      为了查看这个问题,我们把TCP

2013-07-26 16:09:54 2328

原创 UNIX网络编程——非阻塞connect: Web客户程序

非阻塞的connect的实现例子出自Netscape的Web客户程序。客户先建立一个与某个Web服务器的HTTP连接,再获取一个主页。该主页往往含有多个对于其他网页的引用。客户可以使用非阻塞connect同时获取多个网页,以此取代每次只获取一个网页的串行获取手段。图16-12展示了一个并行建立多个连接的例子。最左边情形表示串行执行所有3个连接。假设第一个连接耗用10个时间单位,第二个耗时15个,第

2013-07-26 14:15:23 1525

原创 UNIX网络编程——非阻塞connect:时间获取客户程序

#include "unp.h"intconnect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec){ int flags, n, error; socklen_t len; fd_set rset, wset; struct timeval tval; flags = fcntl(sockf

2013-07-26 13:14:17 2335

gdb调试程序

gdb调试

2013-05-29

gdb调试示例

gdb示例

2013-05-29

RFC792_ICMPO

RFC792_ICMPO,供大家参考学习,共同进步!

2013-04-09

libpcap编程-编写自己的网络嗅探程序

libpcap编程-编写自己的网络嗅探程序,供大家学习和参考。

2013-04-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除