1.介绍一下网络七层模型,HTTP在哪一层?
2.概念
1.HTTP:超文本传输协议
基于TCP协议进行可靠传输,用于万维网上客户端和服务器之间的资源请求和传送
2.URL:统一资源定位符
他使每个文档在整个互联网范围内有唯一的标识符URL
一般形式是:协议名+://+主机名(域名/IP地址)+:+端口号/路径
(统一资源标识符:URI,URL是URI的子集)
3.HTML:超文本标记语言
是一种文档结构的标记语言,可以很方便的在网页文档中标记超链接,
2.HTTP的请求方法知道哪些?GET和POST有什么区别?
3.HTTP的状态码知道哪些?
状态码 | 典型状态码 | 含义 |
---|---|---|
1XX | 接收的请求正在处理 | |
2XX | 请求正常处理完毕 | |
2XX | 200 | 成功,请求正常处理完毕 |
2XX | 203 | 请求处理完毕但是没有资源返回 |
3XX | 重定向,需要进行附加操作 | |
3XX | 301 | 永久性重定向,资源被分配了新的URI |
3XX | 302 | 临时重定向,仅仅这次被更新为新的URI |
3XX | 303 | |
4XX | 客户端请求错误,使服务器无法处理请求 | |
4XX | 400 | 错误的请求 |
4XX | 401 | 需要进行验证或者验证后失败 |
4XX | 403 | 拒绝访问 |
4XX | 404 | 没有找到URI |
5XX | 服务器发生错误,使服务器无法处理请求 | |
5XX | 500 | 服务器应用发生故障 |
5XX | 503 | 服务器正忙 |
3.HTTP和HTTPS的端口号,常见应用层协议的默认端口号:
http: 80
https: 443
ftp:控制端口21,传输端口20
telnet远程登录:23
DNS:53
MySQL:3306
DNS占用53号端口,同时使用TCP和UDP协议。那么DNS在什么情况下使用这两种协议?
DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。
DNS区域传输的时候使用TCP协议:
1.辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。
2.TCP是一种可靠连接,保证了数据的准确性。
域名解析时使用UDP协议:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
————————————————
版权声明:本文为CSDN博主「1303575952」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdn_felix/article/details/80115475
4.HTTP的请求报文和响应报文的结构有哪些?cookie放在哪?
请求报文:请求方法,请求URI,协议版本作为第一行,下面是可选的http首部字段,然后用一个空行隔开,再后面是内容实体
结构 | 细分 |
---|---|
报文首部 | 请求行:请求方法,请求URI,协议版本 |
--- | 请求首部字段,像host指定主机名,accept用户可处理的信息类型等 |
--- | 通用首部字段:像connection-keepalive,upgrade升级等 |
--- | 实体首部字段:像Content-Type,length,language等等 |
--- | 其他:比如DNT禁止追踪 |
空行隔开 | 包括'\r\n',回车0x0d和换行0x0a |
POST: /form/entry HTTP/1.1 #方法,URI,协议版本
HOST:
Connection: keep-alive
Content-Typr:
Content-Length:16#可选的首部字段
#内容实体
响应报文:协议版本,状态码,状态码对应的原因短语,响应首部字段,主体
HTTP/1.1 200 OK# 协议版本,状态码,状态码的解释短语
Date:
Content-Length:362
Content-Type: text/html#响应的首部字段
<html>#主体信息
Cookie放在首部字段的Cookie字段,除此之外还有Set-Cookie字段存放Session ID
5. cookie和session
因为http是无状态的协议,这样就无法对状态进行保存,比如登录认证的web页面,于是就有cookie用于在客户端保存状态,session用于在服务端保存状态。
cookie:
cookie机制会根据响应报文中的set-cookie首部信息通知客户端保存cookie,客户端会在下一次请求报文的首部中加入cookie字段的对应id号
session:
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
6.HTTP1.1和HTTP1.0
1.HTTP1.1默认使用HTTP长连接
只要任意一端不提出断开请求,就保持TCP连接状态不断开
减少了TCP连接重复建立和断开造成的额外开销,减轻服务器端的负载,也节约了时间
这样使得多请求可以以管道化的方式并行传输,不用等待就可以发送下一请求
其他的:https://blog.csdn.net/forgotaboutgirl/article/details/6936982
2.HTTP/1.1中在请求消息中引入了range头域,它允许只请求资源的某个部分
7.HTTPS和HTTP
1.HTTP
因为
HTTP明文通信,有窃听风险;
不验证通信方的身份,产生可能会有一方伪装的问题;
HTTP报文不验证报文完整性,可能被篡改
2.HTTPS=HTTP+报文加密+通信方验证+报文完整性保护
相当于在HTTP层和TCP层之间加了一层SSL和TLS协议
------报文加密-------:
加密方法:HTTPS采用对称和非对称两种密钥并用的混和加密机制,在交换密钥的环节使用非对称方式,之后的报文通信中使用对称加密方式,这样可以提高效率
为了解决非对称密钥中的公开密钥被替换的问题,需要用数字证书认证的方法,比如说服务器把公开密钥给到数字证书认证机构获取公钥证书传给客户端,客户端收到公钥证书,拿里面的公钥向数字证书认证机构验证证书里的数字签名,是真的那双方就统一了,就可以用这个公钥进行对称加密的传输。
------通信方验证-------:
用数字证书的方式得以验证
------报文完整性-------:
SSL会在应用层数据上附加MAC的报文摘要,可以检查到报文是否被篡改。
4.HTTPS的安全通信--SSL四次握手
在HTTP链接建立之前进行四次握手,从而客户度和服务端沟通好HTTP传输时对称加密的密钥
1、客户端请求建立SSL链接,并向服务端发送一个随机数–Client random和客户端支持的加密方法,比如RSA公钥加密,此时是明文传输。
2、服务端回复一种客户端支持的加密方法、一个随机数–Server random、授信的服务器证书和非对称加密的公钥。
3、客户端收到服务端的回复后利用服务端的公钥,加上新的随机数–Premaster secret 通过服务端下发的公钥及加密方法进行加密,发送给服务器。随后也会发送加密方法提示报文和finished报文
4、服务端收到客户端的回复,利用已知的加解密方式进行解密,同时利用Client random、Server random和Premaster secret通过一定的算法生成HTTP链接数据传输的对称加密key – session key,服务器同样会发送加密方法提示报文和finished报文。
在finished报文交换之后,就用应用层协议HTTP来通信,但是HTTP会受到SSL的保护,且此后的HTTP链接数据传输即通过对称加密方式进行加密传输。
5.HTTPS应用
比如Web的登录页面和购物结算的页面使用HTTPS,这种需要安全性保护的场景都需要HTTPS
为什么不一直用HTTPS呢?
1.加密和解密需要消耗CPU和内存资源,负载增加
2.HTTPS中的SSL会对数据做处理,消耗网络资源,增加通信的负担
3.节约购买数字证书的成本
10.当我们在浏览器输入URL以后的过程介绍一下,这一过程用到了网络各层哪些协议列举一下
1.浏览器向DNS域名系统请求解析URL的IP地址
2.浏览器得到IP地址之后与相应服务器建立TCP连接(默认端口号80)
3.接着浏览器发送一个HTTP请求报文给服务器
4.服务器处理了请求报文后,通过HTTP响应报文把HTML文件发送给浏览器
5.TCP连接进行释放
6.浏览器解释文件html文件,也就是解析渲染页面
用到的协议有:
应用层:HTTP和DNS
运输层:TCP和UDP(因为HTTP底层用的TCP,DNS底层用的UDP)
网络层:IP:IP封装分片等;ICMP提供网络传输中的差错检测;ARP协议把IP地址映射成MAC地址
网友评论