计算机网络之应用层Tips
1.HTTP头部包含的信息
HTTP头部本质上是一个传递重要信息的键值对
通用头部:是客户端和服务器都可以使用的头部,可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能,例如Date(报文创建时间),Cache-Control(指定当前的请求/恢复中是否使用缓存)
请求头部:是请求报文特有,它们为服务器提供了一些额外信息,比如客户端希望接收什么类型的数据,例如Accept(告诉服务器自己允许哪些媒体类型)、Accept-Charset、Accept-Encoding、Accept-Language....等
响应头部:便于客户端提供信息,比如,客服端在与哪种类型的服务器进行交互例如,Server(告知客户端服务器信息)、Retry-After(告知客户端多久后再发送请求)...
实体头部:请求/响应报文中实体部分的首部,比如,可以用实体头部来说明实体主体部分的数据类型,如Content-Language(响应体的语言)、Content-Type(返回内容的MIME类型)
2.Keep-Alive 和 非Keep-Alive(HTTP的通用头部里的Connection参数)
浏览器每次发起HTTP请求都要与服务器创建一个新的TCP链接,服务器完成请求处理后会立即断开TCP连接,然后不断的创建和关闭会耗时耗资源,所以HTTP/1.1版本中默认使用持久链接(Keep-Alive),当然长时间保持TCP链接时容易导致系统资源被无效占用,这时可以设置keepalive_timeout参数,当TCP连接在传送完最后一个HTTP响应,保持连接特定秒数后关闭连接。
3.HTTP长连接和短链接
长连接:多用于操作频繁,点对点的通讯,而且客户端连接数目较少的情况。例如即时通讯、网络游戏等
短链接:用户数目较多的Web网站的 HTTP 服务一般用短连接。例如京东,淘宝
4.HTTP方法
HTTP/1.0 定义了三种请求方法:GET, POST 和 HEAD 方法。
HTTP/1.1 增加了六种请求方法:OPTIONS, PUT, PATCH, DELETE, TRACE 和 CONNECT 方法
5.GET的长度限制是多少
HTTP 中的 GET 方法是通过 URL 传递数据的,而 URL 本身并没有对数据的长度进行限制,真正限制 GET 长度的是浏览器,例如 IE 浏览器对 URL 的最大限制为 2000多个字符,大概 2KB左右,不同浏览器,限制长度不同。
6.HTTP和HTTPS的工作方式
HTTP(Hyper Text Transfer Protocol):
一种简单的请求 - 响应协议,被用于在 Web 浏览器和网站服务器之间传递消息。HTTP 使用 TCP(而不是 UDP)作为它的传输层协议。其默认工作在 TCP 协议 80 端口,HTTP 客户端发起一个与服务器的 TCP 连接,一旦连接建立,客户端和服务器进程就可以通过套接字接口访问 TCP。客户端从套接字接口发送 HTTP 请求报文和接收 HTTP 响应报文。类似地,服务器也是从套接字接口接收 HTTP 请求报文和发送 HTTP 响应报文。其通信内容以明文的方式发送,不通过任何方式的数据加密。当通信结束时,客户端与服务器关闭连接。
HTTPS(Hyper Text Transfer Protocol Over Secure Socket Layer):
是以安全为目标的 HTTP 协议,在 HTTP 的基础上通过传输加密和身份认证的方式保证了传输过程的安全性,默认使用443端口,HTTPS 协议需要到数字认证机构(Certificate Authority, CA)申请证书,一般需要一定的费用
1.首先双方进行三次握手建立可靠连接(这也是HTTPS页面响应比HTTP慢的原因,既要三次握手又要SSL协商)
2.客户端生成加密算法1和自己的加密套件发送给服务器
3.服务器生成加密算法2和自己的加密套件发送给客户端
4.服务器发送自己的CA证书,公钥,SSL协商完毕
5.客户端生成加密算法3,用公钥加密生成一个预主密钥发送给服务器
6.客户端、服务器分别用加密算法1、加密算法2和预主密钥生成会话密钥
7.双方使用会话密钥开始通信
7.客户端为什么信任第三方证书
两种情况:
篡改:假设中间人篡改了证书原文,由于他没有 CA 机构的私钥,所以无法得到此时加密后的签名,因此无法篡改签名。(解决方法:加密签名与原文签名对比)
调包:中间人拿到了 CA 机构认证的证书,它想窃取网站 A 发送给客户端的信息,于是它成为中间人拦截到了 A 传给客户端的证书,然后将其替换为自己的证书。(解决方法:请求域名与证书域名进行对比)
8.HTTP 是不保存状态的协议,如何保存用户状态
1.基于 Session 实现的会话保持(相当于把窗口一直开着)
2.基于 Cookie 实现的会话保持(若遇到 Cookie 被禁用的情况,则可以通过重写 URL 的方式将会话标识放在 URL 的参数里,也可以实现会话保持,相当于复制浏览器的当前链接)
基于 Cookie 的会话保持与基于 Session 实现的会话保持最主要的区别是前者完全将会话状态信息存储在浏览器 Cookie 中
9.状态码
HTTP 状态码由三个十进制数字组成,第一个数字定义了状态码的类型,后两个并没有起到分类的作用。HTTP 状态码共有 5 种类型
常见状态码&常见问题
200 请求成功
204 请求成功但无内容返回
206 范围请求成功
301 永久重定向; 30(2|3|7)临时重定向,语义和实现有略微区别;
304 带if-modified-since 请求首部的条件请求,条件没有满足
400 语法错误
401 需要认证信息
403 拒绝访问
404 找不到资源
412 除if-modified-since 以外的条件请求,条件未满足
500 服务器错误
503 服务器宕机了
301和302的区别:
301:永久移动。请求的资源已被永久的移动到新的URI,旧的地址已经被永久的删除了。返回信息会包括新的URI,浏览器会自动定向到新的URI。今后新的请求都应使用新的URI代替。
302:临时移动。与301类似,客户端拿到服务端的响应消息后会跳转到一个新的 URL 地址。但资源只是临时被移动,旧的地址还在,客户端应继续使用原有URI。
10.DNS(Domain Name System,域名系统)的作用和原理
是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。
通常我们有两种方式识别主机:通过主机名或者 IP 地址。人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的 IP 地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到 IP 地址转换的目录服务,域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
DNS查询成树状结构(根DNS->一级DNS->二级DNS),主要有两种查询方式:
递归查询:如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户端的身份,向其他根域名服务器继续发出查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询
迭代查询:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应该找哪个域名服务器进行查询,然后让本地服务器进行后续的查
11.DNS为什么使用UDP传输协议
其实,DNS 既使用 TCP 又使用 UDP,首先,进行区域传送(主域名服务器向辅助域名服务器传送变化的那部分数据)时会使用 TCP,因为数据同步传送的数据量比一个请求和应答的数据量要多,而 TCP 允许的报文长度更长,因此为了保证数据的正确性,会使用基于可靠连接的 TCP。
其次,当客户端向 DNS 服务器查询域名 ( 域名解析) 的时候,一般返回的内容不会超过 UDP 报文的最大长度,即 512 字节。用 UDP 传输时,不需要经过 TCP 三次握手的过程,从而大大提高了响应速度,但这要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。
12.DNS劫持
1.通过破解注册域名的email,利用这个email获取域名解析的控制权,转让域名的所有权,将域名与恶意IP地址进行绑定
2.通过恶意进程修改本地的域名与ip的映射关系,使得a域名指向了b的ip地址
解决方法:
1.直接通过 IP 地址访问网站,避开 DNS 劫持。
2.由于域名劫持往往只能在特定的网络范围内进行,因此一些高级用户可以通过网络设置让 DNS 指向正常的域名服务器以实现对目的网址的正常访问,例如将计算机首选 DNS 服务器的地址固定为 8.8.8.8。
13.socket() 套接字有哪些
套接字(Socket)是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象,网络进程通信的一端就是一个套接字,不同主机上的进程便是通过套接字发送报文来进行通信。例如 TCP 用主机的 IP 地址 + 端口号作为 TCP 连接的端点,这个端点就叫做套接字。
流套接字(SOCK_STREAM):基于 TCP 传输协议,主要用于提供面向连接、可靠的数据传输服务。
数据报套接字(SOCK_DGRAM):基于 UDP 传输协议,对应于无连接的 UDP 服务应用。
原始套接字(SOCK_RAW):用来传送非传输层数据包(例如 Ping 命令时用的 ICMP 协议数据包)或者遇到操作系统无法处理的数据包。
14.URI(统一资源标识符)和 URL(统一资源定位符)之间的区别
URI:告诉你有这个资源
URL:告诉你这个资源在哪里(链接访问,相当于绝对路径)
15.为什么 fidder,charles 能抓到你的包(抓取数据包的过程)
假如我们需要抓取客户端的数据包,需要监控客户端与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。而中间的网络节点不受我们控制,是基本无法实现抓包的,因此只能在客户端与服务器之间进行抓包。
- 其实就是将抓包工具视为中间人,其对于本地而言相当于服务端;而对于真正的服务端而言则相当于客户端;
- 抓包工具分别和本地以及服务器都进行TLS握手协商;
- 这就需要本地能够信任抓包工具提供的证书(也就是需要额外安装一个证书
16. 如果你访问一个网站很慢,怎么排查和解决
1.首先最直接的方法是查看本地网络是否正常,可以通过网络测速软件例如电脑管家等对电脑进行测速,若网速正常,我们查看网络带宽是否被占用,例如当你正在下载电影时并且没有限速,是会影响你打开网页的速度的,这种情况往往是处理器内存小导致
2.当网速测试正常时,我们对网站服务器速度进行排查,通过 ping 命令查看链接到服务器的时间和丢包等情况,一个速度好的机房,首先丢包率不能超过 1%,其次 ping 值要小,最后是 ping 值要稳定,如最大和最小差值过大说明路由不稳定。或者我们也可以查看同台服务器上其他网站的打开速度,看是否其他网站打开也慢。
3.如果网页打开的速度时快时慢,甚至有时候打不开,有可能是空间不稳定的原因。当确定是该问题时,就要找你的空间商解决或换空间商了,如果购买空间的话,可选择购买购买双线空间或多线空间;如果是在有的地方打开速度快,有的地方打开速度慢,那应该是网络线路的问题。电信线路用户访问放在联通服务器的网站,联通线路用户访问放在电信服务器上的网站,相对来说打开速度肯定是比较慢。
4.从网站本身找原因。网站的问题主要包括网站程序设计、网页设计结构和网页内容三个部分
网站程序设计:当访问网页中有拖慢网站打开速度的代码,会影响网页的打开速度,例如网页中的统计代码,我们最好将其放在网站的末尾
网页设计结构:如果是 table 布局的网站,查看是否嵌套次数太多,或是一个大表格分成多个表格这样的网页布局
网页内容:看网页中是否有许多尺寸大的图片或者尺寸大的 flash 存在,我们可以通过降低图片质量,减小图片尺寸,少用大型 flash 加以解决,还有可以除去不必要的加载项
17.其他常用协议
FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式,使用 TCP 数据报,提供交互式访问,双向传输。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是在 Internet 传输 Email 的标准,是一个相对简单的基于文本的协议。
DHCP ( Dynamic Host Configuration Protocol,动态主机设置协议 ) 是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:
- 用于内部网络或网络服务供应商自动分配 IP 地址给用户
- 用于内部网络管理员作为对所有电脑作中央管理的手段
SNMP(Simple Network Management Protocol,简单网络管理协议)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的 Internet 协议族的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况
18.网页解析全过程(用户输入网址到显示对应页面的全过程)
① DNS 解析:当用户输入一个网址并按下回车键的时候,浏览器获得一个域名,而在实际通信过程中,我们需要的是一个 IP 地址,因此我们需要先把域名转换成相应 IP 地址。
② TCP 连接:浏览器通过 DNS 获取到 Web 服务器真正的 IP 地址后,便向 Web 服务器发起 TCP 连接请求,通过 TCP 三次握手建立好连接后,浏览器便可以将 HTTP 请求数据发送给服务器了。
③ 发送 HTTP 请求:浏览器向 Web 服务器发起一个 HTTP 请求,HTTP 协议是建立在 TCP 协议之上的应用层协议,其本质是在建立起的TCP连接中,按照HTTP协议标准发送一个索要网页的请求。在这一过程中,会涉及到负载均衡等操作。
④ 处理请求并返回:服务器获取到客户端的 HTTP 请求后,会根据 HTTP 请求中的内容来决定如何获取相应的文件,并将文件发送给浏览器。
⑤ 浏览器渲染:浏览器根据响应开始显示页面,首先解析 HTML 文件构建 DOM 树,然后解析 CSS 文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。
⑥ 断开连接:客户端和服务器通过四次挥手终止 TCP 连接。
计算机网络之应用层Tips相关推荐
- 【计算机网络】应用层 : 总结 ( 网络应用模型 C/S P2P | 域名解析 DNS | 文件传输协议 FTP | 电子邮件 | 万维网 与 HTTP ) ★★★
文章目录 一.网络应用模型 ★ 二.域名解析过程 ★ 三.FTP 文件传输协议 四.电子邮件★ 五.万维网 和 HTTP 协议★ 一.网络应用模型 ★ 网络应用模型 : ① 客户 / 服务器 模型 ( ...
- 自顶向下计算机网络学习 应用层
自顶向下计算机网络学习 应用层 一.应用层协议原理 1. 网络应用的体系结构 1.1 客户-服务器(C/S)体系结构 1.2 对等体(P2P)体系结构 1.3 混合体:客户 - 服务器和对等体系结构 ...
- 计算机网络原理 - 应用层
计算机网络原理 - 应用层 应用层 应用层是主机上进程之间的交互,不同的进程内可以有多个线程,多线程处理数据 2.1 应用层协议原理 研发网络应用的核心是写出能够运行在不同端系统和通过网络彼此通信的程 ...
- 计算机网络自顶向下 应用层 习题
计算机网络自顶向下 应用层 习题 假定你想尽快地处理从远程客户到服务器的事务,你将使用 UDP 还是 TCP?为什么? 答:我会使用UDP, 因为TCP是面向连接的, 在传输之前需要进行三次握手. 而 ...
- 计算机网络笔记----应用层
应用层 应用层协议原理 网络应用程序的体系结构 客户-服务器体系结构 P2P体系结构 进程通信 进程与计算机网络之间的接口 进程寻址 可供应用程序使用的运输服务 可靠数据传输 吞吐量 定时 安全性 因 ...
- 计算机网络自顶向下-应用层
一.简介: 网络应用是计算机网络存在的理由,没有了应用也不存在任何的网络协议.我们学习网络应用的原理和实现方面知识,从定义应用层概念开始,其中包括网络服务.客户]服务器.进程和运输层接口. 其中包括我 ...
- 计算机网络之应用层图解,秒解应用层HTTP,期末考试不担心!!
应用层 已同步微信公众号:乐享Coding,期待你的关注! 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分. 首先对应用层要有个大概了解,思维导图 ...
- 计算机网络之应用层(DNS域名系统)
应用层作为和用户直接交互的一层,它具体的内容就是规定应用进程在通信时所需要遵循的协议. 应用层的很多协议都是基于客户-服务器方式(C-S方式),即便是 P2P 的方式,本质上也只是一种特殊的客户-服务 ...
- 计算机网络体系结构 - 应用层
一.应用层协议 (1)域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务. (2)文件传输协议(File Transfer Protocol,FTP ...
最新文章
- 优秀程序员写代码的七个优秀习惯
- Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优
- 2.1 Java程序的构成
- 以感恩的心离职,站好最后一班岗
- javascript之变量
- 最接近WeChat的全屏自定义相机(Custom Camera)
- 读取word 图片_Word中快速输入复杂公式
- JBoss 目录结构解释
- web.xml 详细介绍
- springboot注解式AOP通过JoinPoint获取参数 学习笔记
- Js查找数组中元素的位置
- 懒人也能变美,AR试妆会让你剁手到停不下来吗?
- Jquery特殊属性
- Unity内嵌浏览器插件(Android、iOS、Windows)
- 自动定量包装机机械及控制系统设计(PLC控制)
- python实现小写金额转换成大写
- ClientToScreen ()与 ScreenToClient()
- 视频全屏非全屏切换,状态栏动态显示隐藏兼容性解决
- 360浏览器(QQ浏览器 等双核浏览器) 极速 IE 兼容 模式的 兼容问题处理:设置优先使用极速模式 渲染和加载
- 3.2 从关系型数据库中查询数据