HTTP、Tcp、webscoket总结

网络编程大家都不陌生,但平时我们只是知道怎么用,对个中的网络协议倒是没花多少工夫去学习,所以,我们今天特意来对

网络协议相关的知识加以总结记录。

1)网络七层协议,从上到下依次为: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层

2)Http协议对应于应用层,TCP协议对应于传输层,Http协议是建立在TCP协议基础之上的

3)属于应用层的常用协议:Http(超文本传输协议)、FTP(文件传输协议)、SMTP(电子邮件传输协议)、Telnet(网络远

程访问协议)、NNTP(网络新闻传输协议)等

4)属于传输层的常用协议:TCP(传输控制协议)、UDP(用户数据报协议)等

5)Http连接是一种无状态的短连接

6)TCP连接是一种有状态的长连接

7)WebSocket协议:一种在单个TCP连接上进行全双工通信的协议,本质上属于应用层协议,是一种持久化的协议(长连接)

8)综合5、6、7,很容易明白Http和WebSocket都基于TCP协议,但Http在每次请求结束后就把TCP连接关了,所以属于短连

接;而WebSocket中我们可以用代码控制连接的打开和关闭,只要我们不关闭,连接一直有效存在,所以属于长连接。

9)在Http1.0协议中,我们发送一个Request,建立一个TCP连接,获取一个Response,Http请求结束,关闭TCP连接,这样

明显是低效的,因为每次都需要重新建立一个TCP连接;

在Http1.1协议开始,默认都开启了Keep-Alive,用于保持连接特性,也就是说我们可以用同一个TCP连接来发送多个Request,

接收多个Response,当然连接Keep-Alive不会永久保持连接,它有一个保持时间,时间到了依然会关闭TCP连接,所以我们依

然可以把它看作是“每次连接完成后就会关闭”。

10)在Http中,一个Request只能对应一个Response,而且Response是被动返回的,不能主动发起(单向通信协议);

而WebSocket在建立连接之后,客户端和服务器都可以主动向对方发送或接受数据(双向通信协议)

11)WebSocket协议建立的前提需要借助HTTP协议来完成一部分握手,在握手阶段与Http是相同的,建立连接之后,持久连接

的双向通信就与HTTP协议无关了。

12)正因为Http连接属于无状态连接(人生若只如初见),故而两种用于保持Http连接状态的技术就应运而生了:

  • 在客户端存储信息使用Cookie

  • 在服务端存储信息使用Session

13)Http协议默认端口为80,一般计算机上不会限制这个端口,所以Http协议能够顺利通过所有机器上的防火墙。

14) Http请求由三部分组成,分别是:请求行、消息报头、请求正文

Http响应也是由三个部分组成,分别是:状态行、消息报头、响应正文

15)Http请求方法(所有方法全为大写)有多种,各个方法的解释如下:

GET 请求获取Request-URI所标识的资源

POST 在Request-URI所标识的资源后附加新的数据

HEAD 请求获取由Request-URI所标识的资源的响应消息报头

PUT 请求服务器存储一个资源,并用Request-URI作为其标识

DELETE 请求服务器删除Request-URI所标识的资源

TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT 保留将来使用

OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

16)Http响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息–表示请求已接收,继续处理

2xx:成功–表示请求已被成功接收、理解、接受

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现

5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码、状态描述、说明:

200 OK //客户端请求成功

400 Bad Request //客户端请求有语法错误,不能被服务器所理解

401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

403 Forbidden //服务器收到请求,但是拒绝提供服务

404 Not Found //请求资源不存在,eg:输入了错误的URL

500 Internal Server Error //服务器发生不可预期的错误

503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

17)从网上找了两张图来说明一下Http的请求报文和响应报文(侵删):

Http请求报文
http请求报文

Http响应报文
http响应报文

18)说一下TCP和UDP这两种传输层协议的区别:

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时

间,系统资源)。

UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。

转载链接:https://www.jianshu.com/p/6b2b9897267b

猜你喜欢

转载自blog.csdn.net/qq_41538097/article/details/107757832
今日推荐