网络编程基础--HTTP
这些都是基础东西,掌握的比较琐碎,时不时的总结一下,体会和理解更深一点
一,HTTP协议
1,首先,HTTP协议是应用层的一个协议,其目的在于解决如何包装数据。
二,HTTP的工作流程
一次完整的HTTP操作称为一个事务,具体过程可以分为四步:
1,客户端与服务器建立连接,当点击某个链接的时候开始,HTTP就开始工作。
2,建立连接之后,客户端发送一个请求给服务器,请求方式格式为:URL、协议版本号、接着是MIME信息包括请求修饰符、客户端的信息,和其他信息。
3,当服务器收到请求之后,要给与响应信息,相应信息的格式是一个状态行,包括信息的协议版本号,一个成功或者错误的代码,后面是MIME信息包括服务区信息、实体信息、和其他内容。
4,客户端收到服务器返回的信息通过浏览器或者一些应用显示在用户屏幕上,然后客户端与服务器断开连接。
以上就是一次HTTP事务的完整流程,有连接有断开,这就是所谓的“短连接”。
*Request
一个请求(Request)包含的的详细信息:包含请求头和请求体;
请求头:包含对客户端的环境描述,客户端请求信息
GET: //包含请求方法、请求资源路径、HTTP协议版本
Host:192.168.0.164:9090 //服务器主机地址
User-Agent:Mozilla/5.0 //客户端类型
Accept-language:zh-cn //客户端语言环境
Accept-Encoding:gzip //客户端支持的数据压缩格式
请求体:请求时需要的参数信息,post请求才会有
*Response
一个响应(Response)包含的的详细信息:响应头和响应体
响应头:包含对服务器的描述,以及返回数据的描述
HTTP/1.1 200 OK // 包含HTTP协议版本、状态码、状态英文名称
Server:Apache-Coyote/1.1 //服务器类型
Content-Type:image/jpeg//返回数据类型
Content-Length:56892// 返回数据长度
Date:2016 13:32:29 GMT//响应的时间
响应体:服务区返回给客户端的具体数据、响应状态码
上面已经说过HTTP是一个应用层协议,常用的HTTP都是基于TCP的协议。
TCP是一个传输层的协议,一个端到端的面向连接的协议,简单理解为就是两个进程之间的通信协议。一个HTTP在传输开始之前,需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”,断开时候需要“四次挥手”。上一片中已经讲过,这里不再赘述。
三,HTTP协议特点
协议本身永远都是客户端发起请求,然后服务器做出响应。所以这样就限制了无法实现在客户端没有发送请求的情况下,服务器主动发送消息到客户端这样操作。
四,URL
URL是Uniform Resource Locator的简称,统一资源定位符。(高大上有木有_)
URL的基本格式:http://192.168.2.3:8080
分别对应: 协议:主机地址/路径
协议:不同的协议,代表着不同的资源查找方式、资源传输方式
主机地址:存放资源的主机(服务器)的IP地址(域名)
路径:资源在主机(服务器)中的具体位置
五,2. URL中常见协议
- HTTP
超文本传输协议,访问的是远程的网络资源,格式是http://
HTTP协议作用:HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
- file
访问的是本地计算机上的资源,格式是file://(不用加主机地址) - mailto
访问的是电子邮件地址,格式是mailto: - ftp
访问的是共享主机的文件资源,格式是ftp://
六, HTTP请求的方法
在HTTP/1.1协议中,定义了8种发送http请求的方法
GET、POST、PUT、DELETE、(比较常用的几种)
OPTIONS、HEAD、TRACE、CONNECT、PATCH(不常用的几种)
根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式
PUT :增
DELETE :删
POST:改
GET:查
最常用的是GET和POST(实际上GET和POST都能办到增删改查)
七,HTTP与HTTPS
Http的缺点:
- 数据是没有加密传输的,可能遭遇窃听
- 不验证通信双方的身份,可能遭遇伪装
- 无法验证报文的完整性,可能遭遇篡改
Https = Http + 加密 + 验证 + 完成;
- TLS/SSL协议:通信双方商议好一种协议、一种规则,客户端服务端处理方式是一样的就ok,这个协议中包含加密、证书;
- 加密:对称加密(AES、DES) + 非对称加密(RSA、DSA);
MD5是不可逆的; - 证书:要钱(便宜),建立连接的速度会变慢,TCP是3次握手,https添加证书后8次握手
- Http端口:80,Https端口:443;