当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪DHCP原理及报文格式          DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/.........
    ▪TCP协议三次握手过程分析       TCP协议三次握手过程分析http://www.cnblogs.com/rootq/articles/1377355.htmlTCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立.........
    ▪win7+vmware8+centos6.3安装lamp      一、安装vmware8+centos6.3(网络选择nat方式)二、配置ifcfg-eth0(查看vmware –>edit->virtual network editor->vmnet8->nat settings)Vi /etc/sysconfig/network-scripts/ ifcfg-eth0DEVICE="eth0"BOOTPROTO="static"NM_CONTROLLED.........

[1]DHCP原理及报文格式
    来源:    发布时间: 2013-11-15

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是基于UDP层(这也就是说在snort检测过程中,只能看UDP的包)之上的应用,dhcp使用udp携带报文,udp封装在ip数据包中发送。我们先来看下dhcp报文格式

 

OP:若是client送给server的封包,设为1,反向为2;

Htype:硬件类别,ethernet为1;

Hlen:硬件长度,ethernet为6;

Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;

Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;

Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;

Flags:从0-15bits,最左1bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;

Ciaddr:用户IP地址;

Yiaddr:客户IP地址;

Siaddr:用于bootstrap过程中的IP地址;

Giaddr:转发代理(网关)IP地址;

Chaddr:client的硬件地址;

Sname:可选server的名称,以0x00结尾;

File:启动文件名;

Options:,厂商标识,可选的参数字段

下面我们主要说下客户机从dhcpserver获取ip的过程,它处于6中状态分别是初始状态,选择状态,请求状态,绑定状态,重新获取状态,重新绑定状态。我们就结合我下面画的这张图好好说下

 

 

1.主机启动,dhcp处于INI状态为了获取ip地址,DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名,本地所有的dhcpserver会收到这个报文,数据包中的目标端口设为BOOTP67端口。这时dhcp会处于select状态。

2.处于select状态的主机会接受dhcpserver发来的dhcpoffer报文,每个报文中会包含为客户机配置的信息以及server为客户机提供的租用ip,一般主机会受到零个或者多个offer报文(一般主机会响应第一个offer报文),并与server协商相关事宜,为此主机会发送一个dhcpquest报文,并进入request状态。

3.dhcpserver会给客户机一个ack的确认信息,这时一个dhcp获取过程结束。主机进入BIND稳定状态。

4.假如主机不需要ip地址或者需要换个ip,这时主机会发送一个dhcprelease报文向dhcpserver,这时主机重新处于初始状态。

5.一般服务器给客户机的ip地址都有租期,时间长短不等,而dhcp主机会有3个计时器,当择期过半50%,这时主机会发送一个 dhcprequest报文要求续租进入renew状态,serverdhcp会响应这个报文发送ack确认信息,这时dhcp会重新进入BOND状态。

6.假如dhcpserver没有响应主机的请求,等租期到了87.5%这时主机会重新发送dhcprequest报文要求续租,主机进入 rebind状态,假如这时候dhcpserver不高兴(ip地址不够用)发送来一个否确认信息,这时主机会重新进入初始状态再次按照1——4步骤重新申请ip。假如收到ack老大的确认续租成功,说明这个ip我们还可以继续使用。没有响应,我们的主机只有等到我们ip租期耗尽,重新进入初始状态重新获取。

报文类型:

1)DHCPDISCOVER(0x01),此为Client开始DHCP过程的第一个报文

2)DHCPOFFER(0x02),此为Server对DHCPDISCOVER报文的响应

3)DHCPREQUEST(0x03),此报文是Client开始DHCP过程中对server的DHCPOFFER报文的回应,或者是Client续延IP地址租期时发出的报文

4)DHCPDECLINE(0x04),当Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址

5)DHCPACK(0x05),Server对Client的DHCPREQUEST报文的确认响应报文,Client收到此报文后,才真正获得了IP地址和相关的配置信息。

6)DHCPNAK(0x06),Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。

7)DHCPRELEASE(0x07),Client主动释放server分配给它的IP地址的报文,当Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。

8)DHCPINFORM(0x08),Client已经获得了IP地址,发送此报文,只是为了从DHCP SERVER处获取其他的一些网络配置信息,如route ip,DNS Ip等,这种报文的应用非常少见。

如:运行IPCONFIG/RELEASE后,PC会发出释放IP的报文,DHCP Message Type是7,他的作用是主动释放server分配给它的IP地址的报文,Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。

如果一台客户机未从该DHCP服务器获取过地址,或者它获得的地址已过期,那么它将需要经过全部四个步骤才能得到一个IP地址。

本文链接


    
[2]TCP协议三次握手过程分析
    来源:    发布时间: 2013-11-15
 TCP协议三次握手过程分析

http://www.cnblogs.com/rootq/articles/1377355.html

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

实例:

IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836 IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837 IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116发送位码syn=1,随机产生seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1知道192.168.1.116要求建立联机;

第二次握手:192.168.1.123收到请求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机产生seq=1739326486的包;

第三次握手:192.168.1.116收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则连接建立成功。

 

图解: 一个三次握手的过程(图1,图2)

 

(图1) (图2)

 

第一次握手的标志位(图3) 我们可以看到标志位里面只有个同步位,也就是在做请求(SYN) (图3)
第二次握手的标志位(图4) 我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK) (图4)
第三次握手的标志位(图5) 我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK) (图5)
一个完整的三次握手也就是 请求---应答---再次确认

本文链接


    
[3]win7+vmware8+centos6.3安装lamp
    来源:    发布时间: 2013-11-15

一、安装vmware8+centos6.3(网络选择nat方式)

二、配置ifcfg-eth0(查看vmware –>edit->virtual network editor->vmnet8->nat settings)

Vi /etc/sysconfig/network-scripts/ ifcfg-eth0

DEVICE="eth0"

BOOTPROTO="static"

NM_CONTROLLED="yes"

ONBOOT=yes

TYPE="Ethernet"

UUID="229b524e-7f41-461a-909d-b96e6a4e3706"

HWADDR=00:0C:29:61:25:46

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=yes

IPV6INIT=no

NAME="System eth0"

IPADDR=192.168.81.10#不要不subnet ip 和gateway 重复

GATEWAY=192.168.81.2#和vmnet8 的 一致

 

重启:service network restart

三、安装lamp

1、Vi /etc/resolv.conf 添加如下

nameserver 8.8.8.

nameserver 8.8.4.4

2、yum –y install httpd mysql-server php php-devel php-mysql

3、vi /etc/httpd/conf/httpd.conf

#ServerName www.localhost.com:80  打开

重启:/etc/init.d/httpd restart

4、查看防火墙:/etc/init.d/iptables status

开启80端口:

vi /etc/sysconfig/iptables 添加如下

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重启:/etc/init.d/iptables restart

5、mysql 启动:/etc/init.d/mysqld start

退出:quit

查看:netstat -tuln | grep ':3306'

设置密码:mysqladmin -u root password 'your.password'

6、webroot  vi /var/www/html/index.php

 

四、在win7下打开浏览器访问192.168.81.10

本文链接


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3