分享

DHCP原理过程、TCP的三次握手和四次挥手

 charlie_linux 2020-01-14

1.1 DHCP协议

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是由IETF(Internet工作任务小组)设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议

1.1.1 使用DHCP的好处

减少管理员的工作量

避免输入错误的可能

避免IP冲突

提高了IP地址的利用率

方便客户端的配置

1.1.2 DHCP的分配方式

自动分配 分配到一个IP地址后永久使用

手动分配 DHCP服务器管理员专门指定IP地址

动态分配 使用完后释放该IP,供其它客户机使用

1.1.3 DHCP工作原理

image.png 

1. 客户机请求IP

当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址。此时DHCP客户机以广播方式(因为DHCP服务器的IP地址对客户机来说是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。广播信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器确定是哪个客户机发送的请求。

image.png 

 2. 服务器响应

DHCP服务器接收到来自客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包含下列信息的DHCP Offer消息。

image.png 

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租约的请求。

image.png 

4. 服务器确定租约

DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功的确认。该消息包含有IP地址的有效租约和其他可配置的信息,虽然服务器确认了客户机的租约请求,但是客户机还没有接收到服务器的DHCP ACK消息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。

image.png 

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请求包

image.png

(2)IP地址没有分配使用,发送DHCP ACK确认信息

        客户端继续使用重启前的IP地址

image.png

(3)IP地址分配到其他客户机使用

        发送DHCP Nack否认信息

        客户机重新发送DHCP Discover

image.png

image.png

6. 更新租约

IP地址的租期达到50%后,须重新更新租期

客户端直接向服务器发送DHCP Request包

第2章 传输层的两种协议(TCP和UDP

       传输=====>主机到主机层

2.1 TCP:传输控制协议 ---属于面向连接的网络协议---同步(安全 效率低)

   TCP协议特点:属于面向连接的网络协议

                 同步 (提供全双工服务,即数据可在同一时间双向传输)

                 安全,可靠传输 ,传输速度慢,效率低

                使用TCP的应用:web浏览器;电子邮件;文件传输程序

2.2 UDP: 用户报文协议---属于无连接的网络协议-----异步(不安全 效率高)

UDP协议特点: 属于无连接的网络协议 

               异步 

               不安全,速度传输快 

               尽力而为,不管你是否收到 

               使用UDP的应用:DNS,视频流,IP语音(VoIP)

TCP传输控制协议

UDP用户数据报协议

面向连接

无连接

可靠传输(安全)

不可靠传输(不安全)

可实现流量控制

尽力而为,尽力传递

同步 提供全双工服务

异步

效率低

效率高 

2.2.1 端口号计算

  可用端口:2的16次方=65536  0号端口不会用到所以是1-65535

  1-65535(涉及到一些著名的端口号1-1024 )

 注:著名端口号范围1-1024,自定义端口的时候不要使用(避免冲突)

  随机端口号默认范围区间:

[root@wuhuang ~]#  cat /proc/sys/net/ipv4/ip_local_port_range

4000 65000

源端口随机端口号分配,取决于这个配置文件

第3章 TCP三次握手/四次挥手

3.1 TCP报头

image.png 

1. 源端口号:发送端端口号(随机)

2. 目的端口号:接收端端口号(固定)

3. 确认号的概念:服务端接受到拆分后的数据包。进行确认,告知下一次发送的数据包序列号信息

4. TCP报文重要控制位:

  1)syn:请求建立连接

  2)fin:请求断开连接

  3)ack:确认控制字段表示接收的数据进行确认(从而实现了TCP协议的可靠性)

3.2 三次握手

3.2.1 第一次

由主机A发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且还将报文中SYN字段置为1,表示需要建立TCP连接请求

3.2.2 第二次

主机B会回复A发送的TCP连接请求报文,其中包含seq序列号,也是由回复端随机生成的,并且将回复报文的SYN字段置1,而且会产生ACK验证字段,ACK验证字段数值是在A发过来的seq序列号基础上加1进行回复;并且还会回复ack确认控制字段,以便A收到信息时,知晓自己的TCP建立请求已得到了确认。

3.2.3 第三次

A端收到B端发送的TCP建立请求后,会使自己的原有序列号加1进行再次发送序列号,并且再次回复ACK验证请求,在B端发送过来的seq基础上加1,进行回复;同时也会回复ack确认控制字段,

以便B收到信息时,知晓自己的TCP建立请求已经得到了确认

数据传输过程中:每发送一次数据,都会产的ACK(表示收到了对方seq对应的信息),ack(表示确认收到),seq(请求序列号)

image.png 

3.3 四次挥手

3.3.1 第一次挥手

主机A发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

3.3.2 第二次挥手

主机B收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

3.3.3 第三次挥手

主机B发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

3.3.4 第四次挥手

A端收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

image.png 

3.4 总结

image.png

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多