域名系统
DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务【域名–>IP地址】
分布式数据库指每个站点只保留它自己的那部分数据。
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名
DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53
大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性
使用 TCP 进行传输的情况:
如果返回的响应超过的 512 字节(UDP最大只支持512字节的数据)
区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)
文件传送协议
FTP使用TCP进行连接需要两个连接来传送一个文件
- 控制连接:服务器打开端口号21等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答
- 数据连接:用来传送一个文件数据
根据数据连接是否是服务器端主动建立,FTP有主动和被动两种模式:
- 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于1024【因为0~1023是熟知端口号】
- 被动模式:客户端主动建立数据连接,客户端的端口号由客户端自己指定,服务器端的端口号随机
主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙
被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙
注意被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号
动态主机配置协议
DHCP提供了即插即用的连网方式,用户不需要手动配置IP地址等信息
配置的内容: IP 地址、子网掩码、网关 IP 地址
DHCP工作过程如下:
- 客户端发送Discover报文,该报文的目的地址为255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理
- 服务器收到Discover报文之后,发送Offer报文给客户端,该报文包含了客户端所需要的信息【客户端可能收到多个DHCP服务器提供的信息,需要进行选择】
- 如果客户端选择了某个DHCP服务器提供的信息,发送Request报文给该DHCP服务器
- 服务器发送Ack报文,表示客户端此时可以使用提供给它的信息
远程登录协议
TELNET用于登录到远程主机上,并且远程主机上的输出也会返回
TELNET可以适应许多计算机和操作系统的差异(eg:不同操作系统系统的换行符定义)
电子邮件协议
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议
邮件协议包含发送协议和读取协议
发送协议常用SMTP
读取协议常用POP3和IMAP
SMTP
只能发送ASCII码,而互联网邮件扩充MIME可以发送二进制文件【注:MIME并没有改动或者取代SMTP,而是增加邮件主体的结构,定义了非ASCII码的编码规则】
POP
只要用户从服务器上读取了邮件,就把该邮件删除
IMAP
客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。可以让用户随时随地去访问服务器上的邮件
web页面请求过程
- DHCP配置主机信息
假设主机最开始没有 IP 地址以及其它信息,需要使用DHCP来获取
主机生成一个DHCP请求报文,并将这个报文放入具有目的端口67和源端口68的UDP报文段中
该报文段则被放入在一个具有广播IP目的地址(255.255.255.255) 和源IP地址(0.0.0.0)的IP数据报中
该数据报放在MAC帧中,该帧具有目的地址FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备
连接在交换机的DHCP服务器收到广播帧之后不断地向上分解得到IP数据报、UDP报文段、DHCP请求报文,之后生成DHCP ACK报文【包含IP 地址、DNS 服务器的 IP 地址、默认网关路由器的IP地址和子网掩码】该报文被放入UDP报文段中,UDP报文段再被放入IP数据报中,最后放入MAC帧中
该MAC帧目的地址是请求主机的MAC地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了MAC 地址到转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送MAC帧
主机收到MAC帧后,不断分解得到DHCP报文,之后配置它的IP地址、子网掩码和DNS服务器的IP地址,并在其IP转发表中安装默认网关
- ARP 解析 MAC 地址
主机通过浏览器生成一个TCP套接字,套接字向HTTP服务器发送HTTP请求,为生成该套接字,主机需要知道网站的域名对应的IP地址
主机生成一个DNS查询报文,该报文具有53号端口,因为DNS服务器的端口号是53,该DNS查询报文被放入目的地址为DNS服务器IP地址的IP数据报中
该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器
DHCP过程只知道网关路由器的IP地址,为获取网关路由器的MAC地址,需要使用 ARP 协议
主机生成一个包含目的地址为网关路由器IP地址的ARP查询报文,将该ARP查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器
网关路由器接收到这个以太网帧后,不断向上分解得到ARP报文,发现其中的IP地址与其接口的IP地址匹配,就发送一个ARP回答报文,包含了它的MAC地址,发回给主机
- DNS 解析域名
知道了网关路由器的MAC地址之后,继续DNS的解析过程
网关路由器接收到包含DNS查询报文的以太网帧后,抽取出IP数据报,并根据转发表决定该IP数据报应该转发的路由器
因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达DNS服务器的路由表项
到达DNS服务器后,DNS服务器抽取出DNS查询报文,并在DNS数据库中查找待解析的域名,找到DNS记录后,发送DNS回答报文,将该回答报文放入UDP报文段中,然后放入IP数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机
- HTTP 请求页面
有了HTTP服务器的IP地址后,主机就能够生成TCP套接字,该套接字将用于向Web服务器发送 HTTP GET报文
在生成 TCP 套接字之前,必须先与HTTP服务器进行三次握手来建立连接。生成一个具有目的端口80的TCP SYN报文段,并向HTTP服务器发送该报文段
HTTP服务器收到该报文段后,生成 TCP SYN ACK报文段,发回给主机
连接建立后,浏览器生成 HTTP GET报文,并交付给HTTP服务器
HTTP服务器从TCP套接字读取HTTP GET报文,生成一个HTTP响应报文,将Web页面内容放入报文主体,发回给主机
浏览器收到HTTP响应报文后,抽取出Web页面内容,之后进行渲染,显示Web页面