unix 网络编程
文章平均质量分 72
acp小鸡炖蘑菇
我是程序猿吗?
展开
-
Tcpdump 和 Wireshark 的结合使用(二)
在上一篇博文中我们分别介绍了Tcpdump 和 Wireshark 的简单使用,这一节我们将介绍使用Wireshark 来分析 Tcpdump 抓住的网络包,主要分析TCP三次握手的过程。 1.首先我们在Linux系统运行 下面的命令抓包,并保存在 a.cap 文件中, #tcpdump -i lo -w a.cap 然后运行一个简单的原创 2015-11-18 14:32:19 · 1069 阅读 · 1 评论 -
Socket编程实践(5) --TCP粘包问题与解决
TCP粘包问题 由于TCP协议是基于字节流且无边界的传输协议, 因此很有可能产生粘包问题, 问题描述如下 对于Host A 发送的M1与M2两个各10K的数据块, Host B 接收数据的方式不确定, 有以下方式接收: 先接收M1, 再接收M2(正确方式) 先接收M2, 再接收M1(错误) 一次性收到20k数据(错误)转载 2016-01-04 12:27:35 · 516 阅读 · 0 评论 -
Socket编程实践(6) --TCP服务端注意事项
僵尸进程处理 1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中添加 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法,解决僵尸进程 [cpp] view plaincopy signal(SIGCHLD,onSignalCatch);转载 2016-01-04 12:28:43 · 777 阅读 · 0 评论 -
Socket编程实践(7) --Socket-Class封装(改进版v2)
本篇博客定义一套用于TCP通信比较实用/好用Socket类库(运用C++封装的思想,将socket API尽量封装的好用与实用), 从开发出Socket库的第一个版本以来, 作者不知道做了多少改进, 每次有新的/好的想法尽量实现到该库当中来; 而且我还使用该库开发出作者第一个真正意义上的基于Linux的Server程序[MyHttpd, 在后续的博客当中, 我一定会将MyHttpd的实现原理与实现转载 2016-01-04 12:31:13 · 542 阅读 · 0 评论 -
Socket编程实践(8) --Select-I/O复用
五种I/O模型介绍 (1)阻塞I/O[默认] 当上层应用App调用recv系统调用时,如果对等方没有发送数据(Linux内核缓冲区中没有数据),上层应用Application1将阻塞;当对等方发送了数据,Linux内核recv端缓冲区数据到达,内核会把数据copy给用户空间。然后上层应用App解除阻塞,执行下一步操作。 (2)非阻塞I/转载 2016-01-04 12:32:26 · 520 阅读 · 0 评论 -
Socket编程实践(9) --套接字IO超时设置方法
引:超时设置3种方案 1. alarm超时设置方法 [cpp] view plaincopy //代码实现: 这种方式较少用 void sigHandlerForSigAlrm(int signo) { return ; } signal(SIGALRM, sigHandlerForSigAlr转载 2016-01-04 12:33:41 · 944 阅读 · 0 评论 -
Socket编程实践(10) --select的限制与poll的使用
select的限制 用select实现的并发服务器,能达到的并发数一般受两方面限制: 1)一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。可以通过ulimit -n(number)来调整或者使用setrlimit函数设置,但一个系统所能打开的最大数也是有限的,跟内存大小有关,可以通过cat /proc/sys/fs/file-max 查看 [cpp]转载 2016-01-04 12:35:01 · 451 阅读 · 0 评论 -
Socket编程实践(12) --UDP编程基础
UDP特点 无连接,面向数据报(基于消息,不会粘包)的数据传输服务; 不可靠(可能会丢包, 乱序, 重复), 但因此一般情况下UDP更加高效; UDP客户/服务器模型 UDP-API使用 [cpp] view plaincopy #include #inclu转载 2016-01-04 12:37:28 · 377 阅读 · 0 评论 -
Socket编程实践(13) --UNIX域协议
UNIX域协议 UNIX域套接字与TCP相比, 在同一台主机上, UNIX域套接字更有效率, 几乎是TCP的两倍(由于UNIX域套接字不需要经过网络协议栈,不需要打包/拆包,计算校验和,维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程, 而且UNIX域协议机制本质上就是可靠的通讯, 而网络协议是为不可靠的通讯设计的). UNIX域套接字可以在同一台主机上各进程之转载 2016-01-04 12:38:25 · 389 阅读 · 0 评论 -
Socket编程实践(4) --多进程并发server
1.Socket地址复用 [cpp] view plaincopy int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int lev转载 2016-01-04 12:26:15 · 414 阅读 · 0 评论 -
Socket编程实践(3) --Socket API
socket函数 [cpp] view plaincopy #include #include int socket(int domain, int type, int protocol); 创建一个套接字用于通信 参数: domain:指定通信协议族(protocol family),常用转载 2016-01-04 12:21:53 · 425 阅读 · 0 评论 -
Wireshark和TcpDump抓包分析心得
1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话,我直接用tcpdump了,因为我工作环境中的Linux一般只有字符界面,且一般而言Linux都自带的tcpdump,或者用tcpdump抓包以后用Wireshark打开分析。 在Windows转载 2015-11-18 12:07:38 · 890 阅读 · 0 评论 -
netstat 命令解析
1.netstat命令简介: netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。如网络连接,路由表,接口状态 (Interface Statistics),多播成员 (Multicast Memberships) 等等。 2.命令格式:([]内为可选项) netstat [-acCeFghilMnNop原创 2015-11-17 19:08:24 · 817 阅读 · 0 评论 -
Tcpdump 和 Wireshark 的结合使用(一)
1.Tcpdump 和Wireshark的简介 (1)Tcpdump 我们用尽量简单的话来定义tcpdump,就是:dump the traffice on anetwork.,根据使用者的定义对网络上的数据包进行截获的包分析工具。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东西之一。原创 2015-11-18 13:03:07 · 2877 阅读 · 1 评论 -
tcpdump 命令解析
1. tcpdump命令简介: TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 2. tcpdump 命令格式: tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ]原创 2015-11-17 19:42:56 · 940 阅读 · 1 评论 -
Socket编程实践(1) --TCP/IP简述
ISO的OSI OSI(open system interconnection)开放系统互联模型是由ISO国际标准化组织定义的网络分层模型,共七层, 从下往上为: OSI七层参考模型 物理层(Physical Layer) 物理层定义了所有电子及物理设备的规范,为上层的传输提供了一个物理介质,本层中数据传输的单位为转载 2016-01-04 12:18:29 · 528 阅读 · 0 评论 -
Socket编程实践(2) --Socket编程导引
什么是Socket? Socket可以看成是用户进程与内核网络协议栈的接口(编程接口, 如下图所示), 其不仅可以用于本机进程间通信,可以用于网络上不同主机的进程间通信, 甚至还可以用于异构系统之间的通信。 IPv4套接口地址结构 IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件中转载 2016-01-04 12:20:35 · 320 阅读 · 0 评论 -
Socket编程实践(11) --epoll原理与封装
常用模型的特点 Linux 下设计并发网络程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 select/polL模型和epoll模型。 1 、PPC/TPC 模型 这两种模型思想类似,就是让每一个到来的连接一边自己做事去,别再来烦我(详见本系列博客)转载 2016-01-04 12:36:15 · 541 阅读 · 0 评论