计算机网路HTTP、TCP详解

HTTP

HTTP基本概念

HTTP(超文本传输协议): HTTP是在计算机世界中两点 之间传输文字、图片、视频等超文本 内容数据的约束与规范

常见状态码:

2xx:报文被收到,已经在正确处理中。

3xx:重定向,资源位置发生改变,需要客户端重新发请求。

4xx:客户端错误,请求报文有问题,服务器无法处理。

5xx:服务器错误,服务器在处理内部请求时发生了错误。

HTTP常见字段

Host :客户端发送请求时用来寻找服务器的域名(域名通过DNS解析找到服务器IP,到达服务器后通过host找到需要在服务器中访问的网址)

*Content-Length:*表示响应的长度。HTTP请求通过回车符作为header的结束,通过Content-Length作为body的结束。

*Content-Type:*服务器向客户端返回值时,告诉客户端返回的格式是什么,例如UTF-8。这个值可以通过response.setHeader("Content-Type", "text/html;charset=UTF-8");

Connection(设置为Keep-Alive): 表示开启HTTP长连接,只要客户端或者服务器某一端不提出断开连接的请求,那么TCP就不会断开连接 。但是在HTTP2的时候已经是默认长连接了。

GET与POST

GET: 在RPC的定义下,GET请求主要是从服务器中获取指定资源

POST: 在RPC的定义下,POST请求主要是从服务器中修改指定资源

GET与POST是安全或者是幂等的吗?

GET请求: 获取指定资源是一个查询操作 ,所以不论是请求一次还是一万次 他都是同一个值 ,所以GET请求时安全并且幂等 的操作。因为多次操作获取值是相同的,所以GET请求的返回值是会被浏览器进行缓存

POST请求: 修改指定资源,他可能是一个新增 或者提交操作,所以多次请求他就会新增多条数据 ,那么他就不是幂等 的操作。而POST请求不会被浏览器进行缓存

HTTP缓存技术

当多次请求返回值都一样时,浏览器会将结果存储到浏览器中,这样就不需要去请求服务器了。缓存方式分为:强制缓存和协商缓存。

强制缓存:

强制缓存指 只要浏览器判断缓存没有过期 ,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边

当浏览器第一次请求服务器 时,如果服务器在response 中添加了Cache-Control 字段设置浏览器强制缓存时间下次请求 时,先判断Cache-Control到期时间,如果没到期直接从缓存中获取数据。服务器再次获取该请求时会再次设置Cache-Control时间。

协商缓存:

**协商缓存就是与服务端协商过后,通过服务端告诉你是否可以使用本地缓存。**服务器会响应一个304告诉客户端可以使用本地缓存。

响应头部,包含Etag存储资源唯一标识 。请求头部包含if-none-match,当资源过期时会将if-none-match值设置为Etag,判断资源是否发生变化,如果不变化返回304继续使用缓存,变化返回200重新加载资源。

这种方式的优势,解决没有修改文件内容,修改时间改变问题、修改在秒级以下也能监控。所以Etag优先级比根据资源修改时间判断的优先级更高

协商缓存这两个字段都需要配合强制缓存中 Cache-Control 字段来使用,当强制缓存没有命中之后,才会跟服务器之间进行协商缓存

HTTP1.1的特性

优点: HTTP的优点就是简单 ,报文通过key-value的形式存在在header或者body里面 。同时他位于OSI协议的最顶层 ,他的下层有更高的灵活性 ,例如HTTPS便是在HTTP与TCP加入了SSL/TLS安全协议。HTTP广泛的使用,不论手机端还是PC端都是通过HTTP进行请求。

**缺点:**HTTP的两大缺点,无状态(需要重复验证)与明文传输(不安全)。

无状态:

无状态的好处就是服务器可以不用处理更多资源 ,坏处在于关联操作时每次都需要进行验证 (登录->加入购物车->下单->支付。每个过程都需要验证身份信息)。我们通过Cookie(服务器发给浏览器一个凭证)可以解决这个问题。

明文传输:

HTTP的信息不安全 ,写在url上或者Body里面,通过抓包就可以获取数据了。HTTPS通过SSL/TLS安全协议对数据进行加密解决该问题。

HTTPS与HTTP

HTTPS对比HTTP的主要改变就是变的更加安全, 通过在TCP协议 中添加SSL/TLS协议 从而进行信息加密、校验机制、身份证书解决了安全问题。

HTTPS通过对称加密(只使用公钥验证)+非对称加密(公钥私钥一起验证)摘要算法+数字签名 、**数字证书(权威机构申请)**三种方式共同保证HTTPS的安全性。

HTTP1.0/1.1/2的演变

HTTP1.1对比HTTP1.0的优势是支持长连接、管道

HTTP2(基于HTTPS)对比HTTP1.1的优势是数据安全 ,性能上支持二进制格式、并发传输、服务器推送

TCP

三次握手四次挥手

三次握手(客户端与服务端状态变化也需要牢记):

为什么不是是两次握手

两次握手会导致历史连接, 避免资源的浪费**。**理论上三次连接就能避免任何问题,所以不需要四次连接。

2.25分讲解什么是历史连接

TCP如何解决丢包问题与乱序问题

四次挥手

为什么要有超时等待状态?

因为当在第四次挥手时,如果ACK包发送失败,而客户端已经关闭。那么服务端将一直处于最后确认状态。所以,超时等待状态是为了预防ACK包发送失败所设置的状态。

相关推荐
大丈夫立于天地间28 分钟前
水水水水水
网络
Hacker_xingchen1 小时前
CTF知识点总结(二)
网络·安全·web安全
3D_DLW1 小时前
无网络时自动切换备用网络环境
网络·远程桌面·路由表·跃点数
网络安全queen1 小时前
淺談Cocos2djs逆向
网络·安全·web安全·面试
19999er1 小时前
LAMP搭建
网络·笔记·安全·网络安全·云计算
-Bin2 小时前
net-http-transport 引发的句柄数(协程)泄漏问题
网络·网络协议·http·云原生·golang
黑客老陈2 小时前
SRC技巧篇 | 利用工具批量挖掘SRC
网络·python·sql·安全·web安全
真正的醒悟2 小时前
2025资源从哪里来!
网络
冰红茶兑滴水5 小时前
HTTPS 协议
网络协议·http·https
Thomas_YXQ5 小时前
Unity3D中基于ILRuntime的组件化开发详解
开发语言·网络·游戏·unity·unity3d