Linux网络编程

Linux网络编程

网络编程基础

ISO/OSI七层模型

ISO:国际标准化组织,OSI:开放系统互联模型。在计算机网络中,IOS是互联网操作系统,是思科公司为其网络设备开发的操作维护系统。

ISO/OSI的七层模型(由上到下):应用层(APDU),表示层(PPDU),会话层(SPDU),传输层(TPDU),网络层(报文),数据链路层(帧),物理层(比特),分层的目的主要是为了便于管理。

各层的作用如下:

Ø  物理层:设备之间的比特流的传输、物理接口、电气特性等;

Ø  数据链路层:组帧、用MAC地址访问媒介、错误检测与修正;

Ø  网络层:提供逻辑地址、选路;

Ø  传输层:可靠与不可靠的传输、传输前的错误检测,流控;

Ø  会话层:对应用会话的管理、同步;

Ø  表示层:数据的表现形式、特定功能的实现如——加密;

Ø  应用层:用户接口。

TCP/IP四层模型(实际应用)

TCP/IP四层模型(由上到下):应用层(3层),传输层(1层),网际互联层(1层),网络接口层(2层)

Ø  网络接口层

网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。其中地址解析协议(ARP)工作在此层,对应于 OSI参考模型的数据链路层。

Ø  网际互联层

网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它包含的协议涉及数据包在整个网络上逻辑传输。该层对应三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)

Ø  传输层

传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据包协议(UDP)。

TCP三次握手

n  计算机A:发送SYN信息(序列号x)给计算机B;

计算机B:接收SYN信息(序列号=x)

n  计算机B:发送SYN、ACK信息(序列号=y,确认号=x+1)给计算机A;

计算机A:接收SYN、ACK信息(序列号=y,确认号=x+1)

n  计算机A:发送ACK信息(确认号=y+1)给计算机B

计算机B:接收ACK信息(确认号=y+1)

Ø  应用层

应用层对应于OSI参考模型的高层,为用户提供所需的各种服务,如FTP,Talnet,DNS,SMTP等。

注意:数据传递过程要经过封装和解封装过程。

TCP/IP模型与OSI模型的比较

Ø  共同点:

n  OSI参考模型和TCP/IP参考模型都采用了层次结构的概念;

n  都能够提供面向连接和无连接两种服务通信机制;

Ø  不同点:

n  前者是七层模型,后者是四层结构;

n  对可靠性要求不同(后者更高);

n  OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络;

n   实际市场应用不同(OSI模型只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为“实际上的国际标准”)。

IP地址

IP地址分类:主要分为A类、B类、C类、D和E类,其中D类和E类是特殊IP,故下面主要分析A类、B类和C类IP地址。

类型

最大

网络数

IP地址范围

最大主机数目

私有IP地址范围

A

126

(2^7-2)

1.0.0.0--126.255.255.255

2^24-2

10.0.0.0--10.255.255.255

B

16384

(2^14)

128.0.0.0--191.255.255.255

2^16-2

172.16.0.0--172.31.255.255

C

2097152

(2^21)

192.0.0.0--223.255.255.255

2^8-2

192.168.0.0--192.168.255.255

私有IP地址

私有IP地址是内网IP地址,它是免费的,它主要用于解决学校,办公等网络。它能够有效的节约并保护公网IP地址。但私有IP地址不能直接访问公网,要访问,需要转换。注意:不是一个网段的主机通信需要通过路由器

子网掩码

子网掩码决定网段个数;子网掩码不能与IP地址单独查看,并需同时查看。

Ø  A类子网掩码255.0.0.0

Ø  B类子网掩码255.255.0.0

Ø  C类子网掩码255.255.255.0

子网掩码用于确定如何变化以对应不同网段(255对应),如何变化以对应不同的主机(0对应)。注意:子网掩码要求最好所有的1是连续的(但可以不连续)。

广播地址(D类地址)

广播地址是专门用于同时向网络中所有工作站进行发送的一个地址。网络地址后面是0,广播地址是255,中间是主机地址。 

端口作用

端口作用:标称服务器开启的端口,和访问的是谁。端口号共有65536个,0-65535,其中10000以内为常用端口,10000以外为个人端口。

常见网络服务端口号如下:

Ø  FTP(文件传输协议):端口号 20和21

Ø  SSH(安全shell协议):端口号 22

Ø  talent(远程登录协议):端口号 23(禁止开启,它是明文传输)

Ø  DNS(域名系统):端口号 53(TCP和UDP协议)

Ø  http(超文本传输协议):端口号 80

Ø  SMTP(简单邮件传输协议):端口号 25

Ø  POP3(邮件协议3代):端口号 110

查看本机启用的端口使用如下命令:

 netstat –an

选项:

-a:查看所有连接和监听端口

-n:显示IP地址和端口号,而不显示域名和服务名

DNS作用

DNS(域名系统,即名称解析)存在原因:在互联网中,通过IP地址来进行通信,但IP地址用数字表示,记忆起来太困难了人对域名更加敏感。而DNS作用就将域名地址翻译成IP,或将IP翻译成DNS,从而方便人和计算机找到各自对应的习惯的网页名称。注意:不配置DNS是不能访问互联网的。说起DNS就不得不介绍一下hosts文件。

hosts文件

hosts是做静态IP和域名对应。hosts文件的优先级是高于DNS解析的。

hosts文件到DNS

早期hosts文件解析域名:所有IP与对应域名全写入host,则存在缺点:1)名称解析效能下降;2)主机维护困难。基于以上,产生了DNS(域名系统)。有些利用hosts进行google翻墙,其主要的原理就是绕过DNS直接进行网址访问。

DNS服务优点:层次性,分布式

DNS服务的作用:将域名解析为IP地址

Ø  客户机向DNS服务器发送域名查询请求;

Ø  DNS服务器告知客户机Web服务器的IP地址;

Ø  客户机与Web服务器通信。

域名空间结构(完全合格域名)

根域: "."表示根域名,根域名的服务器共有13台

顶级域(一级域):组织域    gov(政府部门),com(商业部门),edu(教育部门),org(民间团体组织),net(网页服务机构),mil(军事部门);国家或地区域   cn(中国),jp(日本),uk(英国),au(澳大利亚),hk(中国香港)

二级域:IBM,Microsoft,...个人和企业向域名分配组申请,购买的。

主机名:www,NEWS,...

三级域 + 二级域 + 顶级域组成完整域名空间,并且是全球唯一的域名。域名用"."进行分割便于分级管理

域名意义:

Ø  互联网中的域名是由结构有规划的;

Ø  域名进行了分级,在进行域名和IP地址解析时才能更容易找到

Ø  防范钓鱼网站(主要看二级域名与一级域名是否正确) 

 DNS查询类型

从查询方式上分:递归查询和迭代查询。

Ø  递归查询

要么做出查询成功响应,要么做出查询失败的响应。一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果转交给客户机

Ø  迭代查询

服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其它DNS服务器的地址。

从查询内容上分:正向查询和反向查询

Ø  正向查询由域名查找IP地址(访问网页)

Ø  反向查询由IP地址查找域名(邮件)

网关

网关(Gateway)又称网间连接器、协议转换器。网关是在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。网关是一种充当转换重任的服务器或路由器。

网关作用:

Ø  网关在所有内网计算机访问的不是本网段的数据包时使用;

Ø  网关负责将内网IP转换为公网IP,公网IP转换为内网IP。

未配网关和DNS可以访问局域网,但是不能访问公网。要访问公网,必须要有网关把本级数据包转换成公网IP,其次,必须有DNS把本级网页的域名信息或其他的域名请求翻译成真正的IP地址,才能进行正常的公网访问。

Linux配置IP地址

Linux配置IP地址的方法

Ø  ifconfig命令临时配置IP地址

ifconfig命令:查看与配置网络状态命令

ifconfig eth0 192.168.0.200netmask 255.255.255.0 #临时设置eth0网卡的IP地址与子网掩码。

Ø  setup工具永久配置IP地址(Redhat系列特有工具)

红帽专有图形化工具setup设置IP地址

最后要重启网络服务service network restart

Ø  修改网络配置文件

n  网卡信息文件:/etc/sysconfig/network-scripts/ifcfg-eth0

里面信息如下:
DEVICE = eth0    网卡设别名
BOOTPROTO = none    是否自动获取IP(none,static,dhcp(自动获取,需要有DHCP服务器))
HWADDR = 00:0c:29:17:c4:09    MAC地址
NM_CONTROLLED = yes    是否可以有Network Manager图像管理工具托管
ONBOOT = yes    是否随网路服务启动,eth0生效(设为yes,否则改后之后lo信息,没有eth0信息)
TYPE = Ethernet        类型为以太网
UUID = "44b76c8a-b59f-44d5-83fa-7f98fda86b3d    唯一识别码(克隆需修改,否则都不能上网)

IPADDR =192.168.0.252        IP地址 

NETMASK =255.255.255.0        子网掩码
GATEWAY = 192.168.0.1        网关

DNS1 =202.106.0.20        DNS 

IPV6INIT =no     Ipv6没有启动

USERCTL = no    不允许非root用户控制此网卡

n  主机名文件:/etc/sysconfig/network

hostname [主机名]   #查看与临时设置主机名命令

hostname 主机名  #临时更改主机名,一旦重启,不在生效

n  DNS配置文件:/etc/resolv.conf

Ø  图形界面配置IP地址

虚拟机网络参数配置

Ø  设置LinuxIP地址

 setup #修改并配置IP地址

Ø  启动网卡 

将/ect/sysconfig/network-scripts/ifcfg-eth0中的ONBOOT = no改为ONBOOT = yes 

service network restart #重启网络服务

 若还出错,可能是IP冲突

Ø  修改UUID(注意:针对克隆的虚拟机,单独安装虚拟机不需要进行

 编辑/ect/sysconfig/network-scripts/ifcfg-eth0主要是删除MAC地址行

 rm -rf/etc/udev/rules.d/70-persistent-net.rules即删除网卡和MAC地址绑定文件

 重启动系统

Ø  设置虚拟机网络连接方式

虚拟机——>设置(网络适配器)使用桥接方式连网

Ø  修改桥接网卡

虚拟机——>编辑(虚拟网络编辑器)——>桥接,选择正确的网卡(无限网卡wireless)

Linux网络命令

网络环境查看命令

Ø  ifconfig命令

查看与配置网络状态命令

使用ifconfig命令查看IP地址和子网掩码,查看不到网关和DNS

Ø  关闭与启动网卡

ifdown 网卡设备名    #禁用该网卡设备

ifup 网卡设备名      #启用该网卡设备    

Ø  查询网络状态

netstat 选项
            选项:
                -t:列出TCP协议端口
                -u:列出UDP协议端口
                -n:不使用域名和服务名,而使用IP地址和端口号
                -l:仅列出在监听状态网络服务
                -a:列出所有的网络连接
       netstat -tuln
       netstat -an
       Linux终止远程连接:执行logout命令。注销远程终端,禁止直接差掉,因为这样没有终止连接,Linux远程连接最多256,Windows Server 2003最多可以2个远程终端而Windows Server 2008默认最多4个远程中。

查看已建立的网络状态
 netstat -an | grep ESTABLISHED

 统计已建立连接的网络状态数目 

netstat -an | grep ESTABLISHED |wc –l

Ø  查看网关和路由列表信息

netstat -rn/route -n 

选项:

-r:列出路由列表,功能和route命令一致
        route命令:查看路由列表(可以看到网关)
        route add default gw192.168.0.2  #临时设定默认网关(没作用,可能导致不能上网)

Ø  域名解析命令

nslookup [主机名或IP]   #进行域名与IP地址解析

nslookup命令用来翻译域名对应哪个IP

nslookup http://blog.csdn.net/yzhang6_10

nslookup

>server    #查看本机DNS服务器

网络环境测试命令

Ø  ping命令

ping [选项] ip或域名   #探测指定IP或域名的网络状态

选项:

 -c 次数:指定ping包的次数

Ø  talnet [域名或IP] [端口]   #远程管理与端口探测命令(不加密,被ssh取代了)
            talnet192.168.0.252 80 连通后退出方法是ctrl + )

Ø  traceroute命令   (生产环境常用命令,但家用环境,多数节点通,少数节点不通)
            Traceroute[选项] IP或域名   #路由跟踪命令
            选项:
                -n使用IP,不使用域名,速度更快
                利用ICMP(Internet控制报文协议)协议进行远程探测

Ø  wget命令(下载命令)
            wgethttp://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz   #下载命令

Ø  tcpdump命令
            tcpdump-i eth0 -nnX port 21 (抓包命令,查看访问eth0网卡的21端口访问)
            选项:
                -i:指定网卡接口
                -nn:将数据包中的域名与服务器转为IP和端口
                -X:以十六进制和ASCII码显示数据包内容
                -port:指定监听的端口
            启动ftp服务命令:service vsftpd start
            ftp协议也是明文传输(默认不允许root登录)
            网络中很多的数据包是明文的,信息不是加密传输的。

远程登录

Ø  SSH协议原理

SSH安全外壳协议(使用非对称加密算法主要使用RSA),它是保护信息传递过程中是安全的。

Ø  SSH命令

ssh 用户名@ip    #远程管理制定Linux服务器     exit #退出远程  第一次提示下载公钥。

scp文件传输命令(Linux与Linux之间远程传递文件)

    scp [-r] 用户名@ip:文件路径 本地路径    #下载文件(目录加-r)

    scp [-r] 本地文件 用户名@ip:上传路径    #上传文件(目录加-r)

SecureCRT远程管理工具

Xshell工具和WinSCP文件传输工具

Xshell用于远程管理Linux。

WinSCP是文件传输工具SFTP(SSH协议中附带的自协议),不能选则FTP协议,FTP需要搭载FTP,到时候可以直接拖来进行文件传输,比较方便。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值