学习TCP/IP时遇到的相关文章
文章平均质量分 76
satanwxd
在读研究生
展开
-
linux 客户端 Socket 非阻塞connect编程
linux 客户端 Socket 非阻塞connect编程(正文)/*开发过程与源码解析<br />开发测试环境:虚拟机CentOS,windows网络调试助手<br /> 非阻塞模式有3种用途<br /> 1.三次握手同时做其他的处理。connect要花一个往返时间完成,从几毫秒的局域网到几百毫秒或几秒的广域网。这段时间可能有一些其他的处理要执行,比如数据准备,预处理等。<br /> 2.用这种技术建立多个连接。这在web浏览器中很普遍.<br />转载 2010-12-19 13:00:00 · 949 阅读 · 0 评论 -
gethostbyname和gethostbyaddr的用法
<br />ubuntu 主机名<br />使用下面的命令来查看当前主机的主机名称:<br />sudo /bin/hostname<br />或者:<br />hostname<br />使用下面的命令来设置当前主机的主机名称:<br />sudo /bin/hostname newname<br />要永久重设主机名则需手工修改/etc/hostname文件。<br /> 刚刚在做域名解析那,对这稍微有所了解,把刚刚的一点心得整理了下,共享之。<br /><br />先看下这个函数:gethostbyn转载 2011-02-16 12:46:00 · 3893 阅读 · 1 评论 -
IPv6和IPv4之间的通信机制和方法
在前面两个部分(《IPv6技术之发展现状和技术原理》《IPv6技术之移动连接特性简述》)中主要讲解了IPv6自身的一些原理和特点,但是由于现存的网络体系多为IPv4结构,因此,在今后较长的一段时间里都将是两者相互并存,这就势必造成两者之间相互通信的问题,幸好,IPv6的设计者们已经为这个问题准备好了解决方法。 一、背景现状 尽管IPv6已被认为是下一代互联网络协议核心标准之一。但是,新生事物从诞生到广泛应用需要一个过程,尤其是对于现时IPv4仍然很好的支撑着的Internet。在IPv6的网络流行于全球之前转载 2011-02-17 12:38:00 · 8500 阅读 · 0 评论 -
查看返回接收到UDP数据包的宿地址结构--(适用于LINUX和BSD系统)
/*<br /> * recvfromto Like recvfrom, but also stores the destination<br /> * IP address. Useful on multihomed hosts.<br /> *<br /> * Should work on Linux and BSD.<br /> *<br /> * Copyright (C) 2002 Miquel van Smoorenburg.<br /> *<br /> * This program i转载 2011-03-09 15:33:00 · 2772 阅读 · 0 评论 -
如何开启_GNU_SOURCE宏
<br />在编写网络程序时,会涉及到一些关于BSD系统保留下的结构体和宏定义,关于一切配置在linux系统的/usr/include/features.h文件中,开启项如下:<br />#ifdef _GNU_SOURCE<br /># undef _ISOC99_SOURCE<br /># define _ISOC99_SOURCE 1<br /># undef _POSIX_SOURCE<br /># define _POSIX_SOURCE 1<br /># undef _POSIX_C_S原创 2011-03-09 16:34:00 · 7778 阅读 · 0 评论 -
用syslog记录UNIX日志
<br />一, 记录UNIX类主机的log信息:<br />首先需要对Freebsd的syslog进行配置,使它允许接收来自其他服务器的log信息。<br />在/etc/rc.conf中加入:<br />syslogd_flags="-4 -a 0/0:*"<br />说明:freebsd的syslogd参数设置放在/etc/rc.conf文件的syslogd_flags变量中<br />Freebsd对syslogd的默认设置参数是syslogd_flags="-s",(可以在/etc/default转载 2011-02-21 15:41:00 · 4509 阅读 · 0 评论 -
syslog(),openlog(),closelog()
<br />这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。<br /> 通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf,该文件决定了不同种类的消息应送向何处。例如,紧急消息可被送向系统管理员(若已登录),并在控制台上显示,而警告消息则可记录到一个文件中。该机制提供了syslog函数,其调用格式如下 <br转载 2011-02-21 16:00:00 · 2056 阅读 · 0 评论 -
ubuntu9.10 tftp服务设置(这个绝对好使)
<br />通过google参考了一些网友的tftp设置方法,下面的设置步骤通过我的验证是可以同过的。<br />1.安装程序<br />通过软件管理安装 tftp tftpd,前者是客户端,后者是服务程序。系统根据依赖会选上openbsd-inetd.<br />sudo apt-get install tftp tftpd<br />2.在/home目录下建一个tftpboot, 把属性改成777。<br />cd /home<br />sudo mkdir tftpboot<br />sudo chm转载 2011-02-22 18:39:00 · 2202 阅读 · 0 评论 -
Ubuntu安装后的一些配置
<br />Ubuntu安装后的一些配置<br />ubuntu安装后root用户是禁用的,首先使用以下命令<br />sudo passwd root 启用 root 帐号 (也就是 设置一个口令) 使用<br />当你使用完毕后屏蔽 root 帐号 使用sudo passwd root命令<br />也可以直接使用sudo -s -H命令切换到root下,<br />一、安装VMware Tools<br />首先说明一下我的版本,vmware station6.03 ubuntu8.04,<br /转载 2011-02-22 15:29:00 · 3070 阅读 · 0 评论 -
从网上搜索到的一些关于pcap源代码,入门级的
<br />#include <stdio.h><br />#include <stdlib.h><br />#include <pcap.h> /* 如果没有pcap的系统,要自己下载一个 */<br />#include <errno.h><br />#include <sys/socket.h><br />#include <netinet/in.h><br />#include <arpa/inet.h><br />int main(int argc, char **argv)<br />{<br转载 2011-03-16 15:48:00 · 2254 阅读 · 0 评论 -
Linux—— Posix IPC
<br />最好的参考资料:<br />1.师从互联网。<br />2.UNP v2 Posix IPC的相关章节2、5、10、13。<br />3.Linux man 命令。<br /> 先缅怀下 Stevens 大师。好那么开始~~~~ 说点不打紧的,虽说Posix IPC 是标准的IPC,是以后趋势,但是,现在大多数应用程序仍然在使用 System V IPC机制。这里从APUE和《深入理解Linux内核架构》一点都没介绍,ULK也只是介绍了Posix 消息队列。<br />第一条:Pos转载 2011-03-18 16:07:00 · 7002 阅读 · 0 评论 -
关于UNIXDOMAIN协议的接收发送者验证
<br />在Linux上, <br />1) receiver 要 setsockopt SO_PASSCRED <br />2) sender 要显式的调用 sendmsg [cmsg_type SCM_CRENDENTIALS, cmsg_data 为 ucred 并由 sender 填充 (kernel会作检验,如果pid/uid/gid不正确, 则会报错 "Operation not permitted" )] <br />3) receiver 用 recvmsg 接收。 <br /><br /原创 2011-03-01 13:23:00 · 3577 阅读 · 0 评论 -
I/O操作上设置超时之alarm闹钟法
<br />环境是linux ubuntu系统<br />调用 alarm,它在指定超时期满时产生SIGALRM信号。这个方法涉及信号处理。<br />用法:<br /> alarm(time):TIME就是指定的超时期;如果之前设有超时期,alarm()会返回其时期的剩余值;<br /> signal(SIGALARM, connect_alarm):指定connect_alarm函数是时钟期满时的处理函数;<br />函数退出前要关闭时钟:<br /> Sigfunc *sigfunc;原创 2011-03-01 16:36:00 · 3723 阅读 · 0 评论 -
tcpdump抓包分析详解
說實在的,對於 tcpdump 這個軟體來說,你甚至可以說這個軟體其實就是個駭客軟體, 因為他不但可以分析封包的流向,連封包的內容也可以進行『監聽』, 如果你使用的傳輸資料是明碼的話,不得了,在 router 上面就可能被人家監聽走了! 很可怕吶!所以,我們也要來瞭解一下這個軟體啊!(註:這個 tcpdump 必須使用 root 的身份執行)[root@linux ~]# tcpdump [-nn] [-i 介面] [-w 儲存檔名] [-c 次數] [-Ae]转载 2011-01-14 16:50:00 · 2728 阅读 · 0 评论 -
setsockopt函数详解
<br />int setsockopt (<br />SOCKET s, <br />int level, <br />int optname, <br />const char FAR * optval, <br />int optlen <br />);<br />The Windows Sockets setsockopt function sets a socket option.转载 2010-12-24 12:05:00 · 883 阅读 · 0 评论 -
设计由Inetd启动的服务程序
<br />我们有一台SUN服务器,因为工作需要,要求服务器上运行按自己需求实现的网络服务程序,但又不希望服务程序一直运行着,占用太多的系统资源。为了设计这个服务程序,我们试用了几种方法,最后发现利用UNIX提供的inetd的守护进程设计服务程序,程序最简单,占用资源最少,运行最可靠。当然,在设计这种服务程序的时候,也需要一些小技巧。下面我们将给出一个简单的例子,把设计这种服务程序的方法介绍给大家。这种方法同样适用于在Linux系统中实现由inetd启动的服务程序。<br /> <br />一、Inetd的转载 2010-12-24 15:37:00 · 873 阅读 · 0 评论 -
fork、exec
<br />对于fork():<br />1、子进程复制父进程的所有进程内存到其内存地址空间中。父、子进程的<br />“数据段”,“堆栈段”和“代码段”完全相同,即子进程中的每一个字节都 <br /> 和父进程一样。<br />2、子进程的当前工作目录、umask掩码值和父进程相同,fork()之前父进程<br /> 打开的文件描述符,在子进程中同样打开,并且都指向相同的文件表项。<br />3、子进程拥有自己的进程ID。<br /><br /> 一个程序一调用fork函数,系统就为一个新的进程准备了原创 2010-12-24 16:23:00 · 852 阅读 · 0 评论 -
使用宏模拟htonl、ntohl、htons、ntohs的实现
<br />typedef unsigned short int uint16;<br />typedef unsigned long int uint32;<br /><br />// 短整型大小端互换<br />#define BigLittleSwap16(A) ((((uint16)(A) & 0xff00) >> 8) | /<br /> (((uint16)(A) & 0x00ff)转载 2011-01-03 16:23:00 · 4624 阅读 · 0 评论 -
linux下错误的捕获:errno和strerror的使用
<br />经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。<br /> 在程序代码中包含 #include <errno.h>,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量就可以获得失败原因了。<br /> 例如:<br />#includ转载 2011-01-06 17:18:00 · 1483 阅读 · 0 评论 -
va_start()va_end()和vsnprintf()函数应用
<br />va_start()va_end()函数应用:<br />man:<br /> #include <stdarg.h><br /> void va_start(va_list ap, last);<br /> type va_arg(va_list ap, type);<br /> void va_end(va_list ap);<br /> void va_copy(va_list dest, va_list src);<br />1转载 2011-01-06 17:20:00 · 11607 阅读 · 0 评论 -
LINUX 环境变量总结
<br />我们在Linux下安装系统软件的时候,经常遇到一些系统环境变量配置的问题。什么是环境变量?如何定制环境变量?我将在下面做一些介绍。<br />一、什么是环境变量?<br />Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。<br />二、定制环境变量 <br />环境变量是和Shell紧密相关的,它是通过Shell命令来设置的。环境变量又可以被所有当转载 2011-01-06 21:16:00 · 897 阅读 · 0 评论 -
exec函数族
<br />1.10.1 简介<br />说是exec系统调用,实际上在Linux中,并不存在一个exec()的函数形式,exec指的是一组函数,一共有6个,分别是:#include <unistd.h>int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg, .原创 2011-01-08 12:28:00 · 926 阅读 · 1 评论 -
sscanf 用法详解
<br />sscanf<br /> 名称:<br /> sscanf() - 从一个字符串中读进与指定格式相符的数据. <br /> 函数原型:<br /> Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );<br /> int scanf( const char *format [,argument]... ); <br /> 说明:<br /> sscanf与scanf类似,都是用于输入的,只是后者以屏幕(s转载 2011-01-12 10:43:00 · 2105 阅读 · 0 评论 -
堆和栈的区别(转过无数次的文章)
<br />一、预备知识—程序的内存分配 <br /> 一个由C/C++编译的程序占用的内存分为以下几个部分 <br /> 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 <br /> 操作方式类似于数据结构中的栈。 <br /> 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 <br /> 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 <br /> 3、转载 2011-01-13 12:38:00 · 2031 阅读 · 1 评论 -
在ubuntu下安装ACE编译环境
<br />1.使用http://riverace.com/downloads.htm#ace_releases下载下来的ACE包进行编译:<br />2.先用gedit /etc/bash.bashrc 打开脚本文件,并在上面加上一下环境变量<br />#ACE env<br />export ACE_ROOT=/ACE_wrappers<br />export MPC_ROOT=$ACE_ROOT/MPC<br />export LD_LIBRARY_PATH=$ACE_ROOT/lib:/usr/lo原创 2011-04-03 13:23:00 · 3747 阅读 · 0 评论