随笔分类 -  网络编程

摘要:第一步1、打开windows设备管理器。2、查看-显示隐藏的设备3、非即插即用驱动程序4、NetGroup Packet Filter Driver 右键属性---驱动程序---启动类型,修改类型为“系统”第二步:在cmd下输入net start npf,打开网络抓包服务第三步:运行wireshark ,此时网卡已经可以正常检测到了 阅读全文
posted @ 2013-07-11 12:55 only_eVonne 阅读(62332) 评论(1) 推荐(1) 编辑
摘要:转自 http://blog.csdn.net/dragonimp/article/details/7371258 UPnP网络的第1步是发现。在将一个设备添加到网络上之后,UPnP发现协议允许该设备向网络中的控制点宣告其服务。同样,当一个控制点被添加到网络后,UPnP发现协议允许该控制点在网上搜索感兴趣的设备。两种情况下的根本信息交换均为一个发现消息,包含有关该设备或其服务之一的一些基础信息(例如其类型、标识符和指向更详细信息的一个指针)。UPnP发现协议基于简单服务发现协议(SSDP)。 UPnP网络中的第2步是描述。控制点在发现一个设备之后仍然对其知之甚少。为了使控制点了解到更多关于设. 阅读全文
posted @ 2013-05-03 13:38 only_eVonne 阅读(1522) 评论(0) 推荐(0) 编辑
摘要:路由是选择一条数据包传输路径的过程,也就是说主机怎么向目的地发送数据的过程。当TCP/IP主机发送IP数据包时,便出现了路由,且当到达IP路由器时还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置,路由器通常被称为网关,它承但着分发数据包的任务。对于发送的主机和路由器而言,必须决定向哪里转发数据包。在决定路由时,IP层查询位于内存中的路由表,然后根据查询规则,进行ip路由。是不是很抽象?先说如何选路: (1)当一个主机试图与另一个主机通信时,IP首先决定目的主机是一个内网还是外网,怎么确定?当然使用网络号。 (2)如果是是同一内网,那就就是直接发送了,这个最简答不过了... 阅读全文
posted @ 2013-04-07 11:45 only_eVonne 阅读(10395) 评论(1) 推荐(1) 编辑
摘要:转自 http://blog.163.com/pandalove@126/blog/static/9800324520122633515612/【遇到问题】 手头原来有一个单进程的linux epoll服务器程序,近来希望将它改写成多进程版本,主要原因有:在服务高峰期间 并发的 网络请求非常海量,目前的单进程版本的程序有点吃不消:单进程时只有一个循环先后处理epoll_wait()到的事件,使得某些不幸排队靠后的socket fd的网络事件处理不及时(担心有些socket客户端等不耐烦而超时断开);希望充分利用到服务器的多颗CPU; 但随着改写工作的深入,便第一次碰到了“惊群”问题,一开始我. 阅读全文
posted @ 2013-03-13 17:06 only_eVonne 阅读(621) 评论(0) 推荐(0) 编辑
摘要:1.如果一个mac上对应有多个ip地址,那么数据按照协议栈向下封装时,怎么确定封装ip头的时候使用哪个ip地址呢?这个是靠数据目的ip决定的,首先系统会根据设备的其他网段的ip和掩码确定目的ip是否是内网的,如果是则用相应的内网ip封装ip头,如果不是,就说明这个数据包时发送到外网的,这个时候就封装外网ip。并将该数据包发送给网关进行转发。如果把一个网段掩码改了,让这个内网变小,那么本来是用内网ip封的数据包,就会改用外网ip封装。2.路由器怎么区分外网传进来的数据是给内网哪台设备的?通信过程要考虑传输层,传输层有端口号。比如用的TCP协议。外网C获得主机AB的IP地址都是路由器的地址说明做了 阅读全文
posted @ 2013-02-23 09:28 only_eVonne 阅读(3761) 评论(1) 推荐(0) 编辑
摘要:什么是A类、B类、C类地址?IP地址有三种基本类型,由网络号的第一组数字来表示。A类地址的第一组数字为1~126。注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。B类地址的第一组数字为128~191。C类地址的第一组数字为192~223。例如:我校的网络号是202.206.64--79 , 它的第一组数字为202,因此202.206.64.34是C类地址。而159.266.1.1则是B类地址。目前IP地址资源较紧张,向INTERNET亚太中心能申请到的大多是C类地址。私有地址上面提到IP地址在全世界范围内唯一,看到这句话你可能有这 阅读全文
posted @ 2012-04-06 13:57 only_eVonne 阅读(95538) 评论(2) 推荐(3) 编辑
摘要:主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在1-4分钟。 TIME_WAIT状态存在的理由:1)可靠地实现TCP全双工连接的终止 在进行关闭连接四路握手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN,因此客户端必须维护状态信息允 许.. 阅读全文
posted @ 2011-12-08 14:04 only_eVonne 阅读(14507) 评论(1) 推荐(5) 编辑
摘要:一、TCP三次握手 传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示:在第一步中,客户端向服务端提出连接 阅读全文
posted @ 2011-12-08 10:00 only_eVonne 阅读(13151) 评论(1) 推荐(1) 编辑
摘要:sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧3.socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))过时了,不要用啊理解 阅读全文
posted @ 2011-12-07 22:09 only_eVonne 阅读(2125) 评论(0) 推荐(0) 编辑
摘要:一、MAC帧头定义/*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{char m_cDstMacAddress[6];//目的mac地址char m_cSrcMacAddress[6];//源mac地址short m_cType; //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp}__attribute__((packed))MAC_FRAME_HEADER,*PMAC_FRAME_HEADER;typedef struct _MAC_FRAME_TAIL{unsigned int m_sCheck... 阅读全文
posted @ 2011-12-07 21:29 only_eVonne 阅读(49936) 评论(1) 推荐(5) 编辑
摘要:(一)基础知识IPv4 数据报最大大小是65535(16位),包括IPv4头部。IPv6 数据报最大大小是65575,包括40个字节的IPv4头部MTU,这是由硬件规定的,如以太网的MTU是1500字节,IPv4要求最小MTU是68字节,IPv6要求最小MTU是576字节path MTU: 指两台主机间的路径上最小MTU分片(fragmentation):指ip数据报大小超过相应链路的MTU,IPv4和IPv6都将对ip数据进行分片,到达目的主机后进行重组。IPv4头部的DF位用于设置分片还是不分片MSS:最大分节大小,向对方TCP通告被通告方在每个分节中能发送的最大TCP数据量。MSS的目的 阅读全文
posted @ 2011-11-21 20:14 only_eVonne 阅读(13697) 评论(0) 推荐(1) 编辑
摘要:在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024 表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。epoll的接口非常简单,一共就三个函数:1. int epo 阅读全文
posted @ 2011-08-28 15:07 only_eVonne 阅读(884) 评论(0) 推荐(0) 编辑