HTTP协议精讲

什么是HTTP协议?

HTTP协议又叫做超文本传输协议 是从万维网传送到本地浏览器的传输协议。

HTTP协议是一个基于TCP/IP协议的传输协议所以下面我们会说一下TCP/IP通信协议。
HTTP协议是应用层协议,且是一个面向对象的协议。
HTTP协议是一个无状态的协议(但是在实际工作中,一些万维网往往希望能够识别用户 于是 就使用到了 Cookie小饼干

Cookie是存储在用户主机中的文本文件,记录一段时间内某用户的记录 以此来提供个性化的服务

HTTP协议的传输是通过TCP协议进行连接的,所以HTTP协议本身是无连接的。(通信双方在交换HTTP报文之前不需要先建立HTTP连接)

HTTP的工作原理

HTTP协议定义web客户端如何从web服务器请求web页面,以及服务器怎么把web页面传给客户端。
HTTP采用了请求/相应模型。客户端向服务器发送一个请求报文,报问中包含要访问的url 访问的类型 协议版本 请求头部等信息,然后服务器以一个状态行作为相应,相应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

步骤

1、客户端连接到Web服务器
2、发送HTTP请求
3、服务器接受请求并返回HTTP响应
4、释放连接TCP连接
5、客户端浏览器解析HTML内容

上面说到了TCP/IP 那么TCP/IP协议是什么呢?

TCP/IP是互联网相关的各类协议族的总称,如TCP,UDP,IP,FTP,HTTP等都属于TCP/IP族内的协议。(解释不唯一)

TCP/IP的参考模型主要分为四层:应用层、传输层、网络层和数据链路层。(有时还会加上物理层,因为无论何种协议和参考模型都是以二进制数据形式在物理媒体上传输数据)

五层结构各自的作用

物理层 比特传输

解决如何连接各种计算机上的传输数据比特流

数据链路层 把网络层传下来的数据封装成帧

节点(主机 路由器)
链路 (网路中两个节点之间的物理通道)
数据链路 (网络中各个节点之前的逻辑通道)
帧 (链路层的数据传输单元 封装网络层传输下来的数据报)

网络层 源主机到目的主机之间的数据分组路由与转发

路由选择与数据转发( 路由的选择就是会根据路由算法寻找最佳的路径)
拥塞控制(如果所有的节点 都来不及接受分组,而要丢弃大量的分组 网络就处于拥塞状态 因此要采取一定的措施 来缓解这种拥塞)
异构网络互联(将多个不同的网络连接成一个网络)

解决拥塞的方法(开环控制 动态 闭环控制 静态)

传输层 负责进程与进程之间的传输服务

为应用层提供传输服务 可以使用网络层的服务

有TCP协议(面向连接 传输控制协议 可靠协议)和UDP协议(无连接 面向报文 用户数据报协议 不可靠协议 ) (详情在我的另一个博文)

**功能:**提供进程与进程之间的逻辑通信 复用和分用 对收到的报文进行差错检测

应用层 支持各种的网络应用

因为TCP/IP使用的是IP地址,那么怎么把TCP/IP与HTTP协议连接起来呢?

这时候我们就用到了DNS服务器
DNS服务器的作用就是将客户端请求的域名解析成TCP/IP可以使用的IP地址,然后整个IP地址传输给服务器,然后服务器接收到请求,根据请求生成相应内存,通过TCP/IP再传输到客户端。

GET和POST两种请求有什么区别吗?

GET请求提交的数据会在地址栏上显示出来,而POST请求不会显示

GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.

GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制(理论不受限,但是实际上各个web服务器都会进行限制).

GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

猜你喜欢

转载自blog.csdn.net/NuanShuTT/article/details/108609465