
linux网络
sunboy_Peter
http://sunboy_lewis.com.cn
展开
-
Linux网络编程一步一步学-select详解
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。int socket(int domain, int type, int protocol);select是用来监视某个或某些句柄的状态变化的。select函数原型如下:int select(int nf原创 2013-04-23 10:12:44 · 380 阅读 · 0 评论 -
关于Tcp封包
TCP大致工作原理介绍:工作原理TCP-IP详解卷1第17章中17.2节对TCP服务原理作了一个简明介绍(以下蓝色字体摘自《TCP-IP详解卷1第17章17.2节》):尽管T C P和U D P都使用相同的网络层(I P),T C P却向应用层提供与U D P完全不同的服务。T C P提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用T C P的应用(通常是一个客转载 2013-11-07 17:11:42 · 632 阅读 · 0 评论 -
posix 信号量与互斥锁 示例生产者--消费者问题 .
一、posix 信号量信号量的概念参见这里。前面也讲过system v 信号量,现在来说说posix 信号量。system v 信号量只能用于进程间同步,而posix 信号量除了可以进程间同步,还可以线程间同步。system v 信号量每次PV操作可以是N,但Posix 信号量每次PV只能是1。除此之外,posix 信号量还有命名和匿名之分(man 7 sem_overview):转载 2013-11-07 17:45:52 · 740 阅读 · 0 评论 -
线程的属性和 线程特定数据 Thread-specific Data
一、posix 线程属性POSIX 线程库定义了线程属性对象 pthread_attr_t ,它封装了线程的创建者可以访问和修改的线程属性。主要包括如下属性:1. 作用域(scope)2. 栈尺寸(stack size)3. 栈地址(stack address)4. 优先级(priority)5. 分离的状态(detached state)6. 调度策略和参数(sc转载 2013-11-07 17:41:56 · 597 阅读 · 0 评论 -
tcp流协议产生的粘包问题和解决方案
我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),在底层通讯中这些数据可能被拆成很多数据包来发送,但是一个数据包有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向转载 2013-11-07 17:31:19 · 1769 阅读 · 0 评论 -
套接字选项
有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.8.1 getsockopt和setsockoptint getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)int setsockopt(int sockfd,int level,int转载 2013-05-31 14:41:17 · 397 阅读 · 0 评论 -
UDP协议TCP
UDP协议是建立在IP协议基础之上的,用在传输层的协议.UDP和IP协议一样是不可靠的数据报服务.UDP的头格式为:0 16 32---------------------------------------------------| UDP源端口 | UDP原创 2013-05-31 14:38:44 · 541 阅读 · 0 评论 -
ICMP协议
ICMP是消息控制协议,也处于网络层.在网络上传递IP数据包时,如果发生了错误,那么就会用ICMP协议来报告错误.ICMP包的结构如下:0 8 16 32---------------------------------------------------------原创 2013-05-31 14:34:53 · 442 阅读 · 0 评论 -
IP头
IP协议 IP协议是在网络层的协议.它主要完成数据包的发送作用. 下面这个表是IP4的数据包格式0 4 8 16 32--------------------------------------------------|版本 |首部长度|服务类型| 数据包总长 |---原创 2013-05-31 12:00:27 · 433 阅读 · 0 评论 -
write and read
int my_write(int fd,void *buffer,int length){int bytes_left;int written_bytes;char *ptr;ptr=buffer;bytes_left=length;while(bytes_left>0){ /* 开始写*/ written_bytes=wri原创 2013-05-31 11:51:09 · 745 阅读 · 0 评论 -
Wireshark
Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码!! wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定原创 2013-05-13 11:48:03 · 699 阅读 · 0 评论 -
tcp 带外数据
定义带 外 数据 想 像一下在银行人们排起队等待处理他们的帐单。在这个队伍中每个人最后都会移到前面由出纳员进行服务。现在想像一下一个走入银行,越过整个队伍,然后用枪抵 住出纳员。这个就可以看作为带 外 数据 。这个强盗越过整个队伍,是因为这把枪给了他凌驾于众人的权力。出纳员也会集中注意力于这个强盗身上,因为他知道当前 的形势是很紧急的。相应的,一个连接的流式套接口上的带 外 数转载 2013-05-21 17:03:55 · 703 阅读 · 0 评论 -
小木马cnc源代码及开发文档
通过浏览器来控制远程UNIX系统。比如输入 http://192.168.0.111:88/cat /etc/shadow 就能在浏览器里看到 /etc/shadow 的内容。目前也就这些可以,比如 ls 等只有输出的命令好使,象 vi 这样的交互式程序就有些麻烦了。不过只要弄熟悉了 UNIX 及 HTTP 的细节应该问题不大的。/* * Author: bobdai * Email转载 2013-05-07 17:40:30 · 835 阅读 · 0 评论 -
一个SYN攻击的代码分析
/* Syn Attack against a port for Solaris */ /* Original land attack, land.c by m3lt, FLC */ /* Ported to 44BSD by blast and jerm */ /* Ported to Solaris by ziro antagonist */ /* Referenced flo转载 2013-05-07 17:48:54 · 645 阅读 · 0 评论 -
高级套接字函数
在前面的几个部分里面,我们已经学会了怎么样从网络上读写信息了.前面的一些函数(read,write)是网络程序里面最基本的函数.也是最原始的通信函数.在这一章里面,我们一起来学习网络通信的高级函数.这一章我们学习另外几个读写函数. 6.1 recv和send recv和send函数提供了和read和write差不多的功能.不过它们提供 了第四个参数来控制读写操作. int原创 2013-05-07 17:34:15 · 481 阅读 · 0 评论 -
Linux UDP 单播 组播 广播实现
1、组播和广播需要在局域网内才能实现,另外得查看linux系统是否支持多播和广播:ifconfigUP BROADCAST MULTICAST MTU:1500 跃点数:1说明该网卡支持2、发送多播包的主机需要设置网关,否则运行sendto()会出现"network is unreachable",网卡可以随便设置,但是一定要设。还要添加路由240.0.0.0,即:route转载 2013-05-03 16:03:41 · 1392 阅读 · 0 评论 -
struct hostent结构体
struct hostent { char *h_name; //地址的正式名称 char **h_aliases; //空字节-地址的预备名称的指针 int h_addrtype;原创 2013-05-03 15:04:42 · 557 阅读 · 0 评论 -
linux网络编程之-----多播(组播)编程
什么是多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。 多播,也称为“组播”,将局域网中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅转载 2013-05-02 10:20:49 · 686 阅读 · 0 评论 -
posix 条件变量与互斥锁 示例生产者--消费者问题 .
一、posix 条件变量一种线程间同步的情形:线程A需要等某个条件成立才能继续往下执行,现在这个条件不成立,线程A就阻塞等待,而线程B在执行过程中使这个条件成立了,就唤醒线程A继续执行。在pthread库中通过条件变量(Condition Variable)来阻塞等待一个条件,或者唤醒等待这个条件的线程。Condition Variable用pthread_cond_t类型的变量表转载 2013-11-07 17:47:09 · 538 阅读 · 0 评论