网络模型
- 物理层
- 数据链路层:逻辑链路控制
LLC
、媒体接入控制MAC
- 网络层:
IP
协议、地址解析协议ARP
、逆地址解析协议RARP
、因特网控制报文协议ICMP
- 传输层:传输控制协议
TCP
、用户数据报协议UDP
- 应用层:文件传输协议
FTP
、远程登录协议TELNET
、超文本传输协议HTTP
、域名系统DNS
、简单邮件协议SMTP
、简单网络管理协议SNMP
HTTP协议
协议:是指计算机通信网络中两台计算机之间通信所必须共同遵守的规定或者规则。
HTTP协议:超文本传输协议(HTTP
)是一种通信协议,它允许将超文本标记语言(HTML
)文档从Web
服务器传送到客户端的浏览器。
特点:
- 简单快速
- 无连接
- 无状态
URI和URL的区别
URI
是
uniform resource identifier
,统一资源标识符,用来标识唯一的一个资源。
- 访问资源的命名机制
- 存放资源的主机名
- 资源本身的名称,由路径表示,着重强调于资源
URL
是
uniform resource locator
,统一资源定位器,它是一种具体的URI
,即URL
可以用来标识一个资源,而且还指明了如何定位这个资源。
- 协议
- 存有该资源的主机
IP
地址 - 主机资源的具体地址
TCP三次握手
![](https://img.haomeiwen.com/i3347923/303eee15555c7dce.png)
在TCP/IP
协议中,TCP
协议提供可靠的连接服务,采用三次握手建立一个连接。
- 第一次握手:建立连接时,客户端发送
SYN
包(syn=j
)到服务器,并进入到SYN_SEND
(发送)状态,等待服务器确认; - 第二次握手:服务器收到
SYN
包,必须确认客户的SYN(ack=j+1)
,同时自己也发送一个syn
包(syn=k)
,即SYN+ACK
包,此时服务器进入SYN_RECV
(准备)状态; - 第三次握手:客户端收到服务器的
SYN+ACK
包,向服务器发送确认包ACK(ack=k+1)
,此包发送完毕,客户端与服务器进入ESTABLISHED
(建立)状态,完成三次握手;
TCP四次挥手
![](https://img.haomeiwen.com/i3347923/480c13633964ccf5.png)
TCP
采用四次挥手来释放连接:
- 第一次挥手:
Client
发送一个FIN
,用来关闭Client
到Server
的数据传送,Client
进入到FIN_WAIT_1
状态; - 第二次挥手:
Server
收到FIN
后,发送一个ACK
给Client
,确认序号为收到序号+1(与SYN
相同,一个FIN
占用一个序号),Server
进入CLOSE_WAIT
状态; - 第三次挥手:
Server
发送一个FIN
,用来关闭Server
到Client
的数据传送,Server
进入LAST_ACK
状态; - 第四次挥手:
Client
收到FIN
后,Client
进入TIME_WAIT
状态,接着发送一个ACK
给Server
,确认序号为收到序号+1,Server
进入CLOSE
状态,完成四次挥手;
TCP和UDP的区别
-
TCP
传输控制协议:面向连接;使用全双工的可靠信道;提供可靠的服务,即无差错、不丢失、不重复且按序到达;拥塞控制、流量控制、超时重发、丢弃重复数据等等可靠性检测手段;面向字节流;每条TCP
连接只能是点到点的;用于传输可靠性要求高的数据 -
UDP
用户数据报协议:无连接;使用不可靠信道;尽最大努力交付,即不保证可靠交付;无拥塞控制等;面向报文;支持一对一、一对多、多对一和多对多的交互通信;用于传输可靠性要求不高的数据
HTTP1.1和HTTP1.0的区别
-
缓存处理,在
HTTP1.0
中主要使用header
里的If-Modified-Since
,Expires
来做为缓存判断的标准,HTTP1.1
则引入了更多的缓存控制策略例如Entity tag
,If-Unmodified-Since
,If-Match
,If-None-Match
等更多可供选择的缓存头来控制缓存策略。 -
带宽优化及网络连接的使用,
HTTP1.0
中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1
则在请求头引入了range
头域,它允许只请求资源的某个部分,即返回码是206(Partial Content)
,这样就方便了开发者自由的选择以便于充分利用带宽和连接。 -
错误通知的管理,在
HTTP1.1
中新增了24个错误状态响应码,如409(Conflict
)表示请求的资源与资源的当前状态发生冲突;410(Gone
)表示服务器上的某个资源被永久性的删除。 -
Host
头处理,在HTTP1.0
中认为每台服务器都绑定一个唯一的IP
地址,因此,请求消息中的URL
并没有传递主机名(hostname
)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers
),并且它们共享一个IP
地址。HTTP1.1
的请求消息和响应消息都应支持Host
头域,且请求消息中如果没有Host
头域会报告一个错误(400Bad Request
)。 -
长连接,
HTTP 1.1
支持长连接(PersistentConnection
)和请求的流水线(Pipelining
)处理,在一个TCP
连接上可以传送多个HTTP
请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1
中默认开启Connection
:keep-alive
,一定程度上弥补了HTTP1.0
每次请求都要创建连接的缺点。
Cookie和Session的区别
Cookie
Cookie
技术是客户端的解决方案,Cookie
就是由服务器发送给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。
Session
Session
是另一种记录客户状态的机制,不同的是Cookie
保存在客户端浏览器中,而Session
保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端的信息以某种形式记录在服务器上。
区别:
- 存放位置不同
- 安全性(隐私策略)不同
- 有效期上不同
- 对服务器
HTTPS
HTTPS
并不是一个单独的协议,而是对工作在常规HTTP
协议中加入了SSL/TLS
加密协议,通过在TCP
与HTTP
之间加入TLS
来加密数据。
HTTPS
实际就是在TCP
层和HTTP
层之间加入了SSL/TLS
来为上层的安全保驾护航,主要用到对称加密、非对称加密,证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
HTTP、TCP、IP的区别
-
TCP
是传输层协议,定义数据传输和连接方式的规范。通过三次握手建立连接、四次挥手释放连接。 -
HTTP
是应用层协议,定义的是传输数据的内容的规范。HTTP
的连接使用"请求-响应"方式。基于TCP
协议传输,默认端口号是80。 -
IP
是网络层,定义了数据传输时的基本单元(数据包)和格式,IP
协议还定义了数据包的传递方式和路由选择。
HTTP响应状态码
- 1xx:表示服务器已接收了客户端请求,客户端可继续发送请求
- 2xx:表示服务器已成功接收到请求并进行处理
- 200
OK
:表示客户端请求成功
- 200
- 3xx:表示服务器要求客户端重定向
- 4xx:表示客户端的请求有非法内容
- 400
Bad Request
:表示客户端请求有语法错误,不能被服务器所理解 - 401
Unauthonzed
:表示请求未经授权,该状态代码必须与WWW-Authenticate
报头域一起使用 - 403
Forbidden
:表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因 - 404
Not Found
:请求的资源不存在,例如,输入了错误的URL
- 400
- 5xx:表示服务器未能正常处理客户端的请求而出现意外错误
- 500
Internal Server Error
:表示服务器发生不可预期的错误,导致无法完成客户端的请求 - 503
Service Unavailable
:表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常
- 500
网友评论