文章目录
6.1 域名系统DNS
运输层和应用层之间的关系:服务=协议+端口。
- FTP文件传输服务=TCP+21
- TELNET远程终端服务=TCP+23
- DNS域名解析服务=UDP+53
- HTTP超文本传输服务=TCP+8080
- HTTPS加密的超文本传输服务=TCP+443
- SMTP传输邮件服务=TCP+25
- POP3读取邮件的服务=TCP+110
- RDP远程桌面服务=TCP+3389
DNS是一个分布式数据库,提供了主机名和IP地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据(如下图的com站点只保存了它自己的那部分数据)。
域名具有层次结构,从上到下依次为:根域名、顶级域名(com、edu、net、cn、org、gov)、二级域名(个人、企业可以申请,baidu)、三级域名(mail,例如www.mail.baidu.com),具体如下图所示:
DNS可以使用UDP或者TCP进行传输,使用的端口号都为53,大多数情况下DNS使用UDP进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传来保证可靠性。在两种情况下会使用TCP进行传输:
- 如果返回的响应超过的512字节(UDP最大只支持512字节的数据)。
- 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)。
DNS服务的作用:负责解析域名,将域名解析成IP地址。举个例子:主机访问网址如www.baidu.com,主机将该域名发送给域名服务器(首先检查本地的DNS缓存,如果没有就找域名服务器),域名服务器通过解析,将该域名对应的IP返回给主机,然后主机在通过IP访问百度的Web服务器。
6.2 动态主机配置协议DHCP
DHCP主要是用来分配IP,提供了即插即用的连网方式,用户不再需要去手动配置IP地址等信息。
IP地址获取方式有两种,一种静态IP,一种动态IP:
- 静态IP是人工自己指定的,一般公司自己组建的局域网、学校机房的固定的计算机、机房服务器、互联网上的大型服务器,凡是位置固定不动的,都用静态IP地址。
- 动态IP地址是用DHCP服务器来分配的地址,适用于计算机位置不固定、家庭拨号上网等情况,可以避免产生IP地址冲突。
DHCP客户端请求IP地址的过程(逆arp协议):
- 计算机设置自动获取IP地址后,就会变成一个DHCP客户端,向网络上发送广播请求地址,这个广播的目标IP是255.255.255.255,MAC地址是FF(16进制),这个广播会传到所有的DHCP服务器上。
- 这些DHCP服务器接收到广播后都会从自己的IP池中选出一个IP址分配给客户端,客户端选择一个接收。
- DHCP服务器确定客户端接收了自己的IP地址后,再把网关、子网掩码等信息发送给客户端,其他的DHCP服务器确定没有接收自己的IP地址后,就把这个IP地址回收,再分配。
注意:DHCP服务器本身必须是静态地址。
DHCP服务器既可以给本网段计算机分配地址,也可以跨网段分配地址。DHCP服务器想给几个网段的计算机分配地址,就得先创建几个作用域,区别是:
- 本网段的计算机请求地址,发广播,DHCP服务器能直接收到请求。
- 而外网段的计算机请求地址,先发广播让外网段的网关收到(网关隔绝广播,为了能使这条请求发出去,路由器上需要特殊配置一下,使用命令ip helper-address+DHCP服务器的IP地址,表明这个IP是DHCP服务器地址),该网关把请求通过互联网发送给DHCP服务器(这时候就是点对点通信而不是广播了)。
6.3 文件传送协议FTP
FTP使用TCP进行连接,它需要两个连接来传送一个文件:
- 控制连接:服务器打开21端口号等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。
- 数据连接:标准端口为20,用来传送文件数据。
根据数据连接是否是服务器端主动建立,FTP有主动和被动两种模式:
- 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为20,客户端的端口号随机,但是必须大于1024,因为0~1023是熟知端口号。
- 被动模式:服务端在指定范围内打开一个新的端口,被动等待客户端发起连接。
主动模式服务端防火墙打开21端口,用于客户端和服务器建立连接,打开20端口用于互相传输数据。而被动模式FTP服务器打的是一个新端口,指不定是哪个端口,如1234端口,如果想成功地进行数据通信,防火墙必须打开1234端口,如果还有其他的客户端请求连接服务器,服务器又打开其他新的端口,那么防火墙又得打开另一个新的端口了,十分不方便,因此FTP服务一般都使用主动模式。
6.4 远程终端协议TELNET
只要网络通,就能利用TELNET协议输入命令来远程控制另一台计算机,一般多用来远程配置路由器,TELNET协议使用TCP的23端口。
如何使用TELNET协议远程配置另一台计算机:首先在被控制的远程计算机上打开TELNET服务(注意一定要打开23端口),然后在本地计算机命令行里输入telnet+对方IP地址,再输入远程计算机上的一个用户名和密码就可以连过去了,此时就可以在命令行里输入各种命令来控制对方。
telnet命令还有一个功能,用来测试远程的计算机的某个端口是否打开,如telnet 192.168.8.10 445测试IP为192.168.8.10的计算机445端口是否打开。
6.5 远程桌面协议RDP
它和远程终端协议TELNET的功能一样,都是远程管理另一台计算机,只不过TELNET协议通过命令行管理,而RDP协议通过图形界面管理。一般用来远程管理服务器,使用TCP的3389端口。
如何远程桌面连接另一台计算机:首先在被控制的远程计算机上打开远程桌面服务,然后在本地计算机运行里输入mstsc,再输入对方IP地址,再输入被控制的计算机上的一个用户名和密码就可以连过去了(该用户需要在远程桌面的组里)。WindowsServer是多用户系统,连过去的用户,不影响原计算机的运行,也就是说可以两个人共同操作这台计算机,但是XP和Windows7是单用户操作系统,不支持多用户同时登陆。
6.6 HTTP协议
HTTP协议是用的最多的协议,用来访问网站的协议,使用TCP的80端口。
为何访问网站要用域名:
- 网站的标识有IP地址、端口和域名,因此访问网站时,为了区分不同的网站,可以使用不同的IP地址、不同的端口或不同的主机头(域名)。
- 同一个服务器上如果有好几个网站,这些网站如果都使用一个服务器IP地址,都使用80端口,会有冲突。解决方法一是给服务器多加几个IP地址,一个网站用一个,二是给不同网站用不同的端口号,不要都用80端口。然而这两种方式都不方便,如果服务器只有一个地址,并且端口号只想用80,那么可以在服务器设置网站的访问方式,设置成只能用域名来访问,但是用域名访问,还需要在DNS里把记录加上。目前网络上各大服务器中存储的成千上万的网站,都是用最后一种方法,用域名访问来实现的。
使用Web代理服务器访问网站:访问网站时不直接访问,而是先访问代理服务器,代理服务器去找目标网站,然后再把得到的网站返回给请求计算机。优点如下:
- 节省内网访问Internet的带宽,加快上网速度。
- 通过Web代理绕过防火墙,翻墙软件就是使用国外的代理来上网的,能避免国内路由器的封锁。
- 避免追踪,如果在网上发帖子,不想让别人查到自己的地址,那就用代理在网上发帖子,ISP那边的记录,只能查到是代理在发帖子,查不到自己这里。
- 不用配网关,要是上网的电脑和代理服务器在一个网段,不用配DNS也能上网。
应用:在一个网段的计算机里,只要有一台计算机能上网,其他计算机就可以通过这台能上网的计算机上网。做法是将这台能上网的计算机设置成代理服务器,其他计算机指向它。
6.7 电子邮件
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议,邮件协议包含发送协议和读取协议,发送协议常用SMTP,读取协议常用POP3和IMAP。
收发邮件的过程如下:
- 发件人调用PC机中的用户代理撰写和编辑要发送的邮件。
- 发件人的用户代理把邮件用SMTP协议发给发送方邮件服务器。
- SMTP服务器把邮件临时存放在邮件缓存队列中,等待发送。
- 发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去。
- 运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
- 收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。
SMTP只能发送ASCII码,而互联网邮件扩充MIME可以发送二进制文件,MIME并没有改动或者取代SMTP,而是增加邮件主体的结构,定义了非ASCII码的编码规则。
POP3的特点是只要用户从服务器上读取了邮件,就把该邮件删除。IMAP协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除,IMAP这种做法可以让用户随时随地去访问服务器上的邮件。
Web页面请求过程
1、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地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。
- 主机收到该帧后,不断分解得到DHCP报文,之后就配置它的IP地址、子网掩码和DNS服务器的IP地址,并在其IP转发表中安装默认网关。
2、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地址,发回给主机。
3、DNS解析域名
- 知道了网关路由器的MAC地址之后,就可以继续DNS的解析过程了。
- 网关路由器接收到包含DNS查询报文的以太网帧后,抽取出IP数据报,并根据转发表决定该IP数据报应该转发的路由器。
- 因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达DNS服务器的路由表项。
- 到达DNS服务器之后,DNS服务器抽取出DNS查询报文,并在DNS数据库中查找待解析的域名。
- 找到DNS记录之后,发送DNS回答报文,将该回答报文放入UDP报文段中,然后放入IP数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。
4、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页面。