计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)

1. 常见的应用层协议

① 常见应用层协议
  • TCP之上的应用层协议有:
    FTPFile Transfer Protocol文件传输协议
    TELNET远程登录协议
    HTTPHyperText Transfer Protocol超文本传输协议
    SMTPSimple Mail Transfer Protocol简单邮件传输协议
  • UDP之上的应用层协议有:
    SNMP简单网络管理协议
    TFTPTrivial File Transfer Protocol简单文件传输协议
    RIPRouting Information Protocol路由信息协议
  • 二者之上的:DNSDomain Name System域名系统
② DNS(域名系统)
  • DNS 是一个联机分布式数据库系统,使用C/S模式,使得大多数域名都在本地进行解析
  • DNS可以将域名解析为IP地址,具体的解析工作由域名服务器完成。
  • 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名、三级域名等。
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第1张图片
  • cctv邮件域名的构成:
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第2张图片
  • 常见的顶级域名:
  1. .com:表示商业机构
  2. .net:表示网络服务机构
  3. .gov:表示政府机构
  4. .edu:表示教育机构
  5. .cn : China,中国,国家顶级域名
  • DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53大多数情况下 DNS 使用 UDP 进行传输,这就 要求域名解析器和域名服务器都必须自己处理超时重传从而保证可靠性
  • 在两种情况下会使用 TCP 进行传输:
  1. 如果返回的响应超过 512 字节(UDP 最大只支持 512 字节的数据)。
  2. 区域传送(区域传送是主域名服务器向辅助域名服务器传送变化的那部分数据)。
③ FTP(文件传输协议)
  • FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件:
  1. 控制连接: 服务器打开端口号 21 等待客户端的连接,客户端主动建立连接后,使用这个连接将客户端的命令传送给服务器,并传回服务器的应答。
  2. 数据连接: 用来传送一个文件数据,如果是主动模式,数据连接的端口号为20;如果是被动模式,数据连接的端口号随机
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第3张图片
  • 根据数据连接是否是服务器端主动建立,FTP 有主动和被动两种模式
  1. 主动模式: 服务器端主动建立数据连接,其中服务器端的端口号为 20客户端的端口号随机,但是必须大于 1024,因为 0~1023 是熟知端口号。
  2. 被动模式: 客户端主动建立数据连接,其中客户端的端口号由客户端自己指定服务器端的端口号随机
  • 二者的优劣:
  1. 主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙
  2. 但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号
④ TELNT(远程登录协议)
  • 通过TELNET,用户可以通过TCP远程登录到其他主机,在本地主机的击键能传到远程主机,同时也能将远程主机的输出显示到本地主机屏幕上。其实,就是我们在经常使用的远程桌面
  • 远程登录协议使用的端口号为23,具有以下的特点
  1. 这种服务是透明的,用户感觉就像在操作自己的本地主机一样,其实操作的是远程主机。
  2. TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。
⑤ SMTP(简单邮件传输协议)
  • 一个电子邮件系统由三部分组成:用户代理邮件服务器以及邮件协议
  • 邮件协议包含发送协议读取协议,发送协议常用 SMTP端口号25),读取协议常用 POP3端口号110)和 IMAP端口号143)。
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第4张图片
  • 电子邮件的地址格式如下:
    用 户 名 @ 邮 件 服 务 器 的 域 名 用户名@邮件服务器的域名 @
⑥ 常见的应用层协议及其使用的端口

计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第5张图片

2. HTTP

① HTTP中的URL
  • URL(Uniform Resource Locator,统一资源定位符)用来表示从Internet上得到的资源的位置访问这些资源的方法
  • URL的组成:<协议>://<主机>:<端口>/<路径>
  • HTTP的URL为:http://<主机>:<端口>/<路径>,由于http的默认端口号为80,可以省略;同时路径也可以省略。
  • 常见的HTTP的URL的格式如下:
    http://www.lib.uestc.edu.cn/
    http://gr.uestc.edu.cn/jigou
  • 注意: 主机就是HTTP服务器的域名
② HTTP的页面请求

计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第6张图片
以HTTP/1.0为例,用户鼠标点击了http://www.tsinghua.edu.cn/index.html的链接,整个页面的请求过程如下:

  1. 浏览器分析链接指向页面的URL。
  2. 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址,DNS解析出清华大学服务器的IP地址为166.111.4.100
  3. 浏览器与清华大学服务器建立TCP连接(其中IP地址是166.111.4.100,端口号为80)
  4. 浏览器向清华大学服务器发出HTTP GET报文
  5. 清华大学服务器收到该报文后,生成HTTP响应报文发回给浏览器,该报文的主体是index.html的内容
  6. 浏览器和清华大学服务器断开TCP连接
  7. 浏览器抽取HTTP响应报文中index.html的内容,渲染后显示该页面

HTPP的三次握手

  • 所谓的HTTP的三次握手,其实是客户和服务器为了建立TCP,进行的三次握手。
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第7张图片
  • 第一次握手: 客户向服务器发送连接请求报文段,SYN=1seq=x。这时,客户进入SYN-SENT状态
  • 第二次握手: 处于LISTEN状态的服务器收到客户的连接请求报文段后,如果同意建立连接便,则向客户发送确认,SYN=1ACK=1seq=yack=x+1。这时,服务器进入SYN-RCVD状态
  • 第三次握手: 客户在收到服务器的确认报文段后,立即向服务发送确认,ACK=1seq=x+1ack=y+1。这时,客户进入ESTABLISHED状态。服务器在收到客户的确认报文段后,也进入ESTABLISHED状态
  • 此后,客户便可以通过HTTP GET报文向服务器请求资源;服务器返回HTTP响应报文,返回客户想要获取的资源。
  • 注意:
  1. 《计算机网络教材》中说,在第三次握手时,客户向服务器发送的确认报文中就可以携带自己想要获取的资源。建立TCP连接后,服务器直接返回客户请求的资源。
  2. 通过WireShark抓包发现,当三次握手都完成后,客户和服务器之间才会有数据的传输。
② HTTP的报文结构
  • HTTP有两类报文:请求报文响应报文
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第8张图片

请求报文

  • 包含三个部分:请求行首部行(又叫请求头)、实体主体(又叫请求消息体请求报文通常不使用)。

响应报文

  • 包含三个部分:状态行首部行(又叫响应头)、实体主体(又叫响应消息体有些响应报文不使用

二者的区别

  • 请求报文和响应报文都包含三个部分:开始行首部行实体主体,在请求报文中开始行称为请求行,在响应报文中开始行称为状态行
  • 请求报文中的请求行包含:方法URLHTTP版本,响应报文中的状态行包含:HTTP版本状态码以及解释状态码的短语
  • HTTP报文的每个内容之间,都用空格隔开该行结束都用回车换行,而且首部行与实体主体之间都有一个空行
  • 就算是不带实体主体的请求报文最后也有一个空行。下图是请求报文的例子:
    计算机网之应用层(DNS、FTP、TELNET、SMTP,HTTP中的URL请求、报文结构)_第9张图片
③ HTTP中的方法
  • 所谓的方法,其实是面向对象编程中的术语,就是对所请求对象的操作。而且,请求报文的类型由它所采用的方法决定
  1. GET方法: 获取资源。当前网络请求中,绝大部分使用的是 GET 方法。
  2. HEAD: 获取报文的首部。和 GET 方法类似,但是不返回报文实体主体部分主要用于确认 URL 的有效性以及资源更新的日期时间等
  3. POST方法: 给服务器添加信息。POST用于向服务器传输数据GET用于从服务器获取资源
  4. PATCH方法: 对资源进行部分修改PUT 也可以用于修改资源,但是只能完全替代原始资源PATCH 允许部分修改
  5. PUT方法: 上传文件。自身不带验证机制,任何人都可以上传文件。因此,PUT方法存在安全性问题,一般不使用该方法
  6. DELETE方法: 删除URL所标识的资源。与 PUT 功能相反,并且同样不带验证机制
  7. OPTIONS: 查询指定的 URL 能够支持的方法。会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。
  8. CONNECT方法: 用于代理服务器,要求在与代理服务器通信时建立隧道。使用 SSLSecure Sockets Layer,安全套接层)和 TLSTransport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
  9. TRACE: 追踪路径,服务器会将通信路径返回给客户端。发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪)。
④ HTTP中的状态码
  • 状态码都是三位数字分为5大类共33种
  • 1XX表示通知信息的,如请求收到了或正在进行处理
    100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应
  • 2XX表示成功,如接受或知道了。
    200 OK:请求成功,一般用于GET与POST请求。
    204 No Content :请求已经成功处理,但是返回的响应报文不包含实体主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。
    206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。
  • 3XX表示重定向,如要完成请求必须采取进一步的行动。
    301 Moved Permanently :永久性重定向,请求的资源已被永久移动到新的URL,客户下次访问时使用新的URL。
    302 Found :临时性重定向,资源只是临时被移动,客户应继续使用原有URL。
    307 Temporary Redirect :临时重定向,与 302 的含义类似,使用GET请求重定向
  • 4XX表示客户的差错,如请求中有错误的语法或不能完成
    400 Bad Request :请求报文中存在语法错误,服务器无法解析。
    401 Unauthorized :该状态码表示发送的请求需要有认证信息,如果之前已进行过一次请求,则表示用户认证失败。
    403 Forbidden :服务器拒绝执行客户的请求。
    404 Not Found:服务器无法根据客户的请求找到资源(网页)。
  • 5XX表示服务器的差错,如服务器失效无法完成请求。
    500 Internal Server Error :服务器内部错误,无法完成请求。
    503 Service Unavailable :由于超载或系统维护,服务器暂时的无法处理客户的请求。
⑤ HTTP的首部
  • HTTP有4 种类型的首部字段:通用首部字段请求首部字段响应首部字段实体首部字段
  • 几种常见的首部字段:
  1. Date:创建报文的日期时间(通用首部字段)
  2. Accept-Charset:优先的字符集
  3. Accept-Encoding:优先的内容编码
  4. Max-Forwards:最大传输逐跳数,TRACE方法中指定数值,没经过一个服务器数值减1。(请求首部字段)
  5. Allow:资源可支持的 HTTP 方法,在OPTION方法的响应报文中给出
  6. Content-Encoding:实体主体适用的编码方式
  7. Content-Length:实体主体的大小
  8. Content-Type:实体主体的媒体类型,如 text/htmlimage/jpegvideo/mpeg4
  9. Last-Modified: 资源的最后修改日期时间(实体首部字段)

你可能感兴趣的:(计算机网络)