域名系统DNS
DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指,每个站点只保留它自己的那部分数据
域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名 域名服务器:根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器
DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输:
- 如果返回的响应超过的 512 字节(UDP 最大只支持 512 字节的数据)
- 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)
并且为了提高查询效率,域名服务器中广泛使用了高速缓存,用来存放最近所进行的查询映射
文件传送协议
FTP
FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件:
- 控制连接:服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答
- 数据连接:用来传送一个文件数据
根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式:
主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0~1023 是熟知端口号
被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机
主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号
TFTP
使用UDP数据报传输,本身所占内存较小,适用于小文件传输,而且面向多个机器同时下载
远程终端协议TELNET
TELNET 用于登录到远程主机上,并且远程主机上的输出也会返回,通过网络虚拟终端NVT来实现数据和命令的传输
动态主机配置协议DHCP
DHCP提供了即插即用的连网机制,允许计算机加入新网络和获取IP地址而不用手动配置,DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、网关 IP 地址
DHCP 工作过程如下:
- 客户端发送 Discover 报文,该报文的目的地址为 255.255.255.255:67,源地址为 0.0.0.0:68,被放入 UDP 中,该报文被广播到同一个子网的所有主机上。如果客户端和 DHCP 服务器不在同一个子网,就需要使用中继代理
- DHCP 服务器收到 Discover 报文之后,发送 Offer 报文给客户端,该报文包含了客户端所需要的信息。因为客户端可能收到多个 DHCP 服务器提供的信息,因此客户端需要进行选择
- 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器
- DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息
电子邮件协议
一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件协议。邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP
SMTP
SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则
POP3
POP3 的特点是只要用户从服务器上读取了邮件,就把该邮件删除。但最新版本的 POP3 可以不删除邮件
IMAP
IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件
常用端口
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | HTTPS |
---|---|---|---|---|---|---|---|---|
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 443 |
万维网WWW
万维网是一个大规模的、联机式的信息储藏所,它以客户服务器方式工作,客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
统一资源定位符URL
URL用来表示从互联网得到的资源位置和访问这些资源的方法
URL的格式:<协议>://<主机>:<端口>/<路径>
- 协议:指出使用的协议类型,通常为HTTP或FTP
- 主机:通常是万维网的域名
- 端口、路径:端口号,一般就是协议的端口号,通常会被忽略,路径用来进一步定位
超文本传送协议HTTP
HTTP定义了浏览器怎么向万维网服务器请求万维网文档,以及服务器怎么把文档传送给浏览器;是面向事物的应用层协议
特点:
- HTTP本身是无连接的:虽然使用TCP连接,但通信双方在交换HTTP报文前不需要建立HTTP连接
- HTTP是无状态的:同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同
在客户发起请求的时候,HTTP协议首先和服务器建立TCP连接,并且在第三次握手的时候发送HTTP请求报文,服务器收到请求后就把请求文档作为响应报文返回给客户,其中请求一个文档所需的时间是:2 * RRT + 文档传输时间
HTTP/1.0的缺点就是每次请求都要重复建立连接,每次都有两倍RRT的时间开销,非持续连接也给服务带来了很大的压力
HTTP/1.1就采用了持续连接,服务器在发送响应后仍在一段时间内保持连接,使同一个客户能继续在这条连接上传送后续HTTP请求报文和响应报文,并且采用了两种工作方式
- 非流水线式:客户在收到前一个响应后才能发出下一个请求,节省了一个RRT时间,但是还是造成了TCP连接闲置
- 流水线式:客户收到响应报文之前也可以继续发送,使空闲时间大大减少,提供了效率
HTTP/2特点:
- 把服务器发回的响应并行地发回
- 允许复用TCP连接进行多个请求
- 将所有报文划分为较小的二进制编码的帧
这篇文章就不话费大量笔墨来详解HTTP相关了,下次单独写一篇文章来解释HTTP相关