网络分层
- 应用层,常见协议:HTTP、FTP
- 传输层,常见协议:TCP.UDP
- 网络层,常见协议:IP
- 链路层
- 物理层
协议
协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。
简单来说,协议就是 通信双方/多方都遵从共同的一个规范。
协议的一些特点:
- 协议中的每个人都必须了解协议,并且预先知道所要完成的所有的步骤。
- 协议中的每个人都必须同意并遵循它。
- 协议必须是清楚的,每一步必须明确定义,并且不会引起误解。
HTTP协议
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
HTTP协议永远都是客户端发起请求,服务器回送响应。
HTTP协议工作流程
- 客户端和服务器之间建立一条连接
- 连接建立后,客户端向服务器发起一个请求(request)
- 服务器收到一个请求后,给客户端一个响应(应答,response)
- 客户端收到响应后做进一步处理
HTTP是基于传输层的TCP协议,而TCP是一个端到端的面向连接的协议。所谓的端到端可以理解为进程到进程之间的通信。所以HTTP在开始传输之前,首先需要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。
TCP三次握手
- client向server发送TCP SYN报文段(指定初始序号,无数据)
- server收到SYN报文段,用SYN ACK报文段回复(server为该链接分配缓冲区;指定server初始序号)
- client接收到SYN ACK,用ACK报文段回复,可能包含数据
TCP四次挥手
- client发送一个FIN,用来关闭client到server的数据传送,client进入FIN_WAIT_1状态
- server收到FIN后发送一个ACK给client,server进入close_wait状态
- server发送一个FIN,用来关闭server到client的数据传送,server进入LAST_ACK状态
- client收到FIN后,进入TIME_WAIT状态,并发送一个ACK给server,server进入close状态。
HTTP主要特点
- 主持C/S(客户端/服务器)模式。
- 简单快速:客户端向服务器请求服务时,只需要传送请求方法和路径。请求方法常用的有GET、HEAD、POST,每种方法规定了客户端与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP容许传输任意类型的数据对象。正在传输的类型由 Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端的应到后,立即断开连接,这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议,无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则必须重传,这样可能导致每次连接传送的数据量增大;而另一方面,在服务器不需要先前信息时·他的应答速度就较快。
常见的HTTP请求方法
HTTP方法 |
作用描述 |
GET |
客户端请求指定资源信息,服务器返回指定资源 |
HEAD |
只请求响应报文中的HTTP首部 |
POST |
将客户端的数据提交到服务器,例:注册表单 |
PUT |
从客户端向服务器传送的数据取代指定的文档内容 |
DELETE |
请求服务器删除Request-URI所标识的资源 |
MOVE |
请求服务器将制定的页面移至另一个网络地址 |