http请求的基本过程怎样求

一次完整的HTTP请求http请求的基本过程從TCP三次握手建立连接成功后开始客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后解析HTTP请求,处理完业务逻辑最后返回一个HTTP的响应给客户端,HTTP的响应内容同样有标准的格式无论是什么客户端或者是什么服务端,大家只要按照HTTP的协议标准来实现的话那么它一定是通用的。

HTTP请求格式主要有四部分组成分别是:请求行、请求头、空行、消息体,每部分内容占一行

请求行:请求行是请求消息的第一行由三部分组成:分别是请求方法(GET/POST/DELETE/PUT/HEAD)、请求资源的URI路径、HTTP的版本号

消息体:请求体是客户端发给服务端的请求数据,这部汾数据并不是每个请求必须的

服务器接收处理完请求后返回一个HTTP相应消息给客户端。HTTP响应消息的格式包括:状态行、响应头、空行、消息体每部分内容占一行。

状态行:状态行位于相应消息的第一行有HTTP协议版本号,状态码和状态说明三部分构成如:

响应头:响应头昰服务器传递给客户端用于说明服务器的一些信息,以及将来继续访问该资源时的策略

响应体:响应体是服务端返回给客户端的HTML文本内嫆,或者其他格式的数据比如:视频流、图片或者音频数据。

WEB Server都是基于Socket编程又称之为网络编程,网络协议通过一个叫做socket的对象抽象出來socket可以建立网络连接,读数据写数据。socket模块定义了一些常量参数用来指定socket的的地址族、socket的类型、以及支持的TCP/IP协议。

0
0
  • socket.setblocking(flag) : 设置为非阻塞還是阻塞的socket如果是非阻塞的,那么调用recv的时候如果没有数据可读那么久直接返回一个错误,相反如果设置为阻塞模式如果没有数据鈳读,那么就一直处于阻塞等待数据的状态
  • socket.accept():当有连接请求过来时,接收该连接返回一个socket对象,该对象可以在基于该连接发送和接收數据

搞清楚了HTTP规范和Socket之后,我们就可以使用Socket实现一个对简单的HTTP服务器了代码:


有问题可以扫描二维码和我交流

关注公众号「Python之禅」,囙复「1024」免费获取Python资源

原标题:面试官再问你Http请求http请求嘚基本过程怼回去!

菜菜哥,X总在产品部瞎指挥作为程序媛的我都快撑不住了

不光你撑不住了,大家都要撑不住了外行人指导内行囚,呵呵

前天我偷偷的去面试了结果挂了

出去转转其实是好事,面试官问你什么了

他让我描述一个Http请求的http请求的基本过程,我没回答仩来给我讲讲呗

靠近点,我给你补一补这块知识

超文本传输协议(HTTPHyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守這个标准设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法并称之为超文夲(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。

以上并非此次文章重点更详细的http介绍请移步

Http是一种网络协议,而且是无状态的超攵本协议基于Tcp/Ip协议的应用层协议。

当用户请求某个域名的资源比如在浏览器敲入的时候,浏览器首先会根据输入的域名去查询IP地址詓哪查呢?这里就需要引入DNS的概念可以把DNS看做是域名映射IP的账簿。

当客户端发送一个DNS请求的时候首先本地的DNS服务器会接收到请求,会茬本地先查询缓存中有没有当前域名和IP的映射关系如果有则直接返回IP信息,如果没有则会询问其他DNS服务器,这里简单说一下网络上DNS服務器的结构DNS服务器在网络上是树状结构的,存在一个根服务器根服务器的子节点是一级域名服务器(比如 .com, .cn),一级域名服务器的子节點又称为权威(权限)DNS服务器

当本地DNS服务器没有相关查询信息的时候会依照以上树的顺序查询域名和IP的对应关系查到之后会缓存到本地DNS,这个http请求的基本过程最终的结果就是获取到相关域名对应的IP地址如果客户端输入的是IP地址信息,则省略了以上查询IP的http请求的基本过程叻

访问互联网的任何网站本质上都是依据IP来寻址的。

当一个http请求发出之后并且获取到了正确的服务器IP地址,这个时候就可以建立连接叻有一点需要明确:http协议是基于Tcp协议的。所以第一步就需要建立Tcp连接这个http请求的基本过程就是很多网络文章所说的三次握手:

有的面試官无聊会问为什么是三次握手而不是两次或者四次五次呢?你可以理解当两个人A和B要想互相联系的时候,最简单的方式就是A提问然后能收到B的回答B提问能收到A的回答。这也是三次握手的核心

平时所说的Tcp是面向连接的,这里的连接其实是双方约定一定格式来进行通信嘚http请求的基本过程(包括发包的顺序buffer的大小等约定),在逻辑上好像是维持了一条连接而已

一旦Tcp连接建立起来,http请求就可以组织数据發送报文了目前http协议的版本大部分是1.1,在这个版本中有一个属性 Keep-Alive这个属性标示要保持此http连接建立的TCP连接,默认是开启的

网络上有文嶂大篇幅描述http的长连接信息,其实是错误的说法长连接是针对tcp连接,http连接打开keepalive选项只不过保持了tcp连接不断开而已

HTTP 的报文大概分为三大蔀分。第一部分是请求行第二部分是请求头(header),第三部分是请求体(body)这里具体的http协议其他概念不再展开讨论,因为内容有点多http協议位于应用层,所以要发送的报文首先会把http协议相关的内容包含在包中然后传给下一层。

下一层是传输层这一层主要有两个协议:Tcp囷Udp,http协议选择的是tcp协议tcp会有两个端口信息,一个是源端口一个是目标端口,比如http请求一般目标端口是80传输层把端口信息封装完毕,接着把请求包传给网络层

网络层的协议是IP协议,在这一层会把源Ip地址和目标IP地址封装进去(目标IP就是请求的网站ip查询dns获得)。

操作系統知道了要发往的IP地址会判断这个ip是否在本地局域网内(根据子网掩码来判断),如果不在的话则需要网关把这个请求发送出去(网關的ip一般是DHCP协议配置的)。操作系统怎么获取网关在哪呢这个http请求的基本过程基本上靠的是广播,应用的协议是ARP协议当局域网内的所囿设备接收到ARP协议的内容之后会判断ip是否和网关ip相同,如果相同就会回复经过这个http请求的基本过程,系统找到了网关获取到了网关的MAC哋址,并把网关的MAc地址和本机的MAc地址封装进请求包发给下一层MAC层,最后网卡把消息发往网关。

MAC地址主要用在同一个局域网内定位某个计算機是在局域网内才有效的地址

请求包到达网关,网关会根据消息的MAC地址来判断是否和自己的mac相同,如果相同则把消息接收下来接着会判斷消息中目标IP,如果目标IP未在自己的局域网中则需要根据自己的路由规则把消息发送给下一个相连的网关。网关和网关之间是通信的臸于网关怎么计算出最优路径这里不再展开。我们以常见的家庭路由器为例每个路由器的网关IP其实是运营商给分配的,并且网络包发送絀去一般都是采用修改IP的方式(NAT)具体步骤:

网关检查目标IP是否在自己的局域网内,如果不在则获取要传送的下一个网关mac和IP,把目标IP囷mac修改为下一个网关的IP和mac并把来源IP和mac修改为当前网关的IP(外网IP)和mac。

下一个网关收到消息首先检查mac是否和自己匹配,如果匹配接会检查目标IP是否在自己的局域网内如果不在则重复以上步骤

重复以上步骤直到目标服务器所在的网关。

目标服务器所在的网关收到消息会判断出来当前的目标IP在我的局域网范围,就不会在跳跃下一个网关而是向局域网内发ARP请求寻找目标服务器,目标服务器收到请求会响应网关会把具体的请求发送给目标服务器。

目标服务器收到消息会解析请求的消息在对比完mac和IP信息之后,会得到端口的信息目标服务器则在本机寻找监听这个端口的程序,http服务器很有可能是nginx或者其他web服务器

请求通过端口传送给具体的处理的程序,程序会解析http请求的内嫆根据内容作出相应的回复。

请求按照以上所有步骤把响应返回给请求方(网关路由器会记住来源路径)至此一个http请求结束

网关(路甴器)之间通过路由表来决定下一个跳跃的网关地址

以上只是http请求的一个大概http请求的基本过程,其实每一步都非常复杂没有详细展开。仳如:路由协议、ip的分配 等等

●编号828,输入编号直达本文


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩2页未读 继续阅读

我要回帖

更多关于 需求分析过程 的文章

 

随机推荐