一、定义
HTTP:WEB浏览器与WEB服务器之间的一问一答的交互过程遵循的规则。HTTP是一种超文本传输协议(hypertext transfer protocol),是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。是一个无状态,无连接的协议;基于请求/响应模式的一个协议
PS:发送请求载入网页时,网页里的资源来自于其他链接,需要再发送一个请求,http1.1版本是不断开链接,发送请求,http1.0版本是每个一资源都建立一个链接传输数据,【浏览器是多线程的?】
(先建立链接,再发送请求)
二、内容
HTTP包括两部分:
1)请求:由客户端向服务器发送的内容
由三部分组成:请求行,消息头,请求体(可有可无,GET无,POST有)
//请求行
GET /books/java.html HTTP/1.1 //请求方法 请求的url 协议
//多个消息头
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost //主机
Referer: http://localhost/links.asp //页面的来源
User-Agent: Mozilla/4.0 //告诉服务器,访问者是通过什么工具来请求的
Accept-Encoding: gzip,deflate
//一个空行
//请求体
2)响应
编写模拟http服务器的程序:
1、定义一个ServerSocket,监听80端口;
ServerSocket server = new ServerSocket(80);
Socket s = server.accept();//阻塞方法,程序停止,等待客户端发请求
2、获得输入流,从输入流中获取请求信息(将字节转换成字符)
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
br.readLine();