1.什么是TCP/IP协议
TCP/IP是一套用于网络通信的协议系统,它分为四层,结构如下:
本帖讲的HTTP和HTTPS是TCP/IP协议的应用层,TCP和UDP是在协议的传输层
2.TCP和UDP
TCP和UDP都位于TCP/IP协议的传输层
TCP又称传输控制协议,是面向连接,保证数据可靠运输一种协议。提供完善的错误控制和检测,传输双方两个socket得到的数据会是顺序且无差错的
UDP又称用户数据报协议,是一个无连接,只提供基本的错误检测的协议,它无法保证数据的正确性,接收方不一定能接受到全部数据
我们可以简单的把TCP理解为可靠的数据传输协议,但效率没UDP快。UDP是不可靠的数据传输协议,但效率比TCP高
比较
TCP:
- 保证可靠传输的,能确保接收方正确完全获取发送方的所有数据
- 面向连接的,发送方和接收方需要建立连接通道
- 数据大小没有限制
UDP:
- 不可靠传输的,接收方不一定能完全获取发送方的所有数据
- 无连接的,发送方和接收方不需要建立连接
- 数据大小有限制,每个数据报必须在64KB内
3.HTTP和HTTPS
HTTP协议和HTTPS协议位于TCP/IP协议的应用层
HTTP协议
HTTP协议(超文本传输协议)是以客户端发起请求,服务器返回响应的形式,是一种无状态的协议。什么叫无状态的协议?有状态的协议,在下次传输的时候能够记住这次传输的信息,也就是信息具有较为持久的特点。而HTTP协议是以一次请求一次响应这种形式存在,一次之后,结束这次传输后,断开连接,将不会保存关于这次传输的信息,所以是无状态的协议
特点
支持B/S模式,有基本认证和安全认证
工作流程
1.客户端和服务器建立连接
2.客户端发送请求给服务器
3.服务器接到请求后,给出响应信息
4.客户端接收服务器返回的信息后通过浏览器显示在用户的屏幕上,然后断开连接
三次握手
HTTP在TCP/IP层的应用层,基于传输层的TCP协议。
在HTTP开始传输前,要建立TCP连接,TCP连接的过程需要经过“三次握手”
第一次握手,建立连接,客户端发送同步序列编号(syn)包给服务器,然后等待服务器确认
第二次握手,服务器接受到syn包,必须确认客户的SYN,发送自己的SYN包(SYN+ACK)给客户端
第三次握手,客户端收到服务器的SYN+ACK包后,项服务器发送确认包(ACK),此包发送完毕,客户端和服务器进入连接成功状态,完成三次握手。
头域
什么是头域?可以简单理解为双方进行通信的一个附言,附言里包括这次连接双方的一些信息
主要头域有请求信息和响应信息
请求信息
格式如下:
请求行—–“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1 请求行里有请求方法,客户端发起请求所在URI,协议的版本
请求头(Request Header) 请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等
- 空行
请求正文请求正文中可以包含客户提交的查询字符串信息:
所以请求信息 头域 里由三部分组成:
请求行,请求头,请求正文
响应信息
格式如下:
状态行 :状态行里有协议版本,状态码,状态码描述。如HTTP/1.1 200 OK
响应头(Request Header): 和请求头类似。许多有关的服务器环境和响应正文的有用信息。例如,响应正文类型(Content-Type),响应正文长度(Content-Length)
- 空行
响应正文 :响应正文中可以包含服务器响应的信息
所以响应信息 头域 里由三部分组成:
状态行,响应头,响应正文
HTTPS协议–安全超文本传输协议
HTTP协议通信是不加密(明文)的,内容可能会被得知和篡改,不能确认通信方的身份
而HTTPS是HTTP+SSL/TLS协议,在HTTP基础上,披上SSL外皮,保证通信的安全
SSL是什么?
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议
HTTPS=HTTP+加密+证书(身份)验证+完整性校验
HTTPS协议的通信需要对通信方进行证书验证以保证安全性
HTTPS协议和HTTP协议的不同
- HTTPS是加密传输协议,HTTP是明文传输协议
- HTTPS需要用到SSL证书,HTTP不用
- HTTPS更安全
- HTTPS标准端口443,HTTP标准端口80
- HTTPS基于传输层,HTTP基于应用层;