目录
一、DHCP动态地址配置协议
1.DHCP概述
DHCP可以自动获取IP地址,子网掩码,默认网关,DNS服务器。也可以手动配置这四个

2.DHCP基本工作流程
首先DHCP客户源地址0.0.0.0向网络广播DHCP发现报文,报文内容包括事务ID和DHCP客户端MAC地址。使用UDP68端口,服务器使用67端口监听这个数据报。只有DHCP服务器才会监听67端口,所以其他的客户端直接抛弃该报文。

DNS服务器接收到DHCP发现报文之后,从ARP中选择一个还没有被占用的IP地址,之后将事务ID,配置信息绑定到报文里面,广播发送出去。之后DHCP客户可能受到多条信息,从中选择一条。

选择后,DHCP客户端向服务器发送DHCP请求报文,源地址0.0.0.0,目的地址为广播地址。报文内容包括事务ID,DHCP客户端MAC地址,租约中IP地址,提供这个IP地址的DHCP服务器。

之后DHCP服务器同意客户端请求。但是目的地址依然是广播地址,之后DHCP客户端通过检测事务ID看看是不是给自己的,如果是给自己的,那么自己就直接使用这些配置信息。使用之前还会向ARP做一个检测,看看这个IP是否被占用,如果被占用,那么向这个提供IP的DHCP服务器发送DHCP撤销报文,之后发送DHCP发现报文,重新上面流程。

如果时间到达租期一半,那么重新发起DHCP租用请求,如果接受那很好了。如果拒绝,必须重新发送DHCP发现报文,重新开始。如果不响应,那么等0.875时间时候重新发送DHCP请求报文,如果还不相应,那么等租约到期重新发送DHCP发现报文。
DHCP撤销报文可以发生在租期的任何阶段,源地址0.0.0.0,目的地址是广播地址,报文内容肯定有DHCP服务器内容,IP地址,事务ID等。告知DHCP服务器这个IP已经被释放了,可以发送给其他人了。

二、域名解析系统DNS
1.域名系统基本结构



2.域名解析过程
主要包括两种查询,递归查询和迭代查询。
(1)递归查询
客户端首先向本地域名服务器发送域名,之后本地域名服务器提取出根域名,之后发送给根域名服务器,根域名服务器提取顶级域名,发送给顶级域名服务器,顶级域名服务器提取出权限域名,之后发送给权限域名服务器。权限域名服务器最后拿到对应IP地址,再一层一层的回传
(2)迭代查询
客户端向本地域名服务器递归查询,之后本地域名服务器找根域名服务器,根域名服务器告诉本地域名服务器应该找哪个顶级域名服务器,之后本地域名服务器找顶级域名服务器,之后顶级域名服务器告诉本地域名服务器应该找那个权限域名服务器,之后本地域名服务器找权限域名服务器拿到对应IP地址,之后回传给客户端

(3)缓存机制
客户端或者本地域名服务器有缓存机制,存放了域名和IP之间的对应关系,所以查询的时候,可能直接从缓存中拿到IP,就不需要经过一系列的服务器了。
三、FTP服务
FTP服务是文件传输服务,它可以再不同的操作系统中传递文件
1.FTP应用
可以在局域网中找一个电脑,运行FTP服务,一半windows都有自带的,之后其它电脑可以使用浏览器访问这些文件,当然也可以使用命令行或者第三方的软件。

2.FTP基本原理
(1)主动模式
客户端采用TCP建立与FTP之间的连接,目标端口号是21,这个连接用来传输命令。
之后客户端给服务器发送要传输数据了,请和我的某个端口号建立数据TCP连接,之后服务器使用它的20端口和客户端的商定的端口号建立TCP连接用来传输数据。这个是主动模式。
(2)被动模式
建立命令的TCP连接之后,客户端告诉服务器,你监听某个端口号把,我要与你的这个端口号建立TCP连接传输数据,之后客户端主动与服务器建立TCP连接。

四、电子邮件
1.基本流程
电子邮件发送协议一半SMTP,读取协议一般是POP3。
邮件发送方通过SMTP协议将油价发送给发送方邮件服务器,之后该邮件服务器通过SMTP协议将邮件发送给接收方邮件服务器,之后接收方通过POP3协议从接收方邮件服务器取出数据。

2.SMTP协议基本工作原理
使用TCP连接,端口号是25。之后有好几次发送与应答,确认身份,目的地,来源,邮件信息等。

邮件的信息格式包括首部和主体两个部分。首部包括从哪来,到哪去,抄送给谁,主题是啥。主体就是邮件具体内容

SMTP协议只能发送ASCLL文本数据,如果要发送二进制数据需要MIME协议进行转换。

3、POP3协议
这个协议允许用户从服务器读取邮件,删除邮件,但是不允许用户管理自己的邮件,比如创建文件夹,对邮件进行分类管理等。使用熟知端口110。
4.基于万维网的电子邮件

五、万维网
1.URL组成部分

2.网页的基本组成
HTML描述网页的结构和内容
CSS对网页的界面进行渲染
JAvaSCript控制网页的行为,例如点击什么产生什么等

3.http协议
客户端浏览器进程,服务器是nginx进程,TCP连接,熟知端口号80

(1)http1.0
每次建立连接值请求一个对象,之后就把连接给断了。但是我打开一个网页需要请求很多对象,所以需要很多TCP连接,这个占用很多服务器资源。

(2)HTTP1.1
建立连接后可以持续请求网页内容,并不限于这个网页,只要服务器上的,都可以。
(3)http请求报文格式
其实这个首部行就是header啊。对于get请求实体主体肯定是不同的,但是对于POST请求,肯定是用的。

对于http的回复,我们一半只用到状态行了,其它的其实不太用管,暂时。

(4)cookie记录用户信息
第一次登陆的时候,服务器返回一个cookie,之后浏览器记住这个cookie,等下一次再访问这个页面的时候,直接浏览器使用cookie,放到请求头里面,就直接访问,不需要账号密码了。

(5)代理服务器
在一个局域网里面,可以有一个代理服务器,当客户向原始服务器发送请求的时候,先去代理服务器,看看代理服务器有没有相关内容,如果有的话,代理服务器直接返回,如果没有,代理服务器再去找原始服务器,之后再转发给客户。
其实我感觉这个代理服务器和DNS的本地服务器应该是一个东西。
