Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51313
  • 博文数量: 13
  • 博客积分: 1496
  • 博客等级: 上尉
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-10 00:11
文章分类

全部博文(13)

文章存档

2011年(1)

2010年(5)

2009年(7)

我的朋友

分类:

2009-04-10 10:38:47

  1. 前言:

           

     1.1概念: 网络编程是指网络通信程序,以完成网络上不同的程序间的通讯。网络程序分为客户端和服务器两部分。服务器处理客户端的请求并将结果发送给客户端。

                                             

     1.2 范围: 网络编程涉及的范围很广:

                                                          

     1. 所支持的通讯协议(TCP/Ip,NetBEUI,IPX/SPX) ,

                                                          

     2. 运行的系统(unix.linux,windows) 

                                                        

     3.网络API(套接字API,XTI等)

                   

      4.使用的编程语言(c/c++ /java 等)

                                

    1.3本书主要以Tcp/Ip协议簇(几乎所有的操作系统都广泛的支持),unix/linux系统开发环境(喜欢开源,当然如果有必要的话,windows平台的也会相应串讲),套接字API(目前最为流行) 使用c/c++(个人喜欢底层的东西,java也学过,比c/c++容易点)。

         

                          

     1.4软件开发环境:我们这个环境是linux下的,建议大家去装一下linux系统(我用的是redhat9.0),网上有很多安装教程,这里就啰嗦了。

                                           

     1.5开发工具:掌握vi编辑器,gcc编译器,gdb调试器。

                                            

     1.6.常用的命令:ping,ifconifig,route:主要是对路由表进行操作,tcpdump:用于转储网络上的数据流

       

     1.7适用读者:喜欢网络,喜欢编程。

                                            

     1.8省略了网络基础知识,详细参考:计算机网络(第5版) 谢希仁 ,unix网络编程(Richard stevens),tcp\ip详解。

文件:教你网络编程1.rar
大小:7KB
下载:下载

                                      

2.linux/unix 基础(已经学过的可以略过)

    在网络编程中为了调试经常用到某些常用的命令,以查看或者修改网络配置,监听网络运行。以下介绍几种常用命令:

                                            

     2.1 ping命令

                                                  

      

          --------------------------------------------------------------------------------

 

  功能说明:检测主机。

   语  法:ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

  补充说明:执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

参  数:

  -d   使用Socket的SO_DEBUG功能。

  -c<完成次数>   设置完成要求回应的次数。

  -f   极限检测。

  -i<间隔秒数>   指定收发信息的间隔时间。

  -I<网络界面>   使用指定的网络界面送出数据包。

  -l<前置载入>   设置在送出要求信息之前,先行发出的数据包。

  -n   只输出数值。

  -p<范本样式>   设置填满数据包的范本样式。

  -q   不显示指令执行过程,开头和结尾的相关信息除外。

  -r   忽略普通的Routing Table,直接将数据包送到远端主机上。

  -R   记录路由过程。

  -s<数据包大小>   设置数据包的大小。

  -t<存活数值>   设置存活数值TTL的大小。

  -v   详细显示指令的执行过程。 

实例:ping 192.168.0.1 

     该命令检测本机是否与“192.168.0.1”连接。如果收到远程主机的回应,则说明本机与远程主机通信状态良好,否则存在网络故障。

2.2 ifconifg 命令

作用

    ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。

  格式

    ifconfig -interface [options] address

  主要参数

-interface:指定的网络接口名,如eth0和eth1。

up:激活指定的网络接口卡。

down:关闭指定的网络接口。

broadcast address:设置接口的广播地址。

pointopoint:启用点对点方式。

address:设置指定接口设备的IP地址。

netmask address:设置接口的子网掩码。

    应用说明

    ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令:

    #fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127

    该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失。

    如果要暂停某个网络接口的工作,可以使用down参数:

#ifconfig eth0 down 

2.3   netstat命令

    1.作用

    检查整个Linux网络状态。

    2.格式

    netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]

    3.主要参数

-a--all:显示所有连线中的Socket。

-A:列出该网络类型连线中的IP相关地址和网络类型。

-c--continuous:持续列出网络状态。

-C--cache:显示路由器配置的快取信息。

-e--extend:显示网络其它相关信息。

-F--fib:显示FIB。

-g--groups:显示多重广播功能群组组员名单。

-h--help:在线帮助。

-i--interfaces:显示网络界面信息表单。

-l--listening:显示监控中的服务器的Socket。

-M--masquerade:显示伪装的网络连线。

-n--numeric:直接使用IP地址,而不通过域名服务器。

-N--netlink--symbolic:显示网络硬件外围设备的符号连接名称。

-o--timers:显示计时器。

-p--programs:显示正在使用Socket的程序识别码和程序名称。

-r--route:显示Routing Table。

-s--statistice:显示网络工作信息统计表。

-t--tcp:显示TCP传输协议的连线状况。

-u--udp:显示UDP传输协议的连线状况。

-v--verbose:显示指令执行过程。

-V--version:显示版本信息。

-w--raw:显示RAW传输协议的连线状况。

-x--unix:和指定“-A unix”参数相同。

--ip--inet:和指定“-A inet”参数相同。

    4.应用实例

    netstat主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可:

#netstat -a

Active Internet connections (only servers)

Proto  Recv-Q   Send-Q    Local Address  Foreign Address  State

tcp     0    0   *:32768 *:* LISTEN

tcp     0      0   *:32769 *:* LISTEN

tcp     0    0   *:nfs *:* LISTEN

tcp     0    0   *:32770 *:* LISTEN

tcp     0    0   *:868 *:* LISTEN

tcp     0    0   *:617 *:* LISTEN

tcp     0    0   *:mysql *:* LISTEN

tcp     0    0   *:netbios-ssn *:* LISTEN

tcp     0    0   *:sunrpc *:* LISTEN

tcp     0    0   *:10000 *:* LISTEN

tcp     0    0   *:http *:* LISTEN

......

上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。 

2.4 tcpdump命令

功能说明:倾倒网络传输数据。

语  法:tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

补充说明:执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。

参  数:
  -a   尝试将网络和广播地址转换成名称。
  -c<数据包数目>   收到指定的数据包数目后,就停止进行倾倒操作。
  -d   把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  -dd   把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  -ddd   把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  -e   在每列倾倒资料上显示连接层级的文件头。
  -f   用数字显示网际网络地址。
  -F<表达文件>   指定内含表达方式的文件。
  -i<网络界面>   使用指定的网络截面送出数据包。
  -l   使用标准输出列的缓冲区。
  -n   不把主机的网络地址转换成名字。
  -N   不列出域名。
  -O   不将数据包编码最佳化。
  -p   不让网络界面进入混杂模式。
  -q   快速输出,仅列出少数的传输协议信息。
  -r<数据包文件>   从指定的文件读取数据包数据。
  -s<数据包大小>   设置每个数据包的大小。
  -S   用绝对而非相对数值列出TCP关联数。
  -t   在每列倾倒资料上不显示时间戳记。
  -tt   在每列倾倒资料上显示未经格式化的时间戳记。
  -T<数据包类型>   强制将表达方式所指定的数据包转译成设置的数据包类型。
  -v   详细显示指令执行过程。
  -vv   更详细显示指令执行过程。
  -x   用十六进制字码列出数据包资料。
  -w<数据包文件>   把数据包数据写入指定的文件。

例子: tcpdump ip host myhost

显示所有进出主机myhost 的ip包

   tcpdump ip proto tcp

   显示所有tcp包

   Tcpdump tcp port 21

显示所有端口为21的TCP包

提示:我这里有一本《linux常用命令全集》,基本上涵盖了所有linux下的命令,一本极好的工具书。  

下载地址:

补充:

  网络基本配置文件

/etc/hosts: 主机名解析

/etc/hostname.leo.: 网络接口名

/etc/netmasks::   网络掩码

/etc/inetd.conf:   服务项目定义

小结:

 本季主要讲解网络编程的概念,以及网络编程的常用环境,网络API,我们以后将主要围绕着tcp/ip协议簇,套接字API为基础来讲。

  Unix/linux系统具有完善的网络功能,并提供相当强大的网络命令,我我们介绍好几种常见的网络命令,这些命令对调试程序有莫大的帮助。

  Vi是linux/unix系统中强大的编辑器,gcc,gdb也是常用c/c++编译器和调试器。


阅读(833) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~