完整的HTTP通信步骤(7步)
建立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连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
相关推荐
-
浅析Android系统中HTTPS通信的实现
前言 最近有一个跟HTTPS相关的问题需要解决,因此花时间学习了一下Android平台HTTPS的使用,同时也看了一些HTTPS的原理,这里分享一下学习心得. HTTPS原理 HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.所以,研究HTTPS协议原理,最终就是研
-
java使用httpclient发送post请求示例
复制代码 代码如下: package org.ssi.util; import java.io.IOException;import java.util.ArrayList;import java.util.List; import net.sf.json.JSONArray; import org.apache.commons.lang.exception.ExceptionUtils;import org.apache.commons.logging.Log;import org.apach
-
在服务器上配置仅使用HTTPS通信的教程
HTTP 严格传输安全(HSTS)是一种安全功能,web 服务器通过它来告诉浏览器仅用 HTTPS 来与之通讯,而不是使用 HTTP.本文会说明如何在 Apache2.Nginx 和 Lighttpd 上如何启用 HSTS.在主流的 web 服务器上测试通过: Nginx 1.1.19. Lighttpd 1.4.28 和 Apache 2.2.22 ,环境为 Ubuntu 12.04. Debian 6 & 7 和 CentOS 6,只需要调整部分参数就可以工作在其它的发行版上. 什么是 HT
-
java使用httpclient模拟post请求和get请求示例
复制代码 代码如下: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;import org.apache.commons.httpclient.Header;import org
-
使用JAVA实现http通信详解
Http通信概述 Http通信主要有两种方式POST方式和GET方式.前者通过Http消息实体发送数据给服务器,安全性高,数据传输大小没有限制,后者通过URL的查询字符串传递给服务器参数,以明文显示在浏览器地址栏,保密性差,最多传输2048个字符.但是GET请求并不是一无是处--GET请求大多用于查询(读取资源),效率高.POST请求用于注册.登录等安全性较高且向数据库中写入数据的操作. 除了POST和GET,http通信还有其他方式!请参见http请求的方法 编码前的准备 在进行编码之前,我们
-
使用httpclient无需证书调用https的示例(java调用https)
使用httpclient无需证书调用https的url地址,传输字节流. 复制代码 代码如下: package com.paic.hmreport.metaQ; import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.FileOutputStream;import java.io.IOException;import ja
-
java实现HttpClient异步请求资源的方法
本文实例讲述了java实现HttpClient异步请求资源的方法.分享给大家供大家参考.具体实现方法如下: package demo; import java.util.concurrent.CountDownLatch; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.nio.client.DefaultHttpAsyn
-
完整的HTTP通信步骤(7步)
建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络.HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80 (2) Web浏览器向Web服务器发送请求命令 一旦建立了TCP连接,Web浏览器就会向Web服务器发送请
-
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
文件上传分为两个部分,HTML显示部分和PHP处理部分,HTML部分主要是让用户来选择所要上传的文件,然后通过PHP中的$_FILES,我们可以把文件上传到服务器的指定目录. 1.客户端页面 客户端的配置 1.表单页面 2.表单发送方式为post 3.表单form中添加enctype="multipart/form-data" <body> <form action="doaction.php" method="post" en
-
Vue封装通用table组件的完整步骤记录
目录 前言 为什么需要封装table组件? 第一步:定义通用组件 第二步:父组件与子组件进行render通信 第三步:使用组件 总结 前言 随着业务的发展和功能的增多,我们发现不少页面都具备相似的功能,这里举几个比较俗的例子:可以多选的下拉菜单,带输入的对话框,日期选择器等等,于是我们会想办法将这些共有的功能抽取成一个个公共组件,以便能够在不同的页面或业务中使用. 为什么需要封装table组件? 后台管理系统表格使用频率高,减少关于table的业务代码,且便于后期统一修改.便于后期维护.如给ta
-
JAVA实现基于Tcp协议的简单Socket通信实例
好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. 1.首先先来看下基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 2.相关联的API: 1.首先先来看下
-
浅析NFS服务器原理以及搭建配置部署步骤
目录 NFS服务简介 什么是NFS? NFS挂载原理 NFS服务器到底使用哪个端口来进行数据传输呢? RPC与NFS通讯原理 那么RPC又是如何知道每个NFS功能的端口呢? NFS客户端和NFS服务器通讯过程 Linux下NFS服务器部署 NFS服务所需软件及主要配置文件 RPC主程序:rpcbind NFS主程序:nfs-utils NFS的相关文件 服务端安装NFS服务步骤 第一步:安装NFS和rpc 第二步:启动服务和设置开启启动 第三步:配置共享文件目录,编辑配置文件 NFS客户端挂载配
-
vue综合组件间的通信详解
本文实例为大家分享了vue综合组件间的通信,供大家参考,具体内容如下 实现一个ToDoList. ①完成所有的组件的创建和使用 ②add 点击add按钮时候,将用户输入的内容(todoinput),显示在(todolist) 核心代码:兄弟组件间通信 步骤1:var bus = new Vue() 步骤2:在准备接受数据的组件 bus.$on('addEvent',function(){ }) 步骤3:触发事件 bus.$emit('addEvent',123) 将todolist中数组的元素
-
Android Studio配置Kotlin开发环境详细步骤
Android Studio配置Kotlin开发环境详细步骤 第一步:安装Kotlin插件 打开Settings面板,找到Plugins选项,点击Browse repositories(浏览仓库),输入"Kotlin"查找,然后安装即可.安装完成之后需要重启Android Studio (切记!). 安装完成之后如下图所示. 插件当前的最新版本是1.1.2-release-Studio-2.3-3. 第二步:配置Kotlin开发环境 点击菜单栏的"Tools"选项,
-
iOS开发之UIPickerView实现城市选择器的步骤详解
前言 UIPickerView是一个选择器控件,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活.UIPickerView直接继承了UIView,没有继承UIControl,因此,它不能像UIControl那样绑定事件处理方法,UIPickerView的事件处理由其委托对象完成. 本文借助于UIPickerView来实现城市选择器,第一列为省份,第二列为第一列省份对应的城市或者区,数据放在plist中,plist结构如下图所示,第一层是一个Di
-
Yii2搭建后台并实现rbac权限控制完整实例教程
1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/config/main-local.php 实际项目中本地的数据库往往跟线上数据库不一致, 我们这里配置到main-local.php就可以了,产品上线后,我们可以使用git或者svn忽略掉main-local.php,线上直接部署. 我们这里使用的mysql数据库,配置如下 当然啦,上面红圈圈的信息需要你自己手动修改掉,要是十分巧合跟我的一样
-
利用Docker制作Nginx+PHP镜像的步骤详解
前言 这篇文章给大家介绍的是使用Docker制作nginx+php的镜像,本文里的镜像是centos + nginx 1.9.7 + php 5.6.14,下面话不多说,直接看实现的步骤吧. 1.首先下载到nginx和php: nginx-1.9.5.tar.gz 下载:http://nginx.org/en/download.html php-5.6.14.tar.gz 下载:>http://php.net/downloads.php 2.以及扩展包so: memcache-2.2.4.t
随机推荐
- 荐书|程序员书单必不可少系列之算法篇
- javascript call和apply方法
- IOS多线程编程NSThread的使用方法
- iOS中关于Cookie验证登录状态
- JavaScript数组去重的几种方法效率测试
- C语言实现单链表逆序与逆序输出实例
- php封装的page分页类完整实例
- 跟老齐学Python之类的细节
- 利用C++实现从std::string类型到bool型的转换
- dos下用recover修复损坏的TXT文件
- 解决jquery1.9不支持browser对象的问题
- Linux X Window应用问答(上)
- 分析进入Win2000后留下的足迹
- 域名劫持---163.net被黑的分析
- jquery ready函数深入分析
- java 面试题闰年判断详解及实例
- Java 加密解密基础分类及模式归纳整理
- 手把手教你使用DedeCms V3的在线采集图文教程
- 在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
- 详解Android的登录那点事