(1)http是应用层的协议,发送请求之前要先通过socket建立TCP连接,socket是通过IP和端口号建立的,所以在建立连接前要通过DNS协议把URL转换成对应的IP,客户端先把这个url发给本机配置的DNS服务器,如果能够找到相应的url就返回ip,否则DNS将继续把解析请求发送给上级DNS服务器,请求会一直发送到根DNS服务器直到得到结果解析的IP。

(2)DNS解析URL得到IP地址后,通过TCP的三次握手,建立TCP连接,之后就可以发送数据了。HTTP请求包括请求行、请求头、一个空行、请求正文。请求行包括请求方式,URL、HTTP协议版本,请求方式分7种,GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS,常用的是GET和POST。URL指定了要访问的服务器上的资源,HTTP协议版本通常是1.1。

请求头附加了浏览器的一些环境信息,常见的有accept表明浏览器可以接受的数据类型、Accept-Language浏览器可以显示的语言,User-Agent浏览器使用的操作系统和浏览器的名称和版本,Connection: keep-alive一次请求完成后,再次访问服务器上的网页,会继续使用这条已经建立的TCP连接 ,Host表示服务器的域名,还有cookie(将cookie发送到服务器)、Content-Length(请求正文的长度)、range请求的字节范围等。空行用于分隔请求头和请求正文。请求正文中放入向服务器发送的数据,一般GET方式的请求正文为空,POST方式把数据放入请求正文里。

(3)HTTP报文加上头信息后传到TCP传输层,TCP报文加上头信息后传入IP层,通过IP地址可以找到目标主机,之后报文传到网络接口层,网络接口层通过APR协议(地址解析协议),将IP地址转换成硬件地址(Mac地址、网卡地址),客户机先会查看自己的ARP高速缓存中是否有目标主机的MAC地址记录,如果客户机的高速缓存中有目标主机的记录,就通过这个MAC地址进行数据传输,否则会向局域网所有主机广播一个ARP请求,寻找目标主机的MAC地址。

(4)目标主机的网络接口层收到报文段后,通过RARP(逆地址解析协议)将硬件地址转为IP地址,之后报文段从IP层经过TCP层再到应用层,会依次解封装,从下到上传递,请求报文段最终到达目标主机应用层。目标主机处理完成后,会把HTTP响应作为报文发送到客户机,过程和上述类似。http响应包括状态行、响应头、一个空行、响应正文。状态行包括HTTP协议版本、响应状态码,状态码告诉浏览器,服务器在收到请求后的执行情况,是不是返回了预期的资源,常用的状态码有200 OK,表示请求被成功地完成,所请求的资源成功返回,302 Found表示重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的请求,304 Not Modified表示请求的文件原来已经缓存,并且没有改变,可以继续使用原来的文件,404 Not Found表示请求的资源不存在(URL输错了)。响应正文。响应头中包括了服务器的一些配置环境信息以及返回资源的一些属性信息,Date表示生成消息的具体时间和日期,Server表示服务器的版本和型号,Expires表示文件什么时候过期,过期之后重新从服务器获取,更新缓存,Last-Modified表示资源的最后修改日期,Location用于重定向一个新的位置,包含新的URL地址。响应正文就是服务器返回的HTML文档,浏览器解析后,可以显示出来。

(5) 服务器返回数据后,分情况是否关闭TCP连接,如果浏览器或服务器头信息包括了Connection:keep-alive,服务器返回数据后,TCP仍然保持连接,浏览器可以继续发送请求,节省建立连接的时间。

参考链接:

http://www.cnblogs.com/yuteng/articles/1904215.html

http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html

 http://kb.cnblogs.com/page/130970/

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html

HTTP的详细请求过程相关推荐

  1. 单片机驱动DM9000网卡芯片(详细调试过程)【下】

    http://hi.baidu.com/mcu8031/blog/item/c95903138671c625dc540171.html 单片机驱动DM9000网卡芯片(详细调试过程)[下] 4.验证初 ...

  2. web应用程序servlet的映射名称的规则及请求过程

    首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...

  3. 主动模式下FTP的详细工作过程

    文中有不对或者有不清楚的地方,请大家告诉我,谢谢!   主动模式下FTP的详细工作过程   PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建 ...

  4. ASP.NET 运行时详解 揭开请求过程神秘面纱

    对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...

  5. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)

    WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 目录 WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发) 概述 HTTP解析 HTTP请求头 HTTP响应头 H ...

  6. http请求过程(访问一个页面,发生了怎样的网络请求?)

    1. 域名解析->域名 ->缓存->根域dns->顶级域dns->本域dns->服务器IP 1.搜索浏览器自身DNS缓存,如果不存在或者过期(>60s)放弃 ...

  7. 爬虫篇——腾讯新闻的详细采集过程(列表新闻和新闻内容)

    腾讯新闻.新浪新闻的详细采集过程 一.腾讯新闻采集 1.按分类采集腾讯新闻列表 分析过程: 具体代码: 2.采集腾讯新闻内容 分析过程 具体代码 二.新浪新闻采集分析 一.腾讯新闻采集 1.按分类采集 ...

  8. [漏洞复现]CVE-2021-26855 漏洞复现及Exchange邮箱详细安装过程

    CVE-2021-26855 漏洞复现及Exchange邮箱详细安装过程 一.介绍 Exchange Server 是微软公司的一套电子邮件服务组件,是个消息与协作系统.2021年03月3日,微软官方 ...

  9. 爬虫篇——新浪新闻的详细采集过程(列表新闻和新闻内容)

    腾讯新闻.新浪新闻的详细采集过程 一.新浪新闻采集 1.按分类采集新浪的列表新闻 分析过程: 代码编写: 执行效果: 2.采集新浪新闻内容 分析过程 代码编写: 执行效果: 二.腾讯新闻采集 一.新浪 ...

最新文章

  1. 确定修改——取消修改
  2. SharePoint 2010 自定义日志
  3. mysql启动与关闭(手动与自动)
  4. Java 接受reactjs数据_[Java教程]react.js 父子组件数据绑定实时通讯
  5. 在RHEL5下构建基于系统用户的Postfix邮件系统
  6. linux 查看进程启动路径
  7. 1 ELK安装部署并监控nginx
  8. Android TelephonyManager获取LET信息及手机基本信息
  9. win10计算机加域步骤,关于win10加入域的的详细操作步骤
  10. C语言实训心得体会(精选4篇)
  11. adb工具的使用方法详解
  12. opencv将RGB转成YIQ
  13. EXCEL将汉字转化为拼音简写
  14. 电脑c语言发音,C的发音
  15. sim卡无线上网公用服务器,云SIM卡池,云SIM卡解决方案,流量分发随身WIFI方案( 忻瑞科技)...
  16. 读书笔记-精准努力-励志本身就已经让你爽了以为自己真这样做了
  17. 数明SLM27517能驱动MOSFET和IGBT功率开关 低侧栅极驱动器兼容UCC27517
  18. EWM RF手持设备开发记录
  19. 宗镜录略讲——南怀瑾老师——系列5
  20. python遇到的问题及解决方法

热门文章

  1. 1046: 数值统计
  2. java dozer_java – Dozer双向映射(String,String)与自定义转换器不可能?
  3. Oracle数据库中的级联查询、级联删除、级联更新操作教程
  4. csvn-httpd启动报AH00094错解决办法
  5. 识图在线识图_三个图片无损放大在线工具分享,把模糊图片变清晰
  6. JS获取DOM元素的方法
  7. 2021最新python爬取12306列车信息自动抢票并自动识别验证码
  8. USB驱动开发(五)之程序设计
  9. DirectShow Utility
  10. 自然语言分词词性标注指代