禹城市住房和城乡建设局网站,深圳龙华做网站的,公司后台的网站代理维护更新,建设网站平台滴滴车hhtp请求流程首先http是一个应用层的协议#xff0c;在这个层的协议#xff0c;只是一种通讯规范#xff0c;也就是因为双方要进行通讯#xff0c;大家要事先约定一个规范。 http请求与响应的步骤如下#xff1a; URL解析、域名解析 输入URL的时候#xff0c;首先浏览器会… hhtp请求流程首先http是一个应用层的协议在这个层的协议只是一种通讯规范也就是因为双方要进行通讯大家要事先约定一个规范。 http请求与响应的步骤如下 URL解析、域名解析 输入URL的时候首先浏览器会去请求DNS服务器通过DNS获取相应的域名对应的IP。如果url里不包含端口号则会使用协议的默认端口号。 浏览器根据访问的域名找到其IP地址。DNS查找过程如下 1浏览器缓存浏览器会缓存DNS记录一段时间。 但操作系统没有告诉浏览器储存DNS记录的时间这样不同浏览器会储存个自固定的一个时间2分钟到30分钟不等。 2系统缓存如果在浏览器缓存里没有找到需要的域名浏览器会做一个系统调用windows里是gethostbyname这样便可获得系统缓存中的记录。 3路由器缓存如果系统缓存也没找到需要的域名则会向路由器发送查询请求它一般会有自己的DNS缓存。 4ISP DNS缓存如果依然没找到需要的域名则最后要查的就是ISP缓存DNS的服务器。在这里一般都能找到相应的缓存记录。 产生请求数据 根据返回的IP和URL解析得到的参数结合应用层的协议确定发送的数据内容将这些数据放到一个缓冲区内然后形成了应用层的报文data。 此时将应用层的报文data发送到传输层。经过传输层处理如报文打上了传输头的包头主要包含端口号以及tcp的各种信息得到tcp的数据传送单位segment。 建立网络连接并发送请求包 拿到域名对应的IP地址之后User-Agent一般是指浏览器会以一个随机端口1024 端口 65535向服务器的WEB程序常用的有httpd,nginx等80端口发起TCP的连接请求。 采用ip地址协议端口号唯一标示网络中的一个进程利用socket进行通信。基于socket进行TCP三次握手建立TCP连接。然后浏览器发起了http的请求。 将传输层的数据段送到网络层在网络层被打包这样封装上了网络层的包头包头内部含有源及目的的ip地址该层数据发送单位被称为packet。网络层开始负责将这样的数据包在网络上传输如何穿过路由器最终到达目的地址。 返回响应数据 浏览器解析html代码并请求html代码中的资源如js、css、图片等 浏览器对页面进行渲染呈现给用户 断开网络连接 若connection 模式为close则服务器主动关闭TCP 连接客户端被动关闭连接释放TCP 连接;若connection 模式为keepalive则该连接会保持一段时间在该时间内可以继续接收请求; HTTP请求格式和返回格式请求格式 HTTP请求格式主要有四部分组成分别是请求行、请求头、空行、消息体每部分内容占一行 123456request-linegeneral-headersrequest-headersentity-headersempty-line // (用于分割请求头和消息体)[message-body]请求行中包含的请求方法 12345GET: 完整请求一个资源 常用HEAD: 仅请求响应首部POST提交表单 常用PUT: 上传DELETE删除响应格式 为了告知浏览器Web服务器首先传送一些HTTP头信息然后传送具体内容即HTTP体信息HTTP头信息和HTTP体信息之间用一个空行分开 HTTP响应格式服务器接收处理完请求后返回一个HTTP相应消息给客户端。HTTP响应消息的格式包括状态行、响应头、空行、消息体。每部分内容占一行。 123456status-linegeneral-headersresponse-headersentity-headersempty-line[message-body]常用的HTTP头信息有[一个http请求的详细过程](https://www.jianshu.com/p/aa97810e5fa4)① HTTP 1.0 200 OK 这是Web服务器应答的第一行列出服务器正在运行的HTTP版本号和应答代码。代码200 OK表示请求完成。② MIME_Version:1.0 它指示MIME类型的版本。③ content_type:类型 这个头信息非常重要它指示HTTP体信息的MIME类型。如content_type:text/html指示传送的数据是HTML文档。④ content_length:长度值 它指示HTTP体信息的长度字节。
SocketWEB Server都是基于Socket编程又称之为网络编程网络协议通过一个叫做socket的对象抽象出来socket可以建立网络连接读数据写数据。socket模块定义了一些常量参数用来指定socket的的地址族、socket的类型、以及支持的TCP/IP协议。 利用ip地址协议端口号唯一标示网络中的进程然后利用socket进行通信。 socket是在应用层和传输层之间的一个抽象层它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 通常传输层的服务通过系统调用的方式提供以socket的方式。对于客户端要想建立一个socket连接需要调用这样一些函数socket() bind() connect(),然后就可以通过send()进行数据发送。 参考 一次完整的HTTP请求过程一个http请求的详细过程TCP与SOCKET的三次握手的对应关系三次握手 四次握手 与socket函数的关系http请求与响应全过程写给那些让我糊里糊涂的HTTP、TCP、UDP、Socket