20min带你学习——HTTP协议、以及经典面试问题

目录

前言

对HTTP协议总体的一个认识:

一、HTTP协议是什么?

1.1、HTTP请求格式(以百度网页为例)务必要掌握~

1.2、HTTP响应格式

​编辑

对HTTP协议具体的一个认识:

一、什么是URL

1.1、URL格式

1.2encode / decode

二、HTTP协议中两个重要方法

2.1、GET

2.2、POST

2.3、常考面试题——谈谈GET和POST的区别?

第一步、直接盖棺定论:

第二步、谈细节上的区别:

HTTP协议中的请求头(header)

一、Host

​编辑

二、Content-Length / Content-Type

2.1、Content-Length

2.2、Content-Type

三、User-Agent(简称:“UA”)

四、Referer

五、Cookie

5.1、Cookie从哪里来?

5.2、Cookie到哪里去?

5.3、Cookie 典型应用场景——维持登录状态

HTTP响应中的状态码

一、状态码(重点)

1.1、200 OK

1.2、404 Not found

1.3、403 Forbidden

1.4、405 Method Not Allowed

1.5、500 Internal Server Error

1.6、504 Gateway Timeout

1.7、302临时重定向

1.8、301 Moved Permanently

1.6、状态码表参照

如何构造一个HTTP请求?

一、通过前端构造的三种方法:

1.1、通过浏览器自己构造

1.2、通过form表单构造

1.3、通过ajax构造

二、通过postman构造

三、通过Postman生成各种语言HTTP请求


前言

        HTTP是应用层最典型协议,为什么这么说?看看他的应用场景:

  • 绝大部分的浏览器与服务器的交互;
  • 绝大部分手机APP与服务器交互;
  • 服务器之间相互调用也可以使用HTTP;

        即使最新的HTTP版本已经3.0了,但本文重点介绍1.1版本;


对HTTP协议总体的一个认识:

一、HTTP协议是什么?

        HTTP是前后端交互的桥梁,是最典型的“一问一答”的模型协议,HTTP协议主要用于用于Web浏览器和Web服务器之间的通信,想要学习一个协议,主要就是学习HTTP的报文格式;

### 常见的TCP协议面试题及答案 #### 1. TCP三次握手的过程是什么? TCP连接建立过程称为三次握手。客户端发送SYN包到服务器并进入SYN_SEND状态;服务器收到请求后回应一个ACK确认包给客户端,并把此连接放入半连接队列,此时服务器处于SYN_RECV状态;最后,客户端再次向服务器发回确认包ACK(其中ack=server_isn+1),当服务器端接收到这个应答之后即完成三次握手[^1]。 #### 2. 如何解释TCP四次挥手断开连接的原因? 由于TCP是全双工通信方式,在关闭连接时每一方都需要单独通知对方自己已经结束数据传送工作,因此需要四个报文段才能彻底释放一条双向通道。具体来说就是一方先发起FIN终止本方向的数据流,另一方回复ACK表示接受该操作,随后反向也做相同动作最终实现完全切断链接关系。 #### 3. 解释一下TCP滑动窗口机制的作用及其如何提高效率? 为了提升传输层的服务质量,TCP引入了流量控制的概念——即接收方根据自己当前缓存空间大小告知发送方可继续传入的最大字节数量(Window Size),以此防止过多未被处理的信息积压造成丢弃现象发生。而所谓的“滑窗”,则是指随着每一轮交互过程中不断调整上述参数值范围的一个动态变化区间。 ```python # Python模拟简单版本的TCP滑动窗口算法 class TCPSlidingWindow: def __init__(self, window_size): self.window_size = window_size self.buffer = [] def send_data(self, data_chunk): if len(data_chunk) <= self.window_size - len(self.buffer): self.buffer.extend(data_chunk) def receive_acknowledgment(self, ack_number): while self.buffer and min(self.buffer)[0] <= ack_number: del self.buffer[0] def adjust_window_size_based_on_feedback(self, feedback_info): # Adjust logic based on network conditions or other factors. pass ``` #### 4. 讲解拥塞控制中的慢启动、拥塞避免以及快速重传/恢复策略的具体含义? - **慢启动**:初始阶段指数级增长cwnd直到遇到第一个丢失事件为止; - **拥塞避免**:一旦检测到网络拥堵迹象就切换成线性增加模式逐步试探极限宽容量; - **快速重传**:如果连续三个重复ACK到达则立即触发超时前重新发送丢失分组而不必等待整个RTT周期过去再行动; - **快速恢复**:紧接着前者执行的一项措施,它不是直接回到SS而是采用更保守的方式去探索新的最大可能吞吐量点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值