美文网首页
Http协议与TCP协议

Http协议与TCP协议

作者: ElvenShi | 来源:发表于2016-11-14 17:55 被阅读45次
Paste_Image.png

Http协议

HTTP 超文本传输协议,是一个基于请求与响应模式的、无状态的、应用层协议。

Http报文介绍

Http请求报文�由请求行(request line)、请求头部(header)和请求数据组成,下图给出了请求报文的一般格式。

Paste_Image.png
  • 1、请求行
    由3部分组成,分别为:请求方法URL以及协议版本,之间由空格分隔
    请求方法包括GETHEADPUTPOSTTRACEOPTIONS、DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的
    协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1
    HTTP1.0定义了三种请求方法: GET, POSTHEAD方法。
    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACECONNECT 方法。
Paste_Image.png
  • 2,请求头部
    请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔

常见请求头:


Paste_Image.png

请求头部的最后会有一个空行,表示请求头部结束,对于请求报文的组成有另一种说法:请求报文由请求行请求头空行请求体四个部分组成。

  • 3、请求正文
    可选部分,比如GET请求就没有请求正文
    GET请求示例:
Paste_Image.png

POST请求示例:

Paste_Image.png

Http响应报文
Http响应报文由状态行、响应头部、响应正文3部分组成

Paste_Image.png
  • 1、状态行
    由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔
    状态代码为3位数字,200299的状态码表示成功,300399的状态码指资源重定向,400499的状态码指客户端请求出错,500599的状态码指服务端出错(HTTP/1.1向协议中引入了信息性状态码,范围100~199)
    状态码可参考HTTP状态码

  • 响应头部
    常见响应头部:

响应头 �说明
Allow 服务器支持哪些请求方法(如GET、POST等)
Content-Encoding 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader("Accept-Encoding"))检查浏览器是否支持gzip,为支持gzip的浏览器返回经gzip压缩的HTML页面,为其他浏览器返回普通页面。
Content-Length 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入 ByteArrayOutputStream,完成后查看其大小,然后把该值放入Content-Length头,最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容。
Content-Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。
Server 服务器应用程序软件的名称和版本
Content-Charset 响应正文使用的编码
Content-Language 响应正文使用的语言

响应示例:

Paste_Image.png

Content-Type
Content-Type,http内容类型,一般是指网页中存在Content-Type。用于定义网络文件的类型和网页编码,决定文件接收方以什么样的形式,什么编码读取这个文件。
Content-Type默认类型是“text/html”。
Content-type类型有很多种,具体可参考HTTP content-type 对照表

URL
URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源

  • URI、URL和URN之间的区别
    URI全名为Uniform Resource Indentifier(统一资源标识),用来唯一的标识一个资源,是一个通用的概。URI由两个主要的子集URL和URN组成。
    URL全名为Uniform Resource Locator(统一资源定位),通过描述资源的位置来标识资源
    URN全名为Uniform Resource Name(统一资源命名),通过资源的名字来标识资源,与其所处的位置无关,这样即使资源的位置发生变动,其URN也不会变化

HTTP规范将更通用的概念URI作为其资源标识符,但是实际上,HTTP应用程序处理的只是URI的URL子集

-关于BIO和NIO的理解

相关文章

  • 2018-12-15\网络与IP&node js服务器

    HTTP与TCP 协议 HTTP 协议的底层其实是由 TCP 协议和 IP 协议(简称 TCP/IP)构建的。关于...

  • HTTP常见概念整理

    基础TCP/IPTCP协议IP协议DNS协议URI与URL HTTP协议HTTP报文HTTP方法HTTP状态码 名...

  • TCP/IP协议

    TCP/IP协议三次握手与四次握手流程解析 HTTP协议—— 简单认识TCP/IP协议 TCP/IP协议入门(一)...

  • 前端系统班 - 07. Node.js Server

    网络与 IP TCP 与 UDP HTTP 协议的底层是由 TCP/IP 协议构建的。 TCP(Transmiss...

  • HTTP协议与TCP协议

    1、HTTP协议与TCP协议的关系 TCP是传输层协议,以IP协议为基础,负责数据传输;HTTP是应用层协议,以T...

  • node.js入门

    网络与IP HTTP协议的底层是由TCP和IP协议(TCP/IP)构建的 什么是TCP TCP传输控制协议(Tra...

  • Http 和TCP

    1 http -->应用层协议tcp --->传输层协议 --ip --网络层协议http基于tcp协议; 2 ...

  • 有关HTTP 协议(IP和端口)

    网络与IP HTTP 协议的底层其实是由 TCP 协议和 IP 协议(简称 TCP/IP)构建的 TCP 传输控制...

  • 计算机网络-Http/Https基础

    一、前言 主要包括:1、http基础:TCP/IP,TCP协议,IP协议,DNS协议,URI与URL; 2、htt...

  • RPC接口与REST对比

    传输协议 RPC,可以基于TCP协议,也可以基于HTTP协议 REST,基于HTTP协议(在TCP协议之上进行封装...

网友评论

      本文标题:Http协议与TCP协议

      本文链接:https://www.haomeiwen.com/subject/qbihpttx.html