HTTP基础知识和网络请求
目录
1.什么是协议
协议是一种约定,规定好一种信息的格式,如果发送方按照这种请求格式发送信息,那么接收端就要按照这样的格式解析数据,这就是协议。
2.OSI模型结构分为七层
- 网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
- IP协议对应于网络层
- TCP协议对应于传输层
- HTTP协议对应于应用层,还有FTP、TELNET等
- TCP/IP协议是传输层协议,主要解决数据如何在网络中传输;HTTP是应用层协议,主要解决如何包装使用数据,由请求和响应构成
3.什么是HTTP协议
HTTP协议即超文本传输协议(Hypertext Transfer Protocol),是Web联网的基础,也是手机PC联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,从建立连接到关闭连接的过程称为“一次连接”
- HTTP请求
- HTTP响应
响应码:
1xx:收到请求,需要请求者继续执行操作,比较少用。
2xx:请求成功。 200 OK,请求正常
3xx:重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取。 301 永久性跳转,比如域名过期换个域名; 302 临时性跳转
4xx:客户端错误。 400 请求出错,比如语法协议; 403 没权限访问; 404 Not Found,页面找不到错误; 405 Method not allowed 不允许此方法进行提交,比如接口指定POST方式,而你用了GET请求
5xx:服务器错误。 500 服务器内部报错; 503 Service Unavailable,服务器宕机
4.HTTP和HTTPS的关系
- Hyper Text Transfer Protocol over SecureSocket Layer
- 主要由两部分组成:HTTP+SSL/TLS
- 比HTTP协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性,增加破解成本
- 缺点:相同网络环境下,https协议会使页面的加载时间延长近50%,增加额外的计算资源消耗,增加10%到20%的耗电等;不过利大于弊,所以https是趋势,相关资源损耗也在持续下降
- 如果做软件压测,直接压测内网ip,通过压测公网域名,不管是http还是https,都会带来额外的损耗导致结果不准确
5.什么是URL(统一资源定位符)
标准格式:协议://服务器IP:端口/路径?key1=value1&key2=value2
协议:不同的协议有不同的解析方式
服务器IP:网络中存在无数的主机,要访问哪一台,通过公网IP区分
端口:一台主机上运行着很多的进程,为了区分不同的进程,一个端口对应一个进程,http默认的端口是80
路径:资源有很多,为了进一步区分资源所在的路径(后端接口,一般称为“接口路径”,“接口”)
6.网络请求代码实例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Test {
public static void main(String[] args) throws IOException {
// 创建URL对象
URL url = new URL("https://www.baidu.com/");
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 获取响应码
int responseCode = connection.getResponseCode();
if (responseCode >= 200 && responseCode <= 299) {
try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));) {
StringBuilder str = new StringBuilder();
String temp;
while ((temp = in.readLine()) != null) {
str.append(temp);
}
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
7.浏览器输入一个地址,到页面展示中间经历了哪些处理
- 浏览器输入url,解析url地址是否合法
- 浏览器检查是否有缓存,如果有直接显示,如果没有跳到第三步
- 在发送http请求时,需要域名解析(DNS解析),解析获取对应的ip地址
- 浏览器向服务器发起tcp链接,完成tcp三次握手
- 握手成功后,浏览器向服务器发送http请求
- 服务器收到处理的请求,将数据返回至浏览器
- 浏览器收到http响应
- 浏览器解析响应。如果响应可以缓存则存入缓存
- 浏览器进行页面渲染
浙公网安备 33010602011771号