网络HTTP基础总结

Posted 流动的城市

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络HTTP基础总结相关的知识,希望对你有一定的参考价值。

Http的报文结构

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。

(1)请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
例如,GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。
GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。
POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据

(2)请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
1. User-Agent:产生请求的浏览器类型
2. Accept:客户端可识别的内容类型列表
3. Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

(3)空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(4)请求数据
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

Http的状态码

HTTP码应码
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。

响应码分五种类型,由它们的第一位数字表示:

1xx:信息,请求收到,继续处理
2xx:成功,行为被成功地接受、理解和采纳
3xx:重定向,为了完成请求,必须进一步执行的动作
4xx:客户端错误,请求包含语法错误或者请求无法实现
5xx:服务器错误,服务器不能实现一种明显无效的请求

Http request的8种类型

HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式
1. OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*’的请求来测试服务器的功能性
2. HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息
3. GET:向特定的资源发出请求
4. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改
5. PUT:向指定资源位置上传其最新内容
6. DELETE:请求服务器删除Request-URI所标识的资源
7. TRACE:回显服务器收到的请求,主要用于测试或诊断
8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post

Http的长连接和短连接

短连接
连接->传输数据->关闭连接
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。

长连接
连接->传输数据->保持连接 -> 传输数据-> … ->关闭连接
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差

HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接
HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。实现长连接要客户端和服务端都支持长连接

长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接,WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源

Cookie与Session的作用与原理

Cookie 用于保存客户浏览器请求服务器页面的请求信息,也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性

Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当 Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择

Http和Https的区别

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议。它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。

区别:
1. https协议需要到ca申请证书,一般免费证书很少,需要交费
2. Http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
3. Http和Https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443
4. Http的连接很简单,是无状态的
5. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

http://www.ruanyifeng.com/blog/2011/02/seven_myths_about_https.html

ICMP和Ping以及traceroute

网际控制报文协议ICMP,目的在于更加有效的转发IP数据报和提高交付成功的机会,该协议允许主机和路由器之间报告差错以及提供差错有关的异常情况的报告。

ICMP报文作为IP层数据报的数据,加上数据报的首部之后,组成IP数据报发送。主要有两种类型:ICMP差错报告报文和ICMP询问报文。
其中差错报告报文有5种类型:终点不可达(给定的报文无法送达,向源点发送一个不可达ICMP报文),源点抑制(网络出现拥塞的时候,主机或路由器向源点发送数据抑制报文),超时(路由器收到生存时间为0的报文,丢弃并向源点发送超时ICMP报文),参数问题(路由器或者主机收到的数据报的首部数据有问题,向源点发送参数出错报文),改变路由(一般用于调整数据的路由路径);
询问报文分两种:回送请求或回答报文(主机或路由器给特定主机发送询问报文,目的主机在接受到之后必须发送ICMP回答报文,主要用于探测目的站的可达性和了解状态),时间戳请求或回答报文(用于请求某个主机或者路由器回答当前时间,用于时间测量或者时钟同步)。

ICMP的两个应用分别是Ping和traceroute
Ping用于探测两个主机之间的连通性,ping属于直接从应用层直接使用了网络层的ICMP,而跳过了传输层的TCP/UDP。主机发送ping命令之后,就会连续向目标机发送4个ICMP回送请求报文。目标机收到回送请求报文之后会回应相应的ICMP报文,然后就可以通过四个回答报文得出往返时间以及丢包率。

traceroute(win下是tracert):从源主机发送一串IP数据报,其中的数据部分封装的是无法交付的UDP数据,并且,这一连串的IP数据报的TTL依次被设置为1, 2 , 3…。第一个数据报发出之后达到第一个路由r1,r1将TTL减1之后发现为0,丢弃并返回一个ICMP超时报文,接着是第二个TTL=2的报文,此时路径中路由器数目增加了一个…一直持续到报文被发送到目标主机,目标主机发现数据报无法交付,就给源主机回送了一个终点不可达的ICMP报文。至此,trace结束,源主机就得到了到目标主机的一条路由路径,以及相邻两个路由之间的往返时间。

电脑上访问一个网页的整个过程

域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行渲染呈现给用户

一次完整的HTTP事务:
http://www.linux178.com/web/httprequest.html
也可以参考这个经典面试题,中间部分即是:
http://www.open-open.com/lib/view/open1426238767404.html

以上是关于网络HTTP基础总结的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络—— 数据链路层(23):封装成帧差错检测

计算机网络要点总结

第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.4差错控制

计算机网络数据链路层基础知识

网络流模型总结

机器学习算法基础概念学习总结