http请求的完整过程

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

1. 建立TCP连接

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

2. Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。

3. Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

4. Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。

5. Web服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

6. Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

7. Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:

Connection:keep-alive

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

时间: 2024-11-02 11:13:31

http请求的完整过程的相关文章

转: 数字证书原理 https 完整过程解析

点评: 讲的非常的详细与全面,值得一看. 转: http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书.如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出! 1.基础知识

一个网页从开始到最终显示的完整过程

一个网页从请求到最终显示的完整过程一般可分为如下7个步骤: 1.在浏览器中输入网址: 2.发送到DNS服务器并获得域名对应的web服务器的IP地址 3.与web服务器建立TCP连接: 4.浏览器向web服务器的IP地址发送相应的http请求: 5.web服务器相应请求并返回指定URL的数据,或错误信息,如果设定重定向,则 重定向到新的URL地址 6.浏览器下载数据后解析HTML源文件,解析的过程中实现对页面的排版,解析完成后再浏览器中显示基础页面 7.分析页面中的超链接并显示在当前页面,重复以上

Oracle SQL语句执行完整过程:

SQL语句执行完整过程: 1. 用户进程提交一个sql 语句: update temp set a=a*2,给服务器进程. 2.服务器进程从用户进程把信息接收到后, 在PGA 中就要此进程分配所需内存,存储相关的信息,如在会话内存存储相关的登录信息等. 3.服务 器进程把这个sql  语句的字符转化为ASCII 等效数字码, 接着这个ASCII   码被传递给一个HASH 函数, 并返回一个hash 值,然后服务器进程将到shared pool  中的library cache 中去查找是否存在

URL 加载到页面的完整过程

(本图为:URL 加载到页面的完整过程) 今天小编带来这篇文章主要关于“从输入 URL 到页面加载完的过程中都发生了什么事情”这个主题来进行探讨下. 一个HTTP请求的过程 为了简化我们先从一个HTTP请求开始,简要介绍一下一个HTTP求情的网络传输过程,也就是所谓的“从输入 URL 到页面下载完的过程中都发生了什么事情” DNS Lookup 先获得URL对应的IP地址 Socket Connect 浏览器和服务器建立TCP连接 Send Request 发送HTTP请求 Content Do

五、程序启动的完整过程

程序启动的完整过程: 1.先执行main函数,main内部会调用UIApplicationMain函数,该函数的声明如下: int UIApplicationMain(int argc, char argv[], NSString principalClassName, NSString *delegateClassName). argc.argv:标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可 principalClassName:指定应用程序类,该类必须

Ubuntu上snmp安装、配置、启动及远程测试完整过程

0.说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通过snmp的方式来获取Linux主机的信息则会更轻松简单些,只不过在使用前的配置可能需要花多一点时间,不过这绝对值得!而且如果需要开发Linux主机的监控软件,那使用snmp肯定是首选,毕竟它可以获得的信息太多太多! 后面的内容就来分享一下在Ubuntu上安装.配置.启动snmp以及进行远程测试

程序启动的完整过程

程序启动的完整过程 int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([MJAppDelegate class])); } } 执行顺序 1.main函数 2.UIApplicationMain 创建UIApplication对象 创建UIApplication的delegate对象 3.开启主运行循环 3(1).de

http请求 响应 详细过程

httpurlconnection 1. 配置connection对象2. connect() [根据配置设置请求头 outputStream 字符串流] 存储在内存缓冲区3. outputStream关闭时 生成http正文4. 调用getInputStream时 发送http请求 返回InputStream 从而读取此次http请求的返回信息 System.setProperty("sun.net.client.defaultConnectTimeout", "30000

41-50(UIApplication和delegate,UIApplicationMain,UIWindow,程序启动的完整过程,控制器view的延迟加载)

41.UIApplication和delegate 42.UIPickerView 43.UIDatePicker 44.程序启动的完整过程 45.UIApplicationMain 46.UIWindow 47.如何创建一个控制器 48.控制器view的延迟加载 49.多控制器 50.UINavigationController的使用步骤 { 这几天一直在赶项目, 今天终于闲下来了! 今天是个好日子,空间里满天的2014520 那么来看看我们程序员的爱情吧! 爱情就是死循环,一旦执行就陷进去了