0%

HTTP教程

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是Internet上应用最广泛的一种网络传输协议,所有的WWW文件都必须遵循这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等)。

1.HTTP简介

HTTP协议是Hyter Text Transfer Protocol(超文本传输协议)的缩写,用于从万维网(WWW.World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据。HTTP协议工作与客户端-服务端架构之上。浏览器作为HTTP客户端通过URL向HTTP服务端(web浏览器)发送所有请求

  • Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

  • Web服务器根据接收到的请求后,向客户端发送响应信息。

  • HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2.HTTP消息结构:

  • HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

  • 一个HTTP”客户端”是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

  • 一个HTTP”服务器”同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。

  • HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

  • 一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

服务器响应消息

  • HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文

3.HTTP请求方法

  • 根据HTTP标准,HTTP请求可以使用多种请求方法:
    • HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
    • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

4.HTTP响应头信息:

  • HTTP请求头提供了关于请求、响应或者其他发送实体的信息:

5.HTTP状态码:

  • 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

  • HTTP状态码的英文为HTTP Status Code。

  • 下面是常见的HTTP状态码:

    • 200 - 请求成功

    • 301 - 资源(网页等)被永久转移到其它URL

    • 404 - 请求的资源(网页等)不存在

    • 500 - 内部服务器错误

HTTP状态码分类:

  • HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字有分类的作用。HTTP状态码共分为5种类型:

6.HTTP content-type:

  • Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。

  • 1.网络模型:

  • ①网络—》进程线程—》web服务器

  • ②mongo–》regex—》项目

  • ③互联网—》网络传输数据

  • ④ISo(国际标转化组织)—》网络体系结果标准OSI模型

    • OSI模型——七层模型:
      • 应用层:提供用户服务,具体内容和由特定程序规定
      • 表示层:提供数据压缩、解压和加密
      • 会话层:建立程序级连接,决定什么样的传输服务(软件开发人员主要是前三层)
      • 传输层:提供合适的通信服务,流量控制(主要研究:面向连接和面向不连接)
      • 网络层:路由选择,网络互联,分组传输
      • 链路层:提供链路交换,具体消息的发送
      • 物理层:物理硬件,接口
    • OSI模型优点:
      • 将功能分开,大大降低了数据传输过程中的耦合度,每一部分完成自己的功能,开发更加清晰(编程基本原则:高内聚【单个模块功能尽量单一,不混杂】,低耦合【模块之间尽量减小交互的影响】)
        • 实际使用中:使用四层(_应用层(应用层、表示层、会话层集于一体_)、传输层、网络层、物理电路层)、五层模型(TCP/IP模型)
  • 要求:能够顺利说出七层模型、知道如何对应四层、五层模型,简单理解每一层的功能,能理解数据传输过程

  • 2.什么是协议:

    • 计算机协议:网络通信中双方必须遵守的规定,包括建立什么连接,如何识别,消息结构等
      • 应用层(TFTP协议,文件服务器,HTTP协议,SMTP(邮件窗户协议),DNS协议)
      • 传输层(TCP,UDP)提供不同的传输服务
      • 网络层:IP协议(寻址)
    • 统称为TCP/IP协议簇
    • 网络概念:
      • 主机:某一台计算机的名称(localhost表示本机,IP地址)
      • 获取计算机:打开虚拟机—ipython3-import socket—socket.gethostname()获取主机名,socket.gethostbyname(‘localhost’)通过主机名解析IP—socket.gethostbyname(‘chaochao’)—
      • Ip:IPV4:192.168.43.207(点分十进制,三个点分为四个部分,每一部分都是0-255的范围),公网的IP不重复,但是子网可能相同
      • IPV6:扩大IP的范围,ip地址更多
      • 重点IP:127.0.0.1代表本地的测试IP,0.0.0.0:局域网可用IP,192.168.1.0表示网段(同一个网段表示同一个主机),192.168.1.1 表示网关,192.168.1.255广播地址(2到254自己设置)
      • 几个主要命令:ifconfig ,ping www.baidu.com有延迟代表ping通(检测连通性)
      • 进入ipython3—import socket—socket.gethostbyaddr(“www.baidu.com")-socket.gethostbyaddr('172.168.43.22')主机名,别名,IP
      • socket.inet_aton(“192.168.43.207”)-转化成二进制形式-转换回来socket.inet_ntoa(“上面的结果”)-socket.inet_pton(socket.AF_INEF6,’’)可以转化成IPV6的形式-ntop用法同上,只是第一个参数用socket.AF_INET表示IPV4
      • 端口号:是地址的组成部分,在一个系统中区分应用层程序(1–65535,1–255之间是众所周知的端口:256—1023:系统端口,推荐使用10000–50000之间的端口)
      • 测试端口:socket.getservbyname(‘mysql’)——socket.getservby(‘ssh’)测试获取应用的端口号
      • 子网掩码:和ip配合过滤网段,DNS:域名解析
      • 字节序:大端序(高子杰存在地地址),小端序:低字节存在低地址,网络字节序:将子继续发送方式统一

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment