HTTP
HTTP:超文本传输协议。这里主要讲解HTTP中的几个重要知识点。
无状态
百度百科中对于http无状态的定义:
HTTP无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
就好像在登录界面的时候没有点击记住我,那么每次访问这个网站都需要重新登录。
HTTP无状态的优缺点
优点:因为HTTP是无状态的,所以服务器不会保存客户的任何信息,从而减轻服务器的负担,从而能够把更多的cpu和内存用来对外提供服务。
缺点:根据百度百科中的定义,缺少状态意味着如果后续处理需要前面信息,它必须重传,也就是说每次重新登录之后,我们来到的是最原始的界面,需要重新上传数据,而不是当时我们操作完毕后退出的界面,明显这样的操作很麻烦,所以我们通过Cookie等技术来解决这个问题。
cookie的基本实现过程:
http缓存
然而,如果在原始服务器发送的响应报文发送给代理服务器之后,代理服务器在本地存储空间产生一个副本,这时候,如果原始服务器对这个对象做出了修改,此时放在代理服务器上的副本是陈旧的,并不是原始服务器做出修改后的对象,换句话说,就是保存在服务器中的对象自改副本缓存在客户上以后可能已经被修改了,,下次客户再次发送请求的时候,获得的是对象是副本的,但是本应该是修改之后的,这怎么解决这种问题咧?幸运的是,HTTP协议中有一种机制,使得代理服务器保持它的对象是最新的,这就是条件的GET方法。
如果:①请求报文使用GET方法;并且②请求报文中包含“If-Modified-since:”首部行,那么这个报文就是一个条件GET请求报文。
持续连接、非持续连接
报文格式
HTTP请求报文
HTTP的方法有:
通过上面的表格,我们可以知道get和head都是获取内容,但是又有所不同,因为head方法并没有获取请求的内容,而是返回它的头部信息,而get除了获取报头信息外,还会获取报文的内容,所以当我们只需要查看某个页面的状态的时候,使用HEAD是非常高效的,因为在传输的过程中省去了页面内容(也就是实体部分)。
HTTP响应报文
HTTP的状态码主要有:
2xx:表示成功
200:OK,表示的是报文被正常处理。
204: No Content(Content意思是内容),表示没有内容,也就是说请求被正常处理,但是响应报文中不包含实体部分
206:Partial Content(表示部分内容),也就是说这个是一个范围请求,请求被正常处理,但是响应报文中只返回了一部分的实体数据。
3xx: 重定向
301: Moved Permanently (永久性重定向)表示请求的资源已经不存在了,需要用新的URL进行访问。
302:Found(临时性重定向),说明请求的资源还在,但暂时需要用另一个URL来访问。
304: Not Modified(没有更改),表示资源未修改,重定向已存在的缓冲文件,也称缓存重定向。
4xx:客户端错误
400:Bad Request(错误请求),表示请求报文中存在语法错误
403:Forbidden(禁止),表示服务器禁止访问被服务器拒绝了
404:Not Found(没有找到),表示服务器上没有办法找到请求的资源。
5xx:服务器错误
500:Internal Server Error(服务器内部错误),表示服务器端在执行请求时发生了错误
501:Not Implemented,表示客户端请求的功能还不支持。
502:Bad Gateway,表示服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
503:Service Unavailable,表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
DNS
域名查询主要包括了递归查询、迭代查询。
电子邮件
文件传输协议FTP
文件传输协议中使用两条并行的TCP连接:控制连接、数据连接。
其中控制连接用于传输TCP相关的命令,在整个会话中都保持连接,而数据连接是每个文件开始传输的时候才会建立连接,在文件传输结束之后就会断开连接(也就是数据连接是非连续的)。
同时注意的是,控制连接使用端口21,而数据连接在主动模式下使用端口号20,在被动模式下由客户端和服务端协商得知。