http

    感觉上次写的比较乱,但是概念这个东西就是比较乱,就捡一些重要的说一下,毕竟每一块都需要在研究。
    毕竟flag都立了,就不能不写了。所以有些时候想偷懒就先立个flag。身体和灵魂,总有一个要在路上。

1.客户端和服务器的通信就是使用http
    客户端和服务器之间的通信过程大概是这样:客户端向服务器发送http请求,服务器根据请求的信息,找到客户端想要的资源,再以http格式的响应发送给客户端。
    在其中,http协议就是两端通信的标准。http中携带了哪些必要的信息就是以后具体需要研究的了。但是client和server通信就是以一个个的http的请求和响应通信的。所以研究http就是研究客户端和服务器通信的手段和细节。

2.资源
    客户端向服务器发送请求,目的就是为了要服务器上的资源并且展示在浏览器上。那么资源到底指的是什么?
    Web资源就是在web内容的源头,都放置在服务器上。
    资源分为静态资源和动态资源。静态资源就是一些文件,比如文本文档,图片,视频,html文件..etc。动态资源就是一些程序,根据不同的时间会有不同的结果。
    这里提一下MIME类型。
    Mime类型一般用于标记多媒体内容,可以认为是一种后缀。有了后缀那么就在查找筛选上会省很多事。在http的首部字段里面的content_type首部就是说明了文档的mime类型。

3.事务
    什么是事务。
     就我的理解,事务就是一件事从决定要开始做,然后经过了无数多的磨难最终有了一个交代的这么一个概念。比如说我要做一盘西红柿炒鸡蛋,那么从我买菜洗菜炒菜最后端出来这就是事务。再比如唐僧西天取经,从观音跟他聊了几句开始,再到他最后见到如来为止就是一个事务。中间不管收了几个徒弟,不管打了多少妖怪,这都统统算在这一事务里面。
    那么在http这里,一个http事务简单的理解就是请求命令+响应结果组成。

4.报文
    刚才提到了事务,事务就是客户端服务器之间以http格式的报文互传。那么报文又是什么。
    http报文就是一行一行的字符串。http叫做超文本传输协议,那么http报文当然就是纯文本了,这里不要理解成二进制代码,就是文本。
    http报文 = 起始行+ 首部字段 + 主体
    起始行:请求报文的起始行说明请求服务器做什么,响应报文的起始行说明出现了什么情况(成功了还是失败了还是重定向了等等)
    首部字段:起始行后面可以有很多首部字段,没有也行。主要是就描述一些属性,比如描述主体的长度,描述发送时间的日期。
    主体:就可以理解事我们用html标签写的文件了。请求报文有没有主体都行,响应报文一般都是有主体的。
    具体的格式以后可能会提。其实也没什么好说的。

5.连接
    还记得五层架构吧。物理层,数据链路层,网络层(ip协议),传输层(tcp udp),应用层(http协议)。
    http协议基于tcp/ip协议之上。
    所以要想发生网络层的传输,就一定要建立好底层的连接。物理层和链路层先不提。一般的连接步骤是这样的。
    a浏览器从url中解析服务器主机名
    b.Dns将主机名解析成IP地址
    c.浏览器再从url中解析出端口
    d.浏览器和服务器建立tcp连接,三次握手
    e.浏览器向服务器发送请求报文
    f.服务器返回响应报文
    g.关闭连接
    有一个例子是telnet协议。这是个应用层协议,比较简单,主要是客户端可以直接操作服务器的一个协议,以后可能会细说。
    另外,http协议有很多版本,然后又是老生常谈的兼容问题,这个也是遇到了细说。

6.web结构组件
    刚才只是说了客户端和服务器之间的一个事务就是请求报文和响应报文,但是这个并不只是客户端和服务器之间的事,中间还有很多其他的组件参与到这个活动当中。
    代理:
    代理就是客户端和服务器之间的实体,报文由它转发。
    代理可以对请求和响应内容进行过滤。比如屏蔽一些小火车,或者是对一些首部字段进行处理,所以很多时候发出的请求报文到了服务器那里会有所改变
    缓存:
    Web缓存是一种特殊的http代理服务器,将一些常用的文档复制保存起来。
    一些常用的页面副本可以放在里客户端比较近的地方。
    网关:
    网关又是一种特殊的服务器,是一个实体。通常用于将http流量转化为其他协议,比如http协议到了网关编程ftp协议,再向ftp服务器请求资源。
    隧道:
    是对http通信报文进行盲转发的特殊代理。
    Agent代理
    就是一种智能代理,可以代表用户发起请求。也就是预估用户需要什么样的请求,他先发送请求,然后得到内容存起来。
    比如spider。
    这些组件都会对客户端和服务器之间的通信产生影响。所以http通信也并不是简单的客户端和服务器两个人之间的事情。

     http其实还有很多的概念,但是就这么排列概念也没有什么意义。http的流程也比较简单,所以针对一些比较大的概念也没有什么特别要说的, 之后的学习我可能就针对一些问题做一些自己的理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值