计算机网络 应用层 学习笔记

本文深入探讨了应用层协议的原理,包括TCP和UDP服务的特点。讲解了HTTP的工作机制,如非持续连接和持续连接,以及TCP的三次握手。此外,还介绍了Web缓存的概念和作用,以及FTP和电子邮件系统的运作。同时,提到了DNS服务及其在因特网目录服务中的重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用层协议原理

  • 套接字(socket)是同一台主机内应用层与运输层的接口

因特网提供的运输服务

1. TCP服务
  • 面向连接的服务: 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息(握手).
  • 可靠的数据传输服务: 通信进程能够依靠TCP无差错地,按适当顺序交付所有发送的数据.
  • TCP有拥堵控制机制
2.UDP服务

UDP是一种不提供不必要服务的轻量级运输协议

  • UDP是无连接的,两个进程通讯前没有握手
  • UDP协议提供一种不可靠数据传输服务
  • 报文可能是乱序到达的
  • UDP没有拥堵控制机制

应用层协议

应用层协议(application-layer protocol)定义了运行在不同端系统上的应用程序如何相互传递报文.应用层协议定义了:

  • 交换的报文类型, 如请求报文,响应报文
  • 各种报文类型的语法
  • 字段的语义
  • 确定一个进程何时以及如何发送报文

Web和HTTP

HTTP

Web的应用层协议是超文本传输协议(HyperText Transfer Protocol, HTTP)

HTTP使用TCP协议作为它的支撑运输协议. HTTP客户首先发起一个与服务器的TCP连接.一旦建立连接,该浏览器和服务器就可以通过套接字接口访问TCP.

HTTP是一个无状态协议(stateless protocol),即HTTP服务器并不保存关客户的任何信息。HTTP默认采用带流水线的持续连接

非持续连接和持续连接
  • 非持续连接(no-persistent connection)每个请求/响应对是经过单独的TCP连接发送
  • 持续连接(persistent connection)所有请求/响应对是经过相同的TCP连接发送
TCP三次握手
  • 客户向服务器发送一个小TCP报文段
  • 服务器用一个小TCP报文段做出确认和响应
  • 客户向服务器返回确认

非持续连接的缺点

  • 必须为每个请求建立和维护一个全新的连接
  • 每个对象经受两倍RTT(Round-Trip Time, 往返时间)

HTTP报文

HTTP请求报文

在这里插入图片描述

GET /somdir/page.html HTTP/1.1    //请求行
Host: www.xxx.xxx                 //主机
Connection: close                 //服务器发送请求对象后关闭
User-agent: Mozilla/5.0           //用户代理,浏览器类型
Accept-langue: fr                 //内容协商首部
  • 方法字段:GET POST HEAD PUT DELETE
HTTP响应报文

在这里插入图片描述

用户与服务器的交互: cookie

cookie组成部分:

  • 在HTTP响应报文中的一个cookie首部行
  • 在HTTP请求报文中的一个cookie首部行
  • 在用户端系统中保留一个由用户浏览器管理cookie文件
  • 位于Web站点的一个后端数据库
    在这里插入图片描述

Web缓存

Web缓存(Web cache)也叫代理服务器(proxy server)
在这里插入图片描述

过程
  1. 浏览器和代理服务器建立TCP连接,并将HTTP请求发送到代理服务器
  2. 代理服务器见检查本地已存储对象复本。如果存储对象在其中,代理服务器向浏览器发送HTTP响应报文返回该对象
  3. 如果代理服务器中没有该请求对象,代理服务器和源服务器建立TCP连接,然后代理服务器向源服务器发送一个目标对象的HTTP请求。源服务器接到请求后,将请求对象通过HTTP响应发送给代理服务器
  4. 代理服务器收到请求的对象时,在本地建立该对象的副本,然后通HTTP响应将对象发送给浏览器。
WEB缓存的作用
  • Web缓存可以减少客户请求的响应时间
  • 减少一个机构的接入链路到因特网的通信量
  • 可以 减少整个WEB网络的流量,提高所有应用程序性能

条件GET

虽然WEB缓存可以调高用户体验,但是WEB缓存中的对象副本可能不是最新的。HTTP提供条件GET机制(conditional GET)机制让WEB缓存来验证对象是不是最新的。

过程:

  1. 代理服务器代表浏览器向服务器发送请求报文
  2. WEB服务器向代理服务器发送响应对象。代理服务器将响应对象发送给浏览器,并存储响应对象和最后修改时间(Last-Modified)。
  3. 一段时间后,当浏览器再次通过代理服务器请求相同的对象时。代理服务器通过触发条件GET请求验证缓存是否是最新的。设置If-Modified-Since首部字段为缓存的最后修改时间(Last-Modified)
  4. 如果缓存是最新的,WEB服务器发送一个状态为403的响应报文(Not Modified)代表缓存是最新的。

FTP

在这里插入图片描述

HTTP和FTP对比

  1. HTTP和FTP都运行在TCP之上
  2. HTTP发送和响应使用同一个TCP连接;FTP使用两个并行的TCP连接:控制连接(control connection)(port 21)和数据连接(data connection)(port 20)。
  3. FTP维护用户状态;HTTP是无状态的

电子邮件

在这里插入图片描述
电子邮件系统主要组成部分:

  • 用户代理(user agent)
  • 邮件服务器(mail server)
  • 简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)
    在这里插入图片描述

SMTP(默认端口25)

A的代理
A的邮件服务器
B的邮件服务器
B的代理

SMTP与HTTP

  • HTTP主要是一个拉协议(pull protocol) ,TCP连接是由想接收文件的机器发起; SMTP基本上是一个推协议(push protocol), TCP连接由要发送文件的机器发起
  • SMTP要求每个报文用7比特ASCII码格式
  • HTTP把对象封装到响应报文中; SMTP所有对象都在报文中

邮件报文格式

From: xxx@xxx.xx
To: xxx@xxx.xxx
Subject: subject

content

邮件访问协议

  • 第三版的邮局协议(Post Office Protocol-Version 3, POP3)
  • 因特网邮件访问协议(Internet Mail Access Protocol, IMAP)
  • HTTP

DNS因特网目录服务

DNS提供的服务

  • 一个分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

其他服务:

  • 主机别名(host aliasing). 一个拥有复杂主机名(主机规范名)的主机可以拥有一个或者多个主机别名。应用程序可以调用DNS来获取主机别名对应的规范主机名(canonical hostname)以及主机的IP地址
  • 邮件服务别名(mail server aliasing) 电子邮件应用程序可以调用DNS来获取主机别名对应的规范主机名以及主机的IP地址
  • 负载分配(load distribution)

DNS协议运行在UDP上,使用端口号53

DNS工作机理概述

  1. 应用程序调用DNS客户端,并指明需要被转换的主机别名
  2. 用户主机上的DNS接收到后,向网络中发送一个DNS查询报文
  3. 用户主机上的DNS接收到一个提供多需要映射的DNS查询报文
  4. 映射结果传递到调用DNS的应用程序
3类DNS服务器:
  • 根DNS服务器: 根名字服务器提供TLD服务器的IP地址
  • 顶级域(Top-Level Domain, TLD) (DNS)服务器:顶级域域名服务器负责顶级域名如com,org,net等的解析。TLD服务器提供了权威DNS服务器的IP地址
  • 权威DNS服务器:

本地DNS服务器: 当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,将该请求转发到DNS服务器层次结构中
在这里插入图片描述

DNS缓存

DNS利用DNS缓存来减小延迟性能和减少互联网中DNS消息数量。

DNS记录和报文

资源记录

DNS服务器和DNS分布式数据库的存储了资源记录(Resource Record, RR)
一个资源记录是一个包含以下内容的四元组

资源记录: (Name, Value, Type, TTL)

TTL是记录的生存时间,它决定资源记录从缓存中删除的时间
Name和Value的值依赖于Type

  • Type=A:Name是主机名, Value是该主机名对应的IP地址
  • Type=NS,: Name是个域(如 baidu.com), Value是个知道如何获取该域中主机IP地址的权威DNS服务器的主机名
  • Type=CNAME,:Value是别名为Name的主机对应的规范主机名
  • Type=MX:Value是别名为Name的邮件服务器的规范主机名

如果一个DNS服务器是某个主机名的权威DNS服务器,那么该DNS服务器就包含一条用于该主机名的A记录(即使不是该主机名的权威DNS服务器也可能包含一条A记录的缓存)

如果一个DNS服务器不是某个主机名的权威DNS服务器,那么该DNS服务器中就包含一条NS记录,还包含一条A记录,记录了该NS记录中Value字段DNS服务器的IP地址

DNS报文

enter image description here

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值