TCP/IP四层应用模型及协议
IP
网络之间互连协议,
TCP/UDP协议
TCP
- 特点安全
- 三次握手
UDP
- 特点快
DNS/DHCP
DNS
域名解析服务器
DHCP
FTP
文件传输协议
HTTP协议概念及工作流程
概念:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
http属于Tcp/Ip模型中的应用层协议,而两个应用程序(我们这里指的就是浏览器与服务器)之间要进行互相通信,首先得建立Tcp连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求信息后,返回相应的应答信息,浏览器接收到来自服务器的应答信息后,对这些数据进行解释执行。
telnet模拟http请求
1.模拟POST请求
cmd->telnet localhost 80->CTRL+]打开本地回显功能,这样我们就可以看见我们所打的东西了->输入请求信息:
POST /01.php HTTP/1.1
host:localhost
content-type:application/x-www-form-urlencoded
content-length:19
user=kk&pass=123456
注意:
- post请求要加
content-type:application/x-www-form-urlencoded
和content-length:**
这两个请求头部信息。 - Content-Length如果存在并且有效的话,则必须和消息内容的传输长度完全一致。(经过测试,如果 Content-Length过短则会截断,过长则会导致超时。)( Content-Length长度包括=和&连接符)
- 头信息和主体信息之间要有一个换行。
2.模拟GET请求
HTTP协议工作流程总结:
HTTP之请求消息Request
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP之响应消息Response
一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
请求方法与状态码
- 请求方法:
(这些请求方法虽然HTTP协议里规定的,但是WEB SERVER未必允许或支持这些方法!)
GET
POST
HEAD :和GET基本一致,只是不返回主体信息,返回的响应中没有具体的内容,用于获取报头。
比如我们只需要确认一个内容(比如照片)是否正常存在,并不需要照片的内容,这时用HEAD比较合适。
示例:
PUT
TRACE
DELETE
OPTIONS:返回服务器可用的请求方法 - 状态码,状态文字(用来描述状态码,便于人观察):用来反映服务器响应情况。
常见的:
200 服务器成功返回网页
301/2 永久/临时重定向
304 未修改
举例:
首次打开localhost/a.jpg如下:
再次刷新当前页面如下:
307 重定向中保持原有的请求数据,会遵照浏览器标准,不会从post变为get。
index.html
<form action="01.php" method="post">
<input type="text" name="name">
<input type="submit">
</form>
01.php
$post=$_POST;
header('Location:02.php',true,307);
02.php
print_r($_POST);
能打印出post数组,并且:
404 请求的网页不存在
503 服务器暂时不可用
500 服务器内部错误
参考: [关于HTTP协议,一篇就够了] (https://www.cnblogs.com/ranyonsue/p/5984001.html)
web服务器
- 常用web服务器