七层模型
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
七层模型对应的一些协议
四层模型
HTTP报文传输原理:
发送端从应用层往下走,接收端从链路层往上走。从客户端到服务器的数据,每一帧数据的传输的顺序都为:
应用层->运输层->网络层->链路层->链路层->网络层->运输层->应用层
TCP数据帧格式
TCP三次握手和四次挥手
TCP/IP连接的11种状态
1)LISTEN:表示服务器端的某个ServerSocket监听连接处于监听状态,可以接受客户端的连接
2)SYN_SENT 这个状态与SYN_RCVD 状态相呼应
3)SYN_RCVD :表示服务端ServerSocket接收到了来自客户端连接的SYN报文
4)ESTABLISHED:表示TCP连接已经成功建立
5)FIN_WAIT_1:
6)FIN_WAIT_2:
7)TIME_WAIT
8) CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。
9)CLOSE_WAIT :表示正在等待关闭。
10) LAST_ACK :
11) CLOSED:
常用的查看指令
netstat -ant
HTTP协议
HTTP超文本传输协议,是一个基于请求与响应的、无状态的应用层的协议,是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。
在传输数据时,应有程序之间可以只使用TCP/IP(传输层)协议,但是那样的话,如果没有应用层,应有程序便无法识别数据内容
特点:支持客户端/服务器模式、
简单快速:客户向服务器请求服务时,只需传送请求方法和路径、
灵活:HTTP允许传输任意类型的数据对象,数据的类型由Content-Type加以标记
无连接:
无状态:
HTTP请求组成:
请求行:
Method Request-URI HTTP-Version CRLF,请求行包含请求方法、URL地址,协议名称和版本号。
请求头
(1)Accept:客户端可接受的MIME类型。
(2)Accept-Charset:客户端可接受的字符集。
(3)Accept-Encoding:客户端能够进行解码的数据编码方式,比如gzip
(4)Accept-Language:客户端所希望的语言种类
(5)Authorization:用于设置用户身份信息
(6)Content-Length:表示请求消息正文的长度。
(7)Host:客户端通过这个头告诉服务器,想访问的主机名
(8)If-Modified-Since:客户端通过这个头告诉服务器,资源的缓存时间。
(9)Referer:客户端通过这个头部字段告诉服务器,它是从哪个资源来访问服务器的(防盗链)。
(10)User-Agent:User-Agent头域的内容包含发出请求的用户信息
(11)Cookie:客户端通过这个头可以向服务器带数据,这是最重要的请求头信息
(12)Pragma:值为“no-cache”表示服务器必须返回一个刷新后的文档
(13)From:值为请求发送者的email地址,由一些特殊的Web客户程序使用
(14)Connection:请求完成后,是断开连接还是继续保持连接。如果值为“Keep-Alive”
(15)Range:Range头部字段用于请求URL资源的部分内容,单位是 byte(字节),并且从0开始。
(16)UA-Pixels,UA-Color,UA-OS,UA-CPU
请求体:
关于HTTP的请求体,若方法字段是GET,则请求体为空表示没有请求体数据;
若请求方法字段是POST,则通常来说此处放置的就是要提交的数据。
HTTP响应组成:
响应行:HTTP响应行一般由协议版本、状态码及其描述组成,比如“HTTP/1.1 200 OK”
状态码:
响应头:
1)Allow:服务器支持哪些请求方法(如GET、POST等)
2)Content-Encoding:文档的编码(Encode)类型,如gzip压缩格式
3)Content-Length:表示内容长度
4) Content- Type:表示后面的文档属于什么MIME类型
5) Date:当前的GMT时间,例如“Date:Mon,31Dec200104:25:57GMT”
6) Expires:告诉客户端把回送的资源缓存多长时间,-1或0则是不缓存
7) Last-Modified:文档的最后改动时间
8) Location:这个头配合302状态码使用,用于重定向接收者到一个新URI地址
9) Refresh:告诉客户端隔多久刷新一次,以秒计
10) Server:服务器通过这个头告诉客户端服务器的类型
11) Set-Cookie:设置和页面关联的Cookie
12) Transfer-Encoding:告诉客户端数据的传送格式
13)WWW-Authenticate:告诉客户端应该在Authorization请求头中提供什么类型的授权信息?
响应体:
响应体就是响应的消息体,可以是文本内容或者二进制内容。比如JSON、HTML等都属于纯文本内容
GET和POST区别
1. 二者所能传输数据的大小不同
2.二者传输数据的安全性不同
3.二者的请求数据的放置位置不同
HTTP协议 1.0 、1.1、2.0,目前主流是1.1
什么RESTFUL的API,把URL唯一标识 Delete Put Get Post
HTTP长连接和HTTP短连接,指的是传输层的TCP连接是否被多次使用
HTTP“短连接”通信,会出现两个问题:1.性能问题 2.端口问题会被占满
HTTP长连接的特点是:性能高,解决了端口问题,但是需要连接池支持