网络编程
文章平均质量分 73
petershina
123
展开
-
SPF的最短路径算法
常见的路由协议比如RIP、IGRP、BGP是距离矢量协议,OSPF和ISIS是数据链路状态协议。矢量协议路由器只知道本身和与自身相连的接口路由信息,矢量图只是一张方向图,在路由传播的过程中,容易造成环路。RIP路由器采用扁平化设计规避环路,BGP则采用As-path规避环路。OSPF是数据链路状态路由协议,采用的SPF算法,即最小生成树算法(Dijkstar),ospf内不存在路由环路,但是OSPF间传递路由信息的时候,却是矢量路由协议,也就是说OSPF之间传递路由信息的时候,会产生路由环路。 ...原创 2020-11-20 21:37:36 · 1616 阅读 · 0 评论 -
IPv6无状态地址自动配置机制分析
IPv6协议是下一代互联网的核心协议,他解决了IPv4协议所暴露的诸多缺陷,如地址稀缺、路由表庞大、对移动设备支持不足等。IPv6协议的一个突出特点是支持网络节点的地址自动 配置,这极大地简化了网络管理者的工作。 1IPv6地址格式及地址配置方式 一个典型的IPv6主机单播地址由3部分组成:全局路由前缀、子网ID和接口ID(64位)。全局 路由前缀用来识别分配给一原创 2013-05-10 10:26:35 · 5389 阅读 · 0 评论 -
如何设置另一网段的ip作为本机的网关
如何设置另一网段的ip作为本机的网关? 一般来说我们上网(wan)都需要isp给我们一个网关地址(无论我们的地址是静态的还是动态分配的),并且,一般的情况下,这个网关地址跟本地外网地址是同一个网段;然而,我遇到两种与此不同的情况: 1。pppoe(adsl)上网,有时,本地分配到的外网地址是61.xxx.xxx.xxx,而网关是218.xxx.xxx.xxx,这里,由于是ppp协议,p原创 2013-05-10 15:04:59 · 2773 阅读 · 0 评论 -
理解链路本地址与站点本地地址
关于link-local和site-local address的问题 2010-06-24 23:43:10| 分类:CISCO | 标签:|字号大中小 订阅学习IPV6的时候涉及到一个概念,link-local address, 中文叫“链路本地地址”,它的前缀是FE80::/64一个link-原创 2013-05-15 17:08:09 · 6026 阅读 · 0 评论 -
SOCKS代理的实现
网络编程中,对于数据传输实时性要求较高的场合,大家都会选择UDP来作为数据传输协议,在TCP/IP协议族中UDP协议较TCP协议需要的网络系统资源更少。然而在企业应用中,由于网络安全原因等会导致除了特定端口以外的IP数据无法通过专用的路由或网关。为了支持这类应用,制定了专门的支持Socks连接的socks4/socsk5协议。Socks协议允许实现此类功能的代理软件可以允许防火墙(本文以下内容中防原创 2013-06-22 19:25:14 · 3424 阅读 · 0 评论 -
转载的socks4 socks5 rfc1928一大堆
除了这个意译版rfc1928外,其他人写的好像也有错误,都是一知半解。☆ RFC 1928意译版(非直译版)http://www.ietf.org/rfc/rfc1928.txthttp://www.sczgroup.org/network/200503311423.txtSOCKS协议位于传输层(TCP/UDP等)与应用层之间,因而显然地位于网络层(IP)之上。诸原创 2013-06-26 14:21:09 · 2060 阅读 · 0 评论 -
使用linux配置dhcp v6服务器
aptitude install -y wide-dhcpv6-server## 配置文件 /etc/wide-dhcpv6/dhcp6s.conf ## sample 配置文件/usr/share/doc/wide-dhcpv6-server/examples ## 启动初始化脚本/etc/default/wide-dhcpv6-server ## 服务程原创 2013-07-24 13:39:24 · 11711 阅读 · 0 评论 -
SOCKS5中的UDP穿透
无论是TCP还是UDP通过代理,首先要同代理取得联系。为了能够确保在第一阶段顺利确保数据传输,协议规定客户端采用TCP方式连接联系代理服务器。 一旦客户同代理的1080端口连接上,客户首先要发送一个版本标识/方法选择的TCP报文给代理服务器,具体格式为: 版本号(1字节) |可供选择的认证方法(1字节) |方法序列(1-255个字节长度) 如果是so原创 2013-08-13 13:36:15 · 2770 阅读 · 1 评论 -
libpcap的一些主要函数和结构介绍
一)数据结构•1) typedef struct _ADAPTER ADAPTER //描述一个网络适配器;•2) typedef struct _PACKET PACKET //描述一组网络数据报的结构;•3) typedef struct NetType NetType //描述网络类型的数据结构;•4) typedef struct npf_if_addr npf_if_原创 2014-01-02 15:59:35 · 6456 阅读 · 0 评论 -
Linux 网络编程之ioctl函数
1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现.2.相关结构体与相关函数#include int ioctl(int d,int request,....);参数:d原创 2014-01-21 16:54:41 · 863 阅读 · 0 评论 -
linux、windows路由设置
一:使用 route 命令添加使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法://添加到主机的路由# route add –host 192.168.1.11 dev eth0# route add –host 192.168.1.12 gw 192.168.1.1//添加到网络的路由# route add –net 192.168.1.11 n原创 2014-02-20 11:13:50 · 1002 阅读 · 0 评论 -
ICMP重定向
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发ICMP应用分析-ICMP重定向 ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包(类型5、代码0:原创 2014-11-24 19:21:17 · 5923 阅读 · 0 评论 -
简单实现traceroute功能
摘要 本文描述RTP(real-time transport protocol),实时传输协议。RTP在多点传送(多播)或单点传送(单播)的网络服务上,提供端对端的网络传输功能,适合应用程序传输实时数据,如:音频,视频或者仿真数据。RTP没有为实时服务提供资源预留的功能,也不能保证QoS(服务质量)。数据传输功能由一个控制协议(RTCP)来扩展,通过扩展,可以用一种方式对数据传输进行监测控原创 2015-02-05 15:57:19 · 4295 阅读 · 0 评论 -
TIME_WAIT/CLOSE_WAIT状态区别
在TCP断开的过程中会有四个状态变化过程,如下图所示:常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证原创 2015-01-23 09:27:51 · 860 阅读 · 0 评论 -
TCP的状态迁移
TCP正常建立和关闭的状态变化TCP连接的建立可以简单的称为三次握手,而连接的中止则可以叫做 四次握手。建立连接在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn原创 2015-04-17 09:18:31 · 1174 阅读 · 0 评论 -
epoll详解和使用
什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的相关原创 2016-01-31 15:42:27 · 3418 阅读 · 0 评论 -
IPv6 路由相关知识
随着Internet惊人的成长,IPv6变得越来越重要。IPv6路由成为另一个重要的研究领域。Linux支援IPv6是最令人高兴的一件事。因此Linux平台在IPv6的实作里面变得越来越重要。这份文件的目的在于阐明Linux的路由架构与Linux如何应用在IPv6的路由上。序论Linux已成为主流操作系统之一。他低廉的价格,稳定以及对IPv6良好的支持让他成为实作IPv6相当好的平台。至于原创 2013-05-09 16:35:11 · 1509 阅读 · 0 评论 -
检测网络是否联通:SIOCETHTOOL
#include #include #include #include #include #include #include #include #include typedef unsigned short u16;typedef unsigned int u32;typedef unsigned char u8;#includ原创 2013-05-20 09:57:10 · 2287 阅读 · 0 评论 -
ipv6_route的内容解释
以下是if_inet6内容2000000100020003024048fffeb5b1a6 02 40 00 80 eth0fe80000000000000024048fffeb5b1a6 02 40 20 80 eth02000000100020005169ecc9dea06e45b 02 40 00 80 eth000000000000000000000原创 2013-04-10 18:52:52 · 2802 阅读 · 0 评论 -
有关send() / recv()函数的理解
1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接字描述符; 第二个参数指明原创 2012-09-13 17:08:12 · 1239 阅读 · 0 评论 -
select和pselect区别
int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct times转载 2012-09-18 10:05:24 · 8674 阅读 · 4 评论 -
TCP 和 UDP 协议发送数据包的大小
MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构DMAC+SMAC+Type+Data+CRC由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。由于以太网EthernetII最大的数据帧是15原创 2012-09-21 14:37:52 · 875 阅读 · 0 评论 -
ipv6子网掩码划分
IPv6中没有子网掩码的概念,也没有网络号与主机号的概念。取而代之的是“前缀长度”和“接口ID”。前缀长度就可以当作子网掩码来理解。接口ID可以当作主机号来理解。比如地址2001:1234:2234:abcd::1/64就表示前缀长度为64位,剩下的是接口ID。在Windows XP中,IPv6地址的前缀长度默认为64位。(好像不能更改)比如在命令行下配置地址:ipv6 adu 5/2001:12原创 2012-11-08 11:44:12 · 49524 阅读 · 0 评论 -
jrtplib介绍
一、流媒体简介随着Internet 的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒体文件时,基本上只有下载和流式传输两种选择。通常说来,A/V文件占据的存储空间都比较大,在带宽受限的网络环境中下载可能要耗费数分钟甚至数小时,所以这种处理方法的延迟很大。如果换用流式传输的话,声音原创 2012-12-11 15:59:56 · 630 阅读 · 0 评论 -
网关、路由器、DNS等网络术语的通俗比喻
假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关。当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声他的名字,他听到了就会回应你,并且跑出来跟你玩。 但是你不被允许走出大门,你想与外界发生的一切联系,都必须由门口的李大爷(网关)用电话帮助你联系。假如你想找你的同学小明聊天,小明家住在很远的另外一个院子里,他家的院子里也有一原创 2013-01-31 15:33:22 · 1545 阅读 · 0 评论 -
Nagle算法 TCP_NODELAY和TCP_CORK
Nagle算法 TCP_NODELAY和TCP_CORKNagle算法根据创建者John Nagle命名。该算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用 程序系统的效率。Nagle算法,由Ford Aerospace And Communications Corporation Congestion Cont原创 2013-02-01 10:46:57 · 562 阅读 · 0 评论 -
traceroute程序
traceroute程序主要是能列出到达目标主机所经过的路由。traceroute最简单的基本用法是:traceroute hostname。traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram到目的地,当路径上的第一个路由器(router)收到这个d原创 2013-02-02 15:04:21 · 1272 阅读 · 0 评论 -
ping程序的实现
关于网络编程,知之甚少,linux环境下编程的经验也比较缺乏,于是乎,在百度文库上下载了一个关于ping的程序设计,照着将代码敲打一遍,顺便熟悉某些东东。 敲完代码,运行时,发现错误极多,正好也试着学习用GDB调试。下面是一些琐碎的知识点,写写加深印象。 1. 关于ping程序 用于确定本地主机与网络中其它主机的网络通信情况,常使用ping程序。ping程序向指定的IP原创 2013-02-05 14:05:59 · 18316 阅读 · 2 评论 -
常用端口号对照表
用户可以直接在linux命令行下输:grep /etc/services,如 grep ftp /etc/services端口:1服务:tcpmux说明:这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,默认情况下tcpmux在这种系统中被打开。Irix机器在发布是含有几个默认的无密码的帐户,如:IP、GUEST UUCP、NUUCP、原创 2013-02-04 15:35:18 · 2813 阅读 · 0 评论 -
ethhdr、ether_header、iphdr、tcphdr、udphdr 结构介绍
************************eth的结构**************************************struct ethhdr {unsigned char h_dest[ETH_ALEN];unsigned char h_source[ETH_ALEN];__be16 h_proto;} __attribute__((packed));原创 2013-02-06 13:52:03 · 4342 阅读 · 0 评论 -
TCP/IP四层模型和OSI七层模型对应表
TCP/IP四层模型和OSI七层模型对应表。我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类。 表1-1 TCP/IP四层模型和OSI七层模型对应表OSI七层网络模型Linux TCP/IP四层概念模型对应网络协议应用层(Application)应用层T原创 2013-03-07 10:15:41 · 16216 阅读 · 0 评论 -
TCP连接三次握手
TCP是面向连接的协议,面向连接的意思就是在连接的基础上实现数据的传输。TCP面向连接保证了它在通信过程中的可靠性。TCP头部是20个字节,详细的报文格式和各个字段的解释可以看下面:在TCP通信之前,建立连接的过程被称为三次握手,下面是wireshark抓出来的图。1.第一次握手:客户端发送SYN标志,序列号seq(随机生成,图中序列号是0是wireshark做了相对处原创 2013-02-27 11:12:57 · 3795 阅读 · 2 评论 -
linux下的原始套接字
实际上,我们常用的网络编程都是在应用层的报文的收发操作,也就是大多数程序员接触到的流式套接字(SOCK_STREAM)和数据包式套接字(SOCK_DGRAM)。而这些数据包都是由系统提供的协议栈实现,用户只需要填充应用层报文即可,由系统完成底层报文头的填充并发送。然而在某些情况下需要执行更底层的操作,比如修改报文头、避开系统协议栈等。这个时候就需要使用其他的方式来实现。 一 原始套原创 2013-02-27 20:20:55 · 2145 阅读 · 0 评论 -
setsockopt :SO_LINGER 选项设置
setsockopt 设置 SO_LINGER 选项 此选项指定函数close对面向连接的协议如何操作(如TCP)。内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。 SO_LINGER选项用来改变此缺省设置。使用如下结构:struct linger { int l_onoff; /* 0 = off, noz原创 2013-04-07 22:59:17 · 664 阅读 · 0 评论 -
IPV4 与IPV6 头部结构与其区别
IPV4I P数据报非常简单,就是在数据块(称为净荷)的前面加上一个包头。I P数据报中的数据(包括包头中的数据)以3 2位( 4字节或4个八位组)的方式来组织。图2 - 3中展示了I P头字段的排列。从中可以看出,所有I P数据报头最小长度是5个字( 2 0字节),如果有其他选项的话,包头可能会更长。1. IP头字段I P v 4头字段包括:• 版本:这个4位字段原创 2013-03-25 14:43:44 · 1455 阅读 · 0 评论 -
bind出现Address already in use解决方法
每次修改了源代码并再次编译运行时,常遇到下面的地使用错误:Cann't bind server socket !: Address already in use虽然用Ctrl+C强制结束了进程,但错误依然存在,用netstat -an |grep 5120和ps aux |grep 5120都还能看到刚才用Ctrl+C“强制结束”了的进程,端口还是使用中,只好每次用kill结束进程,很翻译 2012-09-07 14:56:12 · 85086 阅读 · 3 评论