应用层协议

应用层

应用程序体系

C/S

客户-服务器模型,由一个总是打开的服务器,多个客户机组成,客户机之间相互不能进行通信。例如,QQ、微信的聊天功能。

P2P

对等方-对等方模型,应用程序在简介连接的主机对之间使用直接通信,这些主机对被称为对等方P2P体系结构的最引人入胜的特性之一是它们的自扩展性。在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作负载,但每个对等方因为向其他对等方分发文件也为系统增加服务能力。因此不需要庞大的服务器基础设施和服务器带宽。例如,迅雷、Bit彗星的下载功能。

进程通信

进程类别
  • 客户进程:浏览器是一个客户进程。
  • 服务器进程:Web服务器是一台服务器进程。
网络接口

进程通过一个称为套接字(Socket)的软件接口向网络发送报文和从网络接收报文,套接字也被称为应用程序和网络之间的应用程序接口(Application Programming Interface),开发者可以控制套接字在应用层端的一切,但对运输层端几乎没有控制权。

进程寻址

在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接收进程需要有一个地址。

为了标识该接收进程,需要定义两种信息:

  • 主机的地址:IP地址
  • 在目的地主机中指定接收进程的标识符:端口号

协议

HTTP
概述

Web的应用层协议是超文本传输协议(HyperText TransferProtocol, HTTP),它是Web的核心。它的特点有:

  • 使用TCP作为它的支撑运输协议。
  • 只关心应用层的工作
  • 是一个无状态协议(stateless protocol),假如某个特定的客户在短短的几秒内两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,就像服务器已经完全忘记不久之前所做过的事一样。
URL地址

HTML基本文件通过对象的URL地址引用页面中的其他对象:,如

https://www.baidu.com:443/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png

  • 协议:https://
  • 域名:www.baidu.com
  • 端口号:443
  • 路径:/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png(不是服务器真实路径,还要经过一次转换)

URL一般由以下部分组成,scheme://host:port/path?query#fragment

  • Scheme: 通信协议,一般为http、https等;
  • Host: 服务器的域名主机名或ip地址;
  • Port: 端口号,此项为可选项,默认为80;
  • Path: 目录,由“/”隔开的字符串,表示的是主机上的目录或文件地址;
  • Query: 查询,此项为可选项,可以给动态网页传递参数,用“&”隔开,每个参数的名和值用“=”隔开;
  • Fragment: 信息片段,字符串,用于指定网络资源中的某片断;
通信过程

往返时间(RTT)

一个短分组从客户到服务器然后再返回客户所花费的时间。

一般过程

在这里插入图片描述

  1. 客户端发起TCP连接请求。
  2. 服务端响应TCP连接请求并开启TCP连接。
  3. 客户端请求文件。
  4. 服务端发送文件并关闭连接。

长连接

所有的请求以及响应经相同的TCP连接发送,HTTP/1.1/2.0默认使用这种方式。

短连接

每个请求/响应是经一个单独的TCP连接发送,HTTP/1.0默认使用这种方式。

报文

请求报文

在这里插入图片描述

  • 方法:GET、POST、HEAD、PUT、DELETE。
  • 版本:HTTP协议的版本。

响应报文

在这里插入图片描述

状态码:

  • 1xx:信息状态码。
  • 2xx:成功状态码。
  • 3xx:重定向状态码。
  • 4xx:客户端错误状态码。
  • 5xx:服务端错误状态码。
Cookie

Cookie是保存在客户端的一小块文本串的数据。客户端向服务器发起请求时,服务端会向客户端发送一个Cookie,客户端就把Cookie保存起来。在客户端下次向同一服务器再发起请求时,Cookie被携带发送到服务器。服务器就是根据这个Cookie来确认身份的。

HTTPS
概述

HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443.

HTTPS 协议中,SSL 通道通常使用基于密钥的加密算法,密钥长度通常是 40 比特或 128 比特。

SSL/TLS协议

SSL,即安全套接字协议(Secure Sockets Layer),TLS,即传输安全性协议(Transport Layer Security),是SSL的升级版本。

SSL/TLS协议结合了 SSL/TLS 和 TCP 协议,对通信数据进行加密,解决了 HTTP 数据透明的问题。

原理

域名系统(DNS)
概述

提供主机名到IP地址转换的目录服务。它的特点有:

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议
  • DNS协议运行在UDP之上,使用53号端口
域名层次

域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名(权威域名)。

img

域名服务器

共有四种类型的DNS服务器:

  • 根 DNS 服务器:提供TLD服务器的IP地址列表。
  • 顶级域(TLD)服务器:对于每个顶级域(com、org、net)和所有国家域(uk、fr、ca),都有TLD服务器,负责返回权威服务器的ip地址列表。
  • 权威服务器:返回域名的ip地址。
  • 本地服务器:并不处于 DNS 服务器的层次中,每个ISP都有一台本地服务器,起到桥接的作用。当主机发出 DNS 请求时,该请求被发往本地 DNS 服务器,它起着代理的作用
解析方式

迭代递归混用

在这里插入图片描述

递归

在这里插入图片描述

内容分发网络(CDN)
概述

CDN的全称是 Content Delivery Network,也就是基于内容的转发网络。CDN管理分布在多个地理位置 上的服务器,在它的服务器中存储视频(和其他类型的Web内容,包括文档、图片和音频)的副本,并且所有试图将每个用户请求定向到一个将提供最好的用户体验的CDN位置。

工作流程

假定一个内容提供商 NetCinema,租赁了第三方 CDN 公司 KingCDN 来向其客户分发视频。则用户进行访问需要6个步骤:

  1. 用户访问位于 NetCinema 的Web网页
  2. 当用户点击链接 http://video.netcinema.com/6Y7B23V 时,该用户主机发送了一个对于 video.netcinema.com 的DNS请求。
  3. 用户的本地DNS服务器(Local DNS)将该DNS请求中继到一台权威DNS服务器,该服务器向LDNS返回一个 KingCDN 域的主机名
  4. DNS 请求进入了 KingCND 专用 DNS 基础设施。此时LDNS发送第二个请求到KingCDN的服务器
  5. LDNS 向用户主机转发内容服务 CDN 节点的IP地址
  6. 一旦客户收到 KingCDN 服务器的IP地址,它与具有该IP地址的服务器创建了一条直接的TCP连接,并发出对该视频的 HTTP GET 请求。如果使用了 DASH,服务 器将首先向客户发送具有URL列表的告示文件,每个URL对应视频的每个版本,并且客户将动态地选择来自不同版本的块。
集群选择策略
  • 地理最为临近:当从一个特殊的LDNS接收到一个DNS请求,CDN选择地理上最为接近的集群。
  • 基于当前流量条件:选择时延和丢包率最低的集群。

Telnet 和 SSH 之间的主要区别在于 SSH 协议会对传输的数据进行加密保证数据安全性。

电子邮件协议
  • SMPT

  • POP3

  • IMAP

文件传送协议(FTP)
概述

FTP 协议 主要提供文件传输服务,基于 TCP 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。

FTP 是基于客户—服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接。

远程登录协议(Telent)
概述

Telnet 协议 通过一个终端登陆到其他服务器,建立在可靠的传输协议 TCP 之上。Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用Telnet并被一种称为SSH的非常安全的协议所取代的主要原因。

安全网络传输协议(SSH)

SSH( Secure Shell) 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH 建立在可靠的传输协议 TCP 之上。

面试题

重定向和转发的区别

  1. 请求次数:重定向至少请求两次,转发请求一次;
  2. 数据共享:重定向不共享数据,转发共享数据。
  3. 跳转限制:重定向可以跳转到站外,转发只能站内跳转。
  4. 前进回退:重定向不可以,转发可以。
  5. 行为主体:重定向是客户端行为,转发是服务端行为。

重定向、转发原理

Redirect

img

A找B借钱,B说没有,让A去找C借。

Forward

img

A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A。

JavaWeb 三大作用域生命周期

HttpServletRequest-请求对象

请求返回时销毁

HttpSession-用户会话对象

浏览器30分钟无动作或浏览器关闭销毁

ServletContext-全局对象

web服务器启动被创建,当web服务器被关闭则销毁

说说HTTP常用响应码及其含义?

一般:

  • 1xx:信息状态码。
  • 2xx:成功状态码。
  • 3xx:重定向状态码。
  • 4xx:客户端错误状态码。
  • 5xx:服务端错误状态码。

常用:

  • 101:切换请求协议。
  • 200:请求成功。
  • 301:永久性重定向,会缓存。
  • 302:临时重定向,不会缓存。
  • 400:客户端请求的语法错误。
  • 403:权限不足,服务器禁止访问。
  • 404:资源不存在。
  • 500:服务端发生异常。

HTTP 常用请求方式。

  • GET:对服务器资源获取的简单请求。
  • POST:用户提交数据的请求。
  • PUT:用户提交数据,服务器更新数据的请求。
  • DELETE:服务器删除指定内容的请求。
  • HEAD:获取资源元信息。

常用端口及其对应协议有哪些?

  • 21:FTP
  • 22:SSH
  • 23:Telnet
  • 80:HTTP
  • 3306:mysql
  • 6379:redis
  • 8080:tomcat

为什么HTTP协议是无状态的?

当浏览器第一次发送请求给服务器时,服务器响应了;如果同个浏览器发起第二次请求给服务器时,它还是会响应,但是呢,服务器不知道你就是刚才的那个浏览器。简言之,服务器不会去记住你是谁,所以是无状态协议。

HTTP协议如何变为有状态的?

配合 Cookie、Session、Token使用。

从浏览器地址栏输入URL到显示主页的过程?

  1. DNS解析,查找域名对应的IP地址。
  2. 与服务器通过三次握手,建立TCP连接
  3. 向服务器发送HTTP请求
  4. 服务器处理请求,返回网页内容
  5. 浏览器解析并渲染页面
  6. TCP四次挥手,连接结束

说下HTTP/1.0,1.1,2.0的区别

HTTP/1.0

默认使用非持续性连接,每次请求都需要建立一个TCP连接。它可以设置Connection: keep-alive 这个字段,强制开启持续性连接

HTTP/1.1

  1. 默认使用持续性连接
  2. 新增状态响应码。
  3. 引入更多缓存策略。
  4. 带宽优化及网络连接的使用,在请求头引入了 range 头域,它允许只请求资源的某个部分。
  5. 在请求头中加入了Host字段。

HTTP/2.0

  1. 二进制协议:1.0/1.1版本的头信息是文本(ASCII编码),数据体可以是文本或者二进制;2.0中,头信息和数据体都是二进制。
  2. 完全多路复用:在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应。
  3. 报头压缩:HTTP协议不带有状态,每次请求都必须附上所有信息。Http/2.0引入了头信息压缩机制,使用gzip或compress压缩后再发送。
  4. 服务端推送:允许服务器未经请求,主动向客户端发送资源。

HTTP与HTTPS的区别?

HTTPS = HTTP +SSL/TLS

相比于HTTP:

  • 安全性:HTTPS是安全的。
  • 默认端口:HTTP是80,HTTPS是433。
  • 资源消耗:HTTPS消耗更多。

HTTPS连接建立流程

  1. 客户端向服务端发起建立HTTPS请求。
  2. 服务器向客户端发送数字证书。
  3. 客户端验证数字证书,证书验证通过后客户端生成会话密钥(双向验证则此处客户端也会向服务器发送证书)。
  4. 服务器生成会话密钥(双向验证此处服务端也会对客户端的证书验证)。
  5. 客户端与服务端开始进行加密会话。

301、302状态码区别

  • 301:永久重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址,会缓存新地址内容。
  • 302:暂时重定向,搜索引擎会抓取新的内容而保留旧的地址,不会缓存新地址内容。

HTTP请求过程

  1. 客户端进行DNS域名解析,得到对应的IP地址
  2. 根据这个IP,找到对应的服务器建立连接(三次握手)
  3. 建立TCP连接后发起HTTP请求
  4. 服务器响应HTTP请求,客户端得到html代码
  5. 客户端解析html代码,用html代码中的资源(如js,css,图片等等)渲染页面。
  6. 服务器关闭TCP连接(四次挥手)

URI 和 URL的区别?

  • URI,全称是Uniform Resource Identifier),中文翻译是统一资源标志符,主要作用是唯一标识一个资源。
  • URL,全称是Uniform Resource Location),中文翻译是统一资源定位符,主要作用是提供资源的路径。打个经典比喻吧,URI像是身份证,可以唯一标识一个人,而URL更像一个住址,可以通过URL找到这个人。

根域名、顶级域名、权威域名

  • 根域名:www.(也可以为abc.等自定义)
  • 顶级域名:.com,.xyz,.cn.等。
  • 权威域名:个人或公司申请,配合根域名、顶级域名使用。如www.baidu.com

一级域名、二级域名、三级域名

  • 一级域名:qq.com
  • 二级域名:www.qq.com、weixin.qq.com
  • 三级域名mp.weixin.qq.com

DNS 解析过程

img

假设查询 www.baidu.com ,(此处为迭代递归查询)

  • 首先会查找浏览器的缓存,看看是否能找到www.baidu.com对应的IP地址,找到就直接返回;否则进行下一步。
  • 将请求发往给本地服务器,如果查找到也直接返回,否则继续进行下一步;
  • 本地服务器向根域名服务器发送请求,根域名服务器返回负责.com的顶级域名服务器的IP地址的列表。
  • 本地服务器再向其中一个负责.com的顶级域名服务器发送一个请求,返回负责.baidu的权威域名服务器的IP地址列表。本地服务器再向其中一个权威域名服务器发送一个请求,返回www.baidu.com所对应的IP地址。

Cookie和Session的区别与联系。

区别

img

联系

Cookie中存放有Session的SessionID,同时记录对应于哪个ip地址。

参考

《计算机网络 自顶向下方法》

http://www.cyc2018.xyz/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E5%BA%94%E7%94%A8%E5%B1%82.html

https://javaguide.cn/cs-basics/network/other-network-questions.html

https://baijiahao.baidu.com/s?id=1707212969156040996&wfr=spider&for=pc

不再维护CSDN上面的博客,请移步我的个人网站:www.coldairance.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值