tcp/ip是一个协议组,包含很多协议
TCP/IP五层模型
- 应用层
- 传输层
- 网络层
- 链路层
- 物理层
TCP和UDP
TCP/UDP传输层的协议,一般来说HTTP、HTTPS、FTP、TELNET、SMTP(简单邮件传输协议)协议基于可靠的TCP协议。TFTP、DNS、DHCP、TFTP、SNMP(简单网络管理协议)、RIP基于不可靠的UDP协议
TCP协议
-
三次握手(建立连接)
-
四次挥手(断开连接)
-
为什么需要第三次握手
主要是为了防止已经失效的连接请求突然又传到服务端,从而错误建立连接
-
TCP是基于连接的(可靠)
-
包头最短长度为20字节
UDP
- 面向无连接
- 可能丢包,不保证顺序
- 如何保证UDP顺序
在报文中加入序号,服务端按顺序排序
HTTP超文本传输协议
请求消息Request
POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=Wiley
- 第一部分:请求行,第一行明了是post请求,以及http1.1版本。
- 第二部分:请求头部,第二行至第六行。
请求头可以添加自定义的key-value,如platform:ANDROID/platform:IOS
- 第三部分:空行,第七行的空行。
- 第四部分:请求数据,第八行。
响应消息Response
HTTP/1.1 200 OK
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Fri, 11 Jan 2019 08:53:45 GMT
Expires: Fri, 11 Jan 2019 08:53:45 GMT
Server: BWS/1.0
Tracecode: 32254114610536530698011116
Vary: Accept-Encoding
Content-Length: 91
Response的headers比Request是要多一个状态码的,用于标识本次请求的响应状态
响应码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
例如比较常见的200/404/502
http的请求方法
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
方法名 | 说明 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 允许客户端查看服务器的性能。 |
OPTIONS | 请求指定的页面信息,并返回实体主体 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
RESTful api
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计.需要主要的是RESTful是一种约定或者说规范,但不是一种标准;我个人是强烈推荐RESTful接口的,曾经还因为后台接口不规范跟开发吵了一架哈哈
RESTful使用比较多的http方法是
- GET 用于查询
- POST 用于新建或更新(全量)
- PUT 用于更新
网友评论