网络编程之HTTP

1.访问一个网址,浏览器都做了哪些事情?
1.首先用户输入一个网址,拿www.baidu.com来讲,浏览器会首先去看DNS缓存,如果有则返回它的ip,如果无则访问系统DNS。
2.如果以上步骤都不行,则访问host文件,里边记录着域名到Ip的映射关系。
3.上边步骤都不行,则会访问宽带运营服务器或域名服务器发送DNS解析请求(有两种请求
4.然后会根据响应的ip地址访问
5.建立起连接后,会HTTP三次握手,客户端会发送访问百度的请求
6.服务端接收到请求,根据路径参数,经过后台一些处理之后,把处理后的结果返回给浏览器。
7.浏览器拿到了服务器发来的完整html,内核和js引擎就会解析和渲染这个页面,里边的js,css,图片也会通过一个个请求进行加载。
8.最终将页面呈现给用户
9.最终如果浏览器没有后续的请求,则会断开连接,HTTP四次挥手。
2.DNS解析请求的两种方式
1.递归解析 将域名一段一段解析,解析一部分返回给客户端一部分
2.迭代解析 将域名一段一段解析,解析完之后返回给客户端
3HTTP可以分为两部分
1.请求GET
2.响应
HTTP请求GET讲解
GET请求由三部分构成:分别是状态行,请求头,请求正文
在这里插入图片描述
GET一般用于信息获取,往往不会对数据库进行增删改,不会影响资源的状态,所以多次GET请求获取到的结果都是一样的。
HTTP请求头
这是访问百度首页时的请求头信息
Accept:表示浏览器能接收的内容类型
Accept-Encoding:表示浏览器能解码的编码类型
Accept-Language:表示浏览器所支持的语言类型
Csche-Control:表示请求响应所要遵守的缓存机制,这里表示不需要缓存
Connection:表示持久化连接,多次会话使用已经建立的连接
Cookie:用于会话跟踪技术
Host:表示访问的主机名
User-Agent:表示用户代理信息,比如浏览器名字版本语言等等
还有一些常见的请求头:
Content-Length:请求的内容长度
Referer:先前访问的路径,当前请求紧随其后,说明先前你是从哪个网址点击访问到该页面的,如果没有则不填。
Content-Type:内容的类型,Get请求无该字段,Post请求常见的有application/x-www-form-urlencoded为普通的表单提交,还有文件上传为multipart/form-data.
HTTP响应头
这是访问百度首页时的响应头
Date:表示服务器消息发出的时间
Last-Modified:请求资源的最后修改时间
Expires:相应过期的日期和时间,如果下次访问在时间允许的范围内,则不用重新请求,直接访问缓存
Set-Cookie:设置Http Cookie,下次访问时带上这个cookie值
Server:服务器软件名称
HTTP特性
1.HTTP是无连接无状态的,一次会话后便会消失。所以要使客户端与服务器端多次会话消息共享,就要使用会话跟踪技术。
HTTP一般构建于TCP/IP协议之上,默认端口号为80
会话跟踪技术有四种方式
1.cookie
2.session
3.url重写
4.隐藏表单提交
Get与Post请求的区别
1.请求参数位置不同 Get请求参数在url中,Post请求参数在请求体中
2.Get请求参数数量是有限的
3.Post请求比Get请求安全,Get请求一般用于获取资源,Post请求一般用于表单的提交
4.对于用户输入敏感消息时,大都使用Post请求,因为Get请求的参数是在url上的。Get标签一般用于获取静态资源。
5.Get请求可以被缓存,可以被收藏为标签;而Post请求可以被缓存,但不能被收藏为标签。
HTTP相应中包含一个状态码,用来表示服务器对客户端响应的结果。
1xx:表示请求已经接收,服务器正在处理。
2xx:表示请求已经接收,且已经处理完成。
3xx:表示重定向。
4xx:表示客户端发生错误。
5xx:表示服务器端发生错误。
常见状态码:
200:表示客户端请求成功。
301:表示请求永久重定向。
302:表示请求临时重定向。
304:表示请求资源没有更新,服务器告知浏览器不必再请求服务器资源,可直接用自己的缓存。
400:表示客户端请求语句发生错误,服务器无法进行解析处理。
401:表示客户端请求未经授权,无法访问。
402:表示服务器接收了客户端请求,但拒绝为其提供服务;通常服务器会在正文中说明拒绝提供服务的原因。
404:表示客户端请求路径出错。
500:表示服务器端发生不可预知的错误。
503:表示服务器端发生错误,暂时不能处理客户端发来的数据,但可能过一段时间就恢复正常。
缓存机制
HTTP条件GET是HTTP协议为了减少不必要的带宽浪费,提出的一种方案:
1.HTTP条件GET使用时机:客户端之前已经访问过某网站,并打算再次访问该站点。
2.HTTP条件GET使用的方法:客户端向服务端发送一个包询问是否在上一次访问该网站后更新了页面,如果页面没有更新,服务器会发送304状态码返回给客户端,告知客户端服务器没有更新,可以使用本地浏览器缓存加载页面;如果页面更新,服务器会将更新后的资源返回给浏览器,然后浏览器进行加载。
持久连接
HTTP采用的是”请求–应答“模式,当使用普通模式时,即非”Keep-Alive"模式时,每个请求-应答都要建立一个新的连接;当使用”Keep-Alive"(又成持久连接,连接重用)模式时,Keep-Alive功能使客户端到服务端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或着重新建立连接。

发布了7 篇原创文章 · 获赞 4 · 访问量 264

猜你喜欢

转载自blog.csdn.net/llllxxxxyyyy/article/details/102906040