趣谈网络协议(十四):HTTP协议

Http协议简介

    上一节讲解的Socket套接字,它是基于网络层的TCP、UDP协议的Socket编程接口,它是作用于网络层,基于端到端的包发送。(它是对TCP/IP的封装,供程序员做网络开发所用的接口)

    Http协议则是建立于网络层之上的应用层,它采用Socket编程接口并使用面向连接的TCP协议。

    Http是轿车,提供了封装或者显示数据的具体形式;Socket则是发动机,提供网络通信的能力

HTTP包格式

    http包格式,主要分为三个部分。请求行,首部,实体,如下图

457120ff6180d6287ab52039c235143a86c.jpg

    请求行

    主要有方法、url、版本。

        url:就是浏览器的请求地址,例如百度的urlhttp://www.baidu.com

        方法:有GET、POST、PUT、DELETE四种

            GET:顾名思义,get翻译为获取.就是向服务端获取资源

            POST:向服务端提交数据

            PUT:向服务端传送文本信息等

            DELETE:删除资源

        版本:现在的Http协议基本都是1.1 它是串行式的,在响应效率方面相对较低。

            新的版本2.0,它是采用并行式。例如一个html页面,它可以并行的加载html、js、css。效率显著提升

    首部

    首部的信息主要以键值对key-value的方式存在,例如:

        content-type:text/html; 或application/javascript; 或application/json;他们分别表示返回的文本类型

        Connetcion:keep-alive  保持连接

        Accept-CharSet:utf-8 客户端接收的文本编码为utf-8

        Cache-Controller:控制缓存。当值为max-age=0时,表示不使用缓存直接请求服务端资源。而当max-age不为0时则资源的缓存时间数值与该值比较,小于就直接使用缓存。 另外If-Modifed-Since也是一个关于缓存的,如果说服务端的资源更新了那客户端就得重新获取资源,而没有变更的话则会返回状态码304 Not Modified,客户端直接加载缓存这样节省了一定的带宽

        .....

        这样加上实体信息,应用层该干的事情基本完成,接下来就要把包发给传输层.怎么发给传输层呢?无非就是调用Socket,只不过浏览器这个程序已经帮你封装好了

    Http请求的发送

    HTTP 是基于 TCP 协议的,所以它使用面向连接的方式发送请求,通过 stream 二进制流的方式传给对方。当然,到了 TCP 层,它会把二进制流变成一个的报文段发送给服务器。

    在发送给每个报文段的时候,都需要对方有一个回应 ACK,来保证报文可靠地到达了对方。如果没有回应,那么 TCP 这一层会进行重新传输,直到可以到达。同一个包有可能被传了好多次,但是 HTTP 这一层不需要知道这一点,因为是 TCP 这一层在埋头苦干。

    HTTP 返回的构建

    HTTP 的返回报文也是有一定格式的。这也是基于 HTTP 1.1 的。

a5894e4e15cd9b5fc1a689e699ed2d965e8.jpg

    状态行

        状态码为200则为成功、404为找不到资源、500服务器异常

    首部

        content-type:指定返回的类型.到底是一个HTML还是JSON

HTTP2.0

    HTTP目前最新的版本是2.0、它与1.1版本最大的不同是解决1.1串行化的问题

    在1.1版本中,所有的http请求都是串行加载的,在应用层以纯文本的形式进行通信.每次通信都要带完整的 HTTP 的头。例如请求一个页面会出发多个HTTP请求:加载html文本、css样式文本、js脚本。它都是一个个进行的,加载完这个再进行下一个的加载,

    而在2.0版本中,它对Request header(请求头)进行压缩,他不会每次请求都在请求头携带大量的key-value,而是在两端建立对应内容的索引,这样在相同请求头的请求中只需加上内容索引就OK。

并且2.0是采用并行的方式同时加载html文本、js等文件。HTTP 2.0 协议将一个 TCP 的连接中,切分成多个流,每个流都有自己独立的 ID,并且把请求分成Header帧和Data帧.每个帧都有请求的唯一标识(ID).这样只要哪个请求加载完毕便传给应用程序。这样大大提高了页面的加载响应效率

HTTP 2.0 还将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码。常见的帧有Header 帧,用于传输 Header 内容,并且会开启一个新的流。再就是Data 帧,用来传输正文实体。多个 Data 帧属于同一个流。

605140505485e1ecf46f2ce2f7d2f3baf38.jpg

转载于:https://my.oschina.net/u/2283248/blog/1833106

### 回答1: 网络协议是计算机网络中进行数据传输和通信的规则和约定。PDF(Portable Document Format)是一种由Adobe开发的文件格式,用于以可靠的方式呈现和交换电子文档。 在谈论网络协议的PDF下载时,我们可以探讨以下趣闻: 首先,网络协议的PDF下载可以帮助我们更好地理解和学习网络协议网络协议本身是一种抽象的概念,有时候很难通过文字或图片来完全理解。但是,通过以PDF格式提供的文档,我们可以更直观地看到网络协议的结构、流程和细节,使得学习变得更加容易和有趣。 其次,网络协议的PDF下载还能帮助我们及时了解和跟进最新的协议标准。网络协议是一门不断发展的学科,新的协议版本和标准经常被提出和更新。通过及时下载最新的协议文档,我们可以了解最新的协议规范和改进,从而更好地应用它们于实际网络环境中。 此外,网络协议的PDF下载也给了我们方便地和他人共享学习资源的机会。通过将网络协议的文档以PDF格式发布在互联网上,任何人都能够自由下载和阅读,促进了知识的传播和共享。在学术和研究领域,这种方式也为学者们提供了方便的途径来分享最新的网络协议研究成果。 总之,网络协议的PDF下载不仅能够促进我们更好地理解和学习网络协议,还能帮助我们及时了解最新的协议标准,并且方便地与他人共享学习资源。无论是对于专业人员还是对于普通用户,网络协议的PDF下载都具有重要的意义和趣味性。 ### 回答2: 网络协议是计算机网络中的基础,它定义了数据在网络中传输的规则和方式。网络协议可以确保数据的可靠传输,有效地管理网络资源,并实现各种网络应用功能。 趣谈网络协议是一本介绍网络协议的有趣读物,可以以轻松、幽默的方式解释复杂的网络协议概念和原理。这本书通常以PDF格式提供下载,方便读者在任何设备上阅读。 下载这本书的PDF版本,可以享受以下好处: 首先,PDF格式具有跨平台和跨设备的特点。不论您使用的是电脑、平板还是手机,只要安装了合适的PDF阅读器软件,就可以轻松打开并阅读这本书。 其次,下载PDF可以实现离线阅读。无论您身处何地,只要下载好了PDF文件,即便没有网络连接,也可以随时随地阅读网络协议趣谈故事。 此外,PDF格式使得阅读更加方便。您可以在PDF阅读器中进行文字搜索、加注释、划重点,甚至可以调整字号的大小,以适应不同的阅读环境。 最后,通过下载PDF,您还可以将这本书保存到自己的电脑或移动设备上,以备日后参考。您可以在需要的时候,随时翻阅这本书,方便复习和查找相关内容。 总之,趣谈网络协议PDF的下载为我们提供了方便、快捷、随时随地的阅读体验。无论是想了解网络协议,还是希望在计算机网络领域深入学习,这本书都会是一本有趣而又实用的读物。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值