'httpd知识'
OSI模型
OSI模型七层
应用层 ==> 为应用程序提供服务
表示层 ==> 数据格式转化,数据加密
会话层 ==> 建立,管理和维护会话
传输层 ==> 建立,管理和维护端到端的连接
网络层 ==> IP地址及路由选择
数据链路层 ==> 提供介质访问和链路管理
物理层 ==> 物理层
TCP/IP五层模型
应用层 =====>}
表示层 ======} ===> 应用层(各种应用层协议)
会话层 =====>}
传输层 =======>传输层(TCP或UDP)
网络层 =======>网络层(网络层IP)
数据链路层 =======>数据链路层
物理层 =======>物理层 (网络接口层)
HTTP协议是超文本传输协议,基于TCP/IP通信协议来传递数据(html文件,图片文件,查询结果等),属于应用层的面向对象的协议,简捷,快速,适用于分布式超媒体信息系统
TCP/IP协议
1,tcp/udp协议:tcp是一种面向连接的、可靠的、基于字节流的传输层协议,udp是一种无连接的传输层协议, 提供面向事务的简单不可靠信息传输层协议 1.TCP提供的是面向连接的、可靠的数据流传输; UDP提供的是非面向连接的、不可靠的数据流传输。
2.TCP提供可靠的服务,通过TCP连接传送的数据,无差错、不丢失,不重复,按序到达;UDP尽最大努力交 付,即不保证可靠交付。
3.TCP面向字节流; UDP面向报文。
4.TCP连接只能是点到点的; UDP支持一对一、一对多、多对一和多对多的交互通信。
5.TCP首部开销20字节; UDP的首部开销小,只有8个字节。
6.TCP的逻辑通信信道是全双工的可靠信道; UDP的逻辑通信信道是不可靠信道。
TCP/IP 协议族按层次分别分 为以下 4 层:应用层、传输层、网络层和数据链路层
应用层决定了向用户提供应用服务时通信的活动。
比如,FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name System,
域 名系统)服务就是其中两类。 HTTP 协议也处于该层。
传输层 传输层对上层应用层,提供处于网络连接中的两台计
算机之间的数据 传输。 在传输层有两个性质不同的协议:TCP(Transmission Control
Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报 协议)。
网络层(又名网络互连层) 网络层用来处理在网络上流动的数据包。
数据包是网络传输的最小数 据单位。该层规定了通过怎样的路径(
所谓的传输路线)到达对方计 算机,并把数据包传送给对方。 与对方计算机之间
通过多台计算机或网络设备进行传输时,网络层所 起的作用就是在众多的选项内选
择一条传输路线
链路层(又名数据链路层,网络接口层) 用来处理连接网络的硬
件部分。包括控制操作系统、硬件的设备驱 动、NIC(Network Interface Card,
网络适配器,即网卡),及光纤等 物理可见部分(还包括连接器等一切传输媒介)。硬
件上的范畴均在 链路层的作用范围之内
URL与URI的区别
URL和URI的区别:URL是唯一资源定位符,URI是唯一资源标识符
"“URI可以分为URL,URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”
URI
Uniform 规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文 环境来识别资源指定的访问方式。另外,加入新增的协议方案(如 http: 或 ftp:)也更容易。
Resource 资源的定义是"“可标识的任何东西”。
Identifier 表示可标识的对象。也称为标识符
示例:http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
从上面的URL可以看出,一个完整的URL包括以下几部分:
1.协议部分:该URL的协议部分为"“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的"“//“为分隔符
2.域名部分:该URL的域名部分为”“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用
3.端口部分:跟在域名后面的是端口,域名和端口之间使用”“:“作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口
4.虚拟目录部分:从域名后的第一个”/“开始到最后一个”/“为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是”/news/”
5.文件名部分:从域名后的最后一个"“/“开始到””?“为止,是文件名部分,如果没有”?“,则是从域名后的最后一个”/“开始到”#“为止,是文件部分,如果没有”?“和”#“,那么从域名后的最后一个”/“开始到结束,都是文件名部分。本例中的文件名是"index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名
6.锚部分:从"#“开始到最后,都是锚部分。本例中的锚部分是"name”。锚部分也不是一个URL必须的部分
7.参数部分:从"?“开始到”#“为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为"boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用"&"作为分隔符。
HTTP特点
1.支持客户/服务器模式。(C/S模式)
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
http与https的异同点
一,HTTP 和 HTTPS 的相同点:
大多数情况下,HTTP 和 HTTPS 是相同的,因为都是采用同一个基础的协议,作为 HTTP 或 HTTPS 客户端——浏览器,设立一个连接到 Web 服务器指定的端口。当服务器接收到请求,它会返回一个状态码以及消息,这个回应可能是请求信息、或者指示某个错误发送的错误信息。系统使用统一资源定位器 URI 模式,因此资源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一个协议头(https)的说明,其他都是一样的。
二,HTTP 和 HTTPS 的区别:
1,HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS
2,https协议需要到ca申请证书,一般免费证书很少,需要交费。
3,http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
4,http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
5,http的连接很简单,是无状态的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
6,HTTPS 比 HTTP 要慢 2 到 100 倍
头部字段信息含义
请求头
请求字段名 说明
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8以此字符集方式返回给我
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web认证信息
Expect 期待服务器的特定行为 Expect: 100-continue
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记(ETag)
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记(与 If-Match 相反)
If-Range 资源未更新时发送实体 Byte 的范围请求
If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
Max-Forwards 最大传输逐跳数 Max-Forwards: 10,最多只能转发10次
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
Referer 对请求中 URI 的原始获取方
TE 传输编码的优先级
User-Agent HTTP 客户端程序的信息
DNT (Do Not Track) 表明了用户对于网站追踪的偏好。它允许用户指定自己是否更注重个人隐私还是定制化内容。 0代表用户愿意追踪用户信息,1代表不愿意
响应头
响应头字段名 说明
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
Server HTTP服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息
请求行的第一个参数
三次握手与四次挥手
首先客户端发送连接请求报文,服务端接受连接后回复ACK报文,并为这次连接分配资源。客户端接收到ACK报文后也向服务端发送ACK报文,并分配资源,这样TCP连接就建立了
为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
参考链接:https://blog.csdn.net/ce123_zhouwei/article/details/17453033 (ip数据格式)
http://www.360doc.com/content/11/1201/09/7503466_168805370.shtml (tcp/udp数据格式)
https://blog.csdn.net/qzcsu/article/details/72861891 (tcp三次握手与四次挥手)
https://blog.csdn.net/xifeijian/article/details/12777187 (tcp为何三次握手和四次挥手)
https://blog.csdn.net/li1914309758/article/details/70050022 (以太网四种帧格式)
常用响应码
204请求成功,但没有资源可返回
206该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的
GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容。
301当指定资源路径的最后忘记添加斜杠"/",就会产生永久性重定向
302临时性重定向,但会POST变为GET
303该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET
方法定向获取请求的资源
304服务器端允许请求访 问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应 的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。
307 临时重定向,会遵照浏览器标准,不会从 POST 变成 GET
400请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。
401表示发送的请求认证失败
403表示发送请求被拒绝
404该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用
500服务器内部错误
503表示服务器超负荷或停机维护