DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是由IETF(Internet工做任务小组)设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议web
减小管理员的工做量浏览器
避免输入错误的可能安全
避免IP冲突服务器
提升了IP地址的利用率网络
方便客户端的配置异步
自动分配 :分配到一个IP地址后永久使用ide
手动分配 :由DHCP服务器管理员专门指定IP地址spa
动态分配 :使用完后释放该IP,供其它客户机使用设计
当一个DHCP客户机启动时,客户机尚未IP地址,因此客户机要经过DHCP获取一个合法的地址。此时DHCP客户机以广播方式(由于DHCP服务器的IP地址对客户机来讲是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。广播信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器肯定是哪一个客户机发送的请求。3d
2. 服务器响应
当DHCP服务器接收到来自客户机请求IP地址的信息时,它就在本身的IP地址池中查找是否有合法的IP地址提供给客户机,若是有,DHCP服务器就将此IP地址作上标记,加入到DHCP Offer的消息中,而后DHCP服务器就广播一则包含下列信息的DHCP Offer消息。
3. 客户机选择IP
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能提供给另外一个DHCP客户机。当客户机从第一个DHCP服务器接收DHCP Offer消息并提取了IP地址后,客户机将DHCP Request消息广播到全部的DHCP服务器,代表它接受提供的内容,DHCP Request消息包括为客户机提供IP配置的服务器的服务标示符(服务器IP地址),DHCP服务器查看服务器标识符字段,以肯定提供的IP地址是否被接受,若是DHCP Offer被拒绝,则DHCP服务器将会取消并保留其IP地址以提供给下一个IP租约的请求。
4. 服务器肯定租约
DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功的确认。该消息包含有IP地址的有效租约和其余可配置的信息,虽然服务器确认了客户机的租约请求,可是客户机尚未接收到服务器的DHCP ACK消息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。
5. 从新登陆
DHCP客户机每次从新登陆网络时,不须要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。当DHCP服务器接收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。若是此IP地址已没法再分配给原来的DHCP客户机使用时(好比IP已经分配给其余的DHCP客户机使用),DHCP服务器给DHCP客户机回答一个DHCP Nack否定信息。当原来的DHCP客户机收到此DHCP Nack否定信息后,它就必须从新发送DHCP Discover发现信息来请求新的IP地址。
(1)发送带有IP地址的DHCP Request请求包
(2)IP地址没有分配使用,发送DHCP ACK确认信息
客户端继续使用重启前的IP地址
(3)IP地址分配到其余客户机使用
发送DHCP Nack否定信息
客户机从新发送DHCP Discover
6. 更新租约
IP地址的租期达到50%后,须从新更新租期
客户端直接向服务器发送DHCP Request包
传输层=====>主机到主机层
使用TCP的应用:web浏览器;电子邮件;文件传输程序
TCP传输控制协议 |
UDP用户数据报协议 |
面向链接 |
无链接 |
可靠传输(安全) |
不可靠传输(不安全) |
可实现流量控制 |
尽力而为,尽力传递 |
同步 ,提供全双工服务 |
异步 |
效率低 |
效率高 |
可用端口:2的16次方=65536 0号端口不会用到,因此是1-65535
1-65535(涉及到一些著名的端口号1-1024 )
随机端口号默认范围区间:
[root@wuhuang ~]# cat /proc/sys/net/ipv4/ip_local_port_range 4000 65000 |
1. 源端口号:发送端的端口号(随机)
2. 目的端口号:接收端的端口号(固定)
3. 确认号的概念:服务端接受到拆分后的数据包。进行确认,告知下一次发送的数据包序列号信息
4. TCP报文重要控制位:
1)syn:请求创建链接
2)fin:请求断开链接
3)ack:确认控制字段,表示接收的数据进行确认(从而实现了TCP协议的可靠性)
由主机A发送创建TCP链接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,而且还将报文中SYN字段置为1,表示须要创建TCP链接请求
A端收到B端发送的TCP创建请求后,会使本身的原有序列号加1进行再次发送序列号,而且再次回复ACK验证请求,在B端发送过来的seq基础上加1,进行回复;同时也会回复ack确认控制字段,
以便B收到信息时,知晓本身的TCP创建请求已经获得了确认
数据传输过程当中:每发送一次数据,都会产的ACK(表示收到了对方seq对应的信息),ack(表示确认收到),seq(请求序列号)
主机A发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
主机B收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
主机B发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
A端收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手