2013年7月25日

UNIX网络编程——使用select函数的TCP和UDP回射服务器程序

摘要: 服务器程序:#include #include #include #include #include #include #include #include #include #include #include #include #include #define SERV_PORT 3334#def... 阅读全文

posted @ 2013-07-25 19:16 疯子123 阅读(220) 评论(0) 推荐(0) 编辑

UNIX网络编程——UDP 中的外出接口的确定

摘要: 已连接UDP套接字还可用来确定用于特定目的地的外出接口。这是由connect函数应用到UDP套接字时的一个副作用造成的:内核选择本地IP地址。这个本地IP地址通过为目的IP地址搜索路由表得到外出接口,然后选用该接口的主IP地址而选定。 注意:getsockname函数调用的位置。#... 阅读全文

posted @ 2013-07-25 18:38 疯子123 阅读(188) 评论(0) 推荐(0) 编辑

UNIX网络编程——UDP缺乏流量控制(改进版)

摘要: 现在我们查看无任何流量控制的UDP对数据报传输的影响。首先我们把dg_cli函数修改为发送固定数目的数据报,并不再从标准输入读。如下,它写2000个1400字节大小的UDP数据报给服务器。客户端程序cli.c:#include #include #include #include #in... 阅读全文

posted @ 2013-07-25 18:05 疯子123 阅读(177) 评论(0) 推荐(0) 编辑

UNIX网络编程——UDP 的connect函数(改进版)

摘要: 上一篇我们提到,除非套接字已连接,否则异步错误是不会返回到UDP套接字的。我们确实可以给UDP套接字调用connect,然而这样做的结果却与TCP连接大相径庭:没有三次握手。内核只是检查是否存在立即可知的错误(例如一个显然不可达的目的地),记录对端的IP地址和端口号(取自传递给conne... 阅读全文

posted @ 2013-07-25 15:53 疯子123 阅读(256) 评论(0) 推荐(0) 编辑

UNIX网络编程——UDP回射服务器程序(初级版本)以及漏洞分析

摘要: 该函数提供的是一个迭代服务器,而不是像TCP服务器那样可以提供一个并发服务器。其中没有对fork的调用,因此单个服务器进程就得处理所有客户。一般来说,大多数TCP服务器是并发的,而大多数UDP服务器是迭代的。 对于本套接字,UDP层中隐含有排队发生。事实上每个UDP套接字都有一个... 阅读全文

posted @ 2013-07-25 14:53 疯子123 阅读(152) 评论(0) 推荐(0) 编辑

UNIX网络编程——基于UDP协议的网络程序

摘要: 一、下图是典型的UDP客户端/服务器通讯过程 下面依照通信流程,我们来实现一个UDP回射客户/服务器: #include #include ssize_t send(int sockfd, const void... 阅读全文

posted @ 2013-07-25 14:01 疯子123 阅读(127) 评论(0) 推荐(0) 编辑

UNIX网络编程——UDP编程模型

摘要: 使用UDP编写的一些常见得应用程序有:DNS(域名系统),NFS(网络文件系统)和SNMP(简单网络管理协议)。 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须指定目的地(即服务器)的地址作为参数。类似的,服务器不接受来自客户的连接,而是只管调用... 阅读全文

posted @ 2013-07-25 12:16 疯子123 阅读(87) 评论(0) 推荐(0) 编辑

UNIX网络编程——SOCKET API和TCP STATE的对应关系_三次握手_四次挥手及TCP延迟确认

摘要: 在socket系统调用中,如何完成三次握手和四次挥手: SOCK_DGRAM即UDP中的connect操作知识在内核中注册对方机器的IP和PORT信息,并没有建立连接的过程,即没有发包,close也不发包)。 而SOCK_STREAM对应如下: connect会完成TCP的... 阅读全文

posted @ 2013-07-25 11:32 疯子123 阅读(190) 评论(0) 推荐(0) 编辑

UNIX网络编程——通用套接字选项

摘要: 1. SO_BROADCAST 套接字选项 本选项开启或禁止进程发送广播消息的能力。只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上(例如以太网,令牌环网等)。我们不可能在点对点链路上进行广播,也不可能在基于连接的传输协议(例如TCP和SCTP)之上进行广播。 2. SO_DE... 阅读全文

posted @ 2013-07-25 10:54 疯子123 阅读(152) 评论(0) 推荐(0) 编辑

UNIX网络编程——产生RST

摘要: 产生RST的3个条件:1. 建立连接的SYN到达某端口,但是该端口上没有正在监听的服务。 如:IP为192.168.1.33的主机上并没有开启WEB服务(端口号为0x50),这时我们通过IE去访问192.168.1.33,通过Wireshark抓包,可以看到,对此SYN包的回复为RST。说明此... 阅读全文

posted @ 2013-07-25 01:54 疯子123 阅读(149) 评论(0) 推荐(0) 编辑

UNIX网络编程——fcntl函数

摘要: fcntl函数提供了与网络编程相关的如下特性:非阻塞式I/O。 通过使用F_SETFL命令设置O_NONBLOCK文件状态标志,我们可以把一个套接字设置为非阻塞型。信号驱动式I/O。 通过使用F_SETFL命令设置O_ASYNC文件状态标志,我们可以把一个套接字设置成O_ASYNC,一旦其状态发... 阅读全文

posted @ 2013-07-25 01:47 疯子123 阅读(370) 评论(0) 推荐(0) 编辑

UNIX网络编程——内网与外网间通信

摘要: QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!!!一、登录 QQ客户端在局域网内,当你打开QQ登录到QQ服务器时,通过外网,你的... 阅读全文

posted @ 2013-07-25 01:02 疯子123 阅读(127) 评论(0) 推荐(0) 编辑

UNIX网络编程——TCP长连接与短连接的区别

摘要: 一、TCP短连接 我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发... 阅读全文

posted @ 2013-07-25 00:56 疯子123 阅读(142) 评论(0) 推荐(0) 编辑

导航