HTTP协议
1. HTTP(HyperText Transfer Protocol):超文本传输协议
2. TCP和UDP
重点:
TCP:面向连接的可靠的传输协议
UDP:无连接的,不可靠的传输协议
TCP类似座机打电话,先建立连接再打电话,先说的先到。UDP类似写信,不需要建立连接,发送的对面不一定收到,发送的前后顺序并一定是客户收到的顺序。
UDP比TCP快?
因为TCP需要 发射 确认 这样一个循环过程
一定要说UDP比TCP快的地方无非就是UDP没有流控,没有握手,没有成功确认,一个数据包发过去就不管,从这个角度上说TCP是开销大一点。但UDP的“快”带来的问题是它不可靠,的确有些场景快就足够了,比如流媒体,偶尔丢失错乱几个包不是大问题,但更多的情况下,数据的正确性是一个必选项,此时UDP就不一定适用了。
但有个场景你是绝对需要UDP的,那就是广播,TCP这种点对点有连接的协议,天生就没法广播,你只能建立一大堆连接然后朝每个对端把数据分别发送一遍。
3. 既然有了保证可靠传输的TCP协议,为什么还要不可靠传输的UDP协议呢
(1) 可靠是需要付出代价的,TCP效率不如UDP高。
(2) 很多应用并不需要保证严格的传输可靠性,比如视频会议系统,丢失一两帧肉眼根本分辨不出来。——这是主要原因
4. HTTP默认端口号80 http://www.sohu.com:80
5. 数据发送前先要封装,封装就是在数据前面加上特定的协议头部。
6. HTTP是一个基于请求/响应模式的,无状态的协议。无状态就是它根本不记得“上次访问的人是不是这次访问的人”。
7. HTTP1.1是持续连接方式,浏览器建立连接后,发送请求得到回应,再次发送请求再次得回应。之前1.0版本是一次请求后连接就关闭了。
8. HTTP请求分为三个部分:请求行、消息报头、请求正文。
9. 请求行以一个方法符号开头(POST、GET等),后面跟着请求URI和协议的版本。比如:GET/test.html HTTP/1.1(CRLF) —— CRLF(可选)表示回车,表示请求写完了。HTTP请求方法浏览器输入网址都是GET方法向服务器获取资源。POST方法用于向服务器发送请求,要求在服务器接受附在请求后面的数据。比如表单提交,username=xxx&password=xxx
10. HTTP响应也是由三部分组成,状态行、消息报头、响应正文,通过浏览器只能看到响应正文。比如:HTTP/1.1 200 OK(CRLF)
11. HTTP常见响应代码,200、404、500,
200就是正常,
404表示东西找不到,
500表示服务器内部出现错误。
12. Telnet演示HTTP请求/响应
cmd:telnet www.sohu.com
80GET/index.html HTTP/1.1 两次回车
HEAD/index.html HTTP/1.1 得到的响应如下:
13. 网站都是HTTP1.1,而Tomcat是用HTTP1.0,也就是可持续连接。