http是无状态的,不会记得“上个请求***”,所以哪怕是同一个页面中的js、css、jpg也都要重复的提交Accept-Language、Accept-Encoding、Cookie等。
一般情况下,只有浏览器请求服务器端,服务器端才有给浏览器响应数据,服务器不会主动向浏览器推送数据,这样是安全考虑,也是提高服务器的性能考虑。
如果要服务器向浏览器推送数据,则需要使用ServerPush(ajax隔一段时间到服务器请求最新的数据)等额外的技术。 

客户机和服务器通信就好像打电话一般
•咱们用中文还是用英文?(约定通信的语法-http协议)
•准备好要说的话 (按照语法准备要传输给对方的数据)
•拨通电话(建立连接)
•通过电话机/电话线说话(通过互联网传输数据-Socket)
•注意:两个人都得拿对话筒(通信双方关注接收对方的数据)
 
•"200" : OK
•"302" : Found 重定向.
•"400" : Bad Request 错误请求,发出错误的不符合Http协议的请求
•"403" : Forbidden 禁止
•"404" : Not Found 未找到。演示访问一个不存在的页面看报文
•"500" : Internal Server Error 服务器内部错误。演示页面抛出异常。
•"503" : Service Unavailable。一般是访问人数过多。
 
200段是成功;
300段需要对请求做进一步的处理;
400段表示客户端请求错误;
500段是服务器的错误。
HTTP协议-简介
1:Web开发是和Http协议打交道的,必须了解Http协议。Http协议版本:Http/0.9、Http/1.0、Http/1.1,现在主流的是Http/1.1版本
 
2:Http协议分析工具:
•1、DebugBar,Http(S)标签的内容。免费的。只能分析当前浏览器中的内容。
•2、httpwatch,收费的,只能分析当前浏览器中的内容。推荐使用
•3、HttpAnalyzer,收费的,能分析计算机上所有的Http请求数据。
•4、WFetch_1.4,免费,小型分析工具
 
3:Http协议的几个概念:
•1.连接(Connection):浏览器和服务器之间传输数据的通道。 一般请求完毕就关闭,http不保持连接。
                              不保持连接会降低处理速度(因为建立连接速度很慢),保持连接的话就会降低服务器的处理的客户端请求数,而不保持连接服务器可以处理更多的请求。
•2.请求(Request):浏览器向服务器发送的“我要***”的消息,包含请求的类型、请求的数据、浏览器的信息(语言、浏览器版本等)。
•3.响应(Response):服务器对浏览器请求的返回的数据,包含是否成功、状态码等。
 
请求报文:
1:GET / HTTP/1.1表示向服务器用GET方式请求首页,使用HTTP/1.1协议
2:Accept-Encoding gzip, deflate表示浏览器支持gzip、deflate两种压缩算法
3:Accept-Language zh-cn 表示浏览器支持的语言,很多进入后自动就是中文界面的国际网站就是通过读取这个头的值实现的。
4:User-Agent为浏览器的版本信息。通过这个信息可以读取浏览器是IE还是FireFox、支持的插件、.Net版本等。
5:Cookie是浏览器向服务器发送和当前网站关联的Cookie,这样在服务器端也能读取浏览器端的Cookie了。
6:Connection Keep-Alive。一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了Connection:keep-alive,则TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
 
响应报文:
1:Server: Cassini/3.5.0.5 表示服务器的类型
2:Content-Type: 常用Content-Type:text/HTML、harset=utf-8、 image/GIF、image/JPEG、text/plain、text/javascript、application/x-excel 、application/octet-stream(二进制文件)
3:Content-Length: 19944表示响应报文体的字节长度,报文头只是描述,返回的具体数据(比如HTML文本、图片数据等)在两个回车之后的内容中。
服务器通过Content-Type告诉客户端响应的数据的类型,这样浏览器就根据返回数据的类型来进行不同的处理,如果是图片类型就显示,如果是文本类型就直接显示内容,如果用html类型就用浏览器显示内容,如果是下载类型就弹出下载工具等。
 
 

ASP.NET HTTP 协议的更多相关文章

  1. [ASP.NET] Http协议GET与POST

    引言 HTTP 协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来.但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状 ...

  2. TCP/UDP常见端口参考

    著名端口 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat ...

  3. TCP/IP 端口号大全

    常用端口: 20 ftp-data FTP 数据端口 21 ftp 文件传输协议(FTP)端口:有时被文件服务协议(FSP)使用 22 ssh 安全 Shell(SSH)服务 23  telnet T ...

  4. CCNA长语

    思科认证网络支持工程师(Cisco Certified Network Associate_CCNA) 专业英文词汇大全 10BaseT-----原始IEEE802.3标准的一部分,1OBaseT是1 ...

  5. C#使用SOAP调用Web Service

    程序代码 using System;using System.IO;using System.Net;using System.Text; namespace ConsoleApplication1{ ...

  6. linux 常用端口

    常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务.守护进程.和程序所使用的最常见的通信端口.该列表还可以在 /etc/services 文件中找到.要查看由互联网号码分派局(IANA) ...

  7. 网络-03-端口号-linux端口详解大全--著名端口

    端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举 ...

  8. TCP/UDP常见端口

    著名端口 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat ...

  9. TCP/IP 端口大全

    1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 ...

随机推荐

  1. Maven项目下update maven后Eclipse报错

    Maven项目下update maven后Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderL     严重: Error config ...

  2. OpenJuege 兔子与星空

    总时间限制:  1000ms 内存限制:  10000kB 描述 很久很久以前,森林里住着一群兔子.兔子们无聊的时候就喜欢研究星座.如图所示,天空中已经有了n颗星星,其中有些星星有边相连.兔子们希望删 ...

  3. MYSQL存储过程中 使用变量 做表名

    ); DECLARE temp2 int; set temp1=m_tableName; set temp2=m_maxCount; set @sqlStr=CONCAT('select * from ...

  4. Linux性能优化 第五章 性能工具:特定进程内存

    5.1 Linux内存子系统 在诊断内存性能问题的时候,也许有必要观察应用程序在内存子系统的不同层次上是怎样执行的.在顶层,操作系统决定如何利用交换内存和物理内存.它决定应用程序的哪一块地址空间将被放 ...

  5. Python NLTK——python与nltk配置

    按照<Python自然语言处理>中的步骤安装Python后nltk总是部署失败,出现如下提示: >>> import nltk Traceback (most recen ...

  6. three.js学习:初学three.js,从立方体开始

    目前three.js是浏览器展现3D效果的一个很强大的js工具,遗憾的是没有特别系统而全面的文档(threejs官方文档感觉有些缺漏,可以和WebGL中文网的threejs教程对比着看).好了,根据W ...

  7. Ubuntu下RabbitMQ安装

    由于RabbitMQ需要erlang语言的支持,在安装RabbitMQ之前需要安装erlang,执行命令: sudo apt-get install erlang-nox 安装RabbitMQ命令: ...

  8. linux文件基本权限-基本权限的修改

    基本权限的修改 当我们在linux或unix系统的terminal输入"ls -l"命令时,将输出文件的详细信息.第一列,如“drwxr-xr-x”就是文件的权限信息. yinti ...

  9. IDEA搭建Spring框架环境

      一.spring 框架概念 spring 是众多开源 java 项目中的一员,基于分层的 javaEE 应用一站式轻量 级开源框架,主要核心是 Ioc(控制反转/依赖注入) 与 Aop(面向切面) ...

  10. javafx自动补全

    public boolean showUpload2HomeDialog(final OperationInfo initDataInfo) { boolean result = false; try ...