一:什么是HTTP协议?

超文本传输协议 (HyperText Transfer Protocol),一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。 目的是保证客户端与服务器之间的高校通信。

二:工作原理

客户端(浏览器)向服务器提交 HTTP 请求,服务器向客户端返回响应信息。

具体步骤:

  1. 客户端和服务器建立连接(TCP三次握手);
  2. 客户端发送一个请求给服务器;
  3. 服务器返回相应的响应信息给客户端;
  4. 释放连接(TCP四次挥手);
  5. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上。

三:TCP连接

TCP三次握手

过程:

1.客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

2.服务器端收到SYN报文,回应一个SYN (SEQ=y),ACK(ACK=x+1)报文,进入SYN_RECV状态。

3.客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

为什么要三次握手?

一次握手:客户端无法确认是否能够和服务器正常通信,却一直发连接请求是毫无意义的。

两次握手:1.客户端发一条连接请求给服务器,由于网络阻塞,服务器未收到。

2.客户端等了一段时间,服务器仍未回应它,于是再次发出连接请求,服务器收到请求并进行确认,TCP连接建立,开始通信,通信结束后释放连接。客户端进入CLOSED状态。

3.此时服务端收到失效的连接请求,并向客户端确认,但客户端已关闭,服务端将会为连接请求分配资源并且一直等待下去,浪费了服务端连接资源。

四次握手:三次握手已经能够建立连接,期间服务器有一次确认连接请求的操作就已足够,没必要进行多次确认,对于资源来说是一种浪费。

四:释放TCP连接

TCP四次挥手

过程:

1.数据发送完毕后,客户端发送释放连接请求(FIN=1,seq=u )并进入FIN-WAIT-1状态。

2.服务器收到释放连接请求,做出应答( ACK=1,seq=v,ack=u+1.),并进入CLOSE-WAIT状态。(此时客户端处于FIN-WAIT-2状态不发送只接收数据,此时仍在接收服务器传输的数据)

3.服务器发送完所有数据后发送释放连接请求(FIN=1,ACK=1,seq=w,ack=u+1),并进入LAST-ACK状态。

4.客户端收到释放连接请求后发送确认应答(ACK=1,seq=u+1,ack=w+1),并进入TIME-WAIT状态.该状态会持续2MSL时间(服务器收到应答会立即进入CLOSED状态),若该时间段内没有收到重发请求,就进入CLOSED状态。

A:为什么四次挥手?

建立连接时, 服务器收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。 而释放连接,服务器接收到客户端的FIN报文时,表示客户端不再发送但还能接收数据,此时服务器未必将全部数据都发送给了客户端,因此会先发送ACK报文进入CLOSE-WAIT状态,待发送完所有数据后,再发送FIN报文给客户端表示同意关闭连接(ACK和FIN一般都会分开发送),从而导致多了一次。

B:为什么客户端发完第四次挥手后需要持续2MSL时间后才会关闭?

如果客户端发完第四次挥手立即关闭:

第一,若最后一个ACK报文丢失,服务器收不到客户端的应答,会再次发送一个释放连接请求,而此时客户端已经关闭,服务器会一直等待并发送请求。

第二,若在此次连接中出现“已经失效的连接请求报文段”,下次建立的TCP连接中就会出现旧连接的请求报文(若客户端发送完第四次挥手后,在2MSL时间后关闭,此段时间内可以使本次连接内产生的所有报文段从网络中消失,下次建立的TCP连接中就不会出现旧连接的请求报文)。

HTTP请求/响应原理相关推荐

  1. 爬虫工作流程、请求与响应原理、requests库讲解

    爬虫工作流程.请求与响应原理.requests库讲解 爬虫分类主要分为两大板块 web爬虫(浏览器爬虫) APP爬虫(手机端爬虫) 在这两大板块中又可以把爬虫归类为聚焦爬虫和通用爬虫 聚焦爬虫:针对某 ...

  2. 客户服务器模型请求响应,计算机网络原理-第8章.ppt

    文档介绍: 计算机网络原理working第8章应用层辜落僻画崇喜菲斋膛盼殊阿广越宵渝霸愚郡响棵侣库吊器斋凛挥凰抿二浆计算机网络原理-第8章计算机网络原理-第8章2001-03-25客户/服务器模型(1 ...

  3. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常

    10.1 Servlet介绍 ​ Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...

  4. SAP UI5 应用的 OData XML 格式的元数据请求解析原理,基于 DOMParser

    前一篇文章SAP UI5 应用的 OData 元数据请求响应的解析原理分析我们介绍了 SAP UI5 OData 元数据解析的入口.本文继续介绍基于 DOMParser 的 XML 数据解析原理. 入 ...

  5. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[中篇]:请求响应

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...

  6. 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

    一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...

  7. http :请求响应报文-web服务-ajax-cors跨域

    node:http 协议:请求响应报文-web服务-url与对象的转化-ajax-cors跨域 1 梳理重点 1.1搭建服务 注意: ① 站点创建完成后,需要通过node命令启动 ② 创建站点的代码如 ...

  8. python数据包头_Python爬虫-请求响应包头

    请求响应包头 请求报头(Request Headers) 1. Host (主机和端口号) Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于U ...

  9. 五千来多字,就为了聊聊HTTP报文,请求响应头,cookie以及HTTPS加密方式

    靓仔靓女们大家好,我们又见面了,公众号:java小杰要加油,这周来分享一篇关于HTTP协议相关的文章 看完此文可以对 HTTP报文格式.HTTP各种请求头,HTTP响应码. cookie属性以及HTT ...

  10. HTTP协议协议报文结构请求响应数据报分析

    目录 一. 何为HTTP 1. 简单理解HTTP协议的工作过程 2. Fiddler抓包工具 2.1 抓包工具的原理 二. HTTP 请求解析 1. 首行结构 1.1 认识URL 1.2 HTTP方法 ...

最新文章

  1. 第二章 序列比对——Blast局部比对
  2. 清空memcached中缓存的数据的方法
  3. 组策略 之 驱动器映射
  4. 8086汇编4位bcd码_51单片机用汇编语言实现BCD码转换
  5. #感恩节# 华为云21天转型容器实战营免费开营
  6. Struts2(一)— 入门
  7. 关于[一个基于WF的业务流程平台]表设计的说明
  8. android 动态添加颜色,Android绘制一个三角形并且可动态改变颜色
  9. html5复习分类,HTML5考试复习资料.doc
  10. java preference xml,java – 找不到PreferenceScreen类
  11. 如何处理地下管线数据
  12. pwa+lavas简述
  13. 移动端车牌识别SDK应用
  14. 蠕虫病毒与一般计算机病毒的区别,蠕虫和病毒的区别是什么啊!
  15. ie浏览器html页面怎么清缓存,Web项目中,清理浏览器缓存的几种方式
  16. NMPA已注册肿瘤小Panel试剂盒生物信息学分析内容对比
  17. No provider available from registry
  18. STM32F103C8T6 USART2 配置
  19. 及其他公共信息网络的计算机上存储,不得在未采取防护措施的情况下将互联网及其他公共信息网络上的数据复制到涉密计算机及网络,确...
  20. 那些在《JavaEE开发的颠覆者 Spring Boot实战》中遇到的坑,,。(一)

热门文章

  1. 产业互联网周报:博通610亿美元收购VMware;阿里云财报13年来首次年度盈利;华为:对所有供应商提出碳减排要求...
  2. matlab cg steihaug,截断共轭梯度法
  3. 微信支付开发之APP支付介绍及业务流程
  4. Ace Admin前端框架笔记二导航栏Navba
  5. matlab 分式拟合,如何用matlab拟合微分方程
  6. 如何有效挖掘客户需求
  7. 地方时太阳时html源码,地方时和时区
  8. 基于微信小程序的学生活动管理系统的设计与实现
  9. EasyPR如何添加绿牌C++版
  10. Hadoop配置环境变量(详解版)