HTTP原理之网络基础

HTTP原理学习

想要更好的了解性能,做好性能测试与调优,就必须深入基础,学习更多操作系统、网络方面的知识,恰好手边有HTTP方面的书籍,就从HTTP入手,之后再深入学习操作系统原理、Linux、TCP/IP等基础。

一、网络基础

OSI七层模型

OSI(Open System Interconnection),开放式系统互联参考模型。它把网络分成七层,如下图:

Created with Raphaël 2.1.0 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

七层的结构使网络变得更清晰与简单,同时方便接口标准的定义以及技术革新。我们简单分析一下各层的使命:

1.物理层(Physical Layer)

物理层是最低的一层,这一层主要干的工作是定义各种硬件规格,连接网络等。常见的网卡就是物理层的。但其实在下面还有一层物理媒介,如双绞线、同轴电缆等,这一层有人称为第0层。物理层就为这层提供物理连接以及各种规格特性等。这一层的单位是bit(比特)。

数据链路层是第二层,它控制网络层与物理层之间的通信。它做的工作就是把网络层的信息分割包装,进行数据的可靠传递。它把网络层的数据包分割成特定的包,包括网络层的原始数据和发送接收方的物理地址、检错和控制信息。这一层确保了数据的传输无差错,该层的作用有:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

交换机属于链路层。

协议代表:SDLC,HDLC,PPP,STP,帧中继等。

3.网络层(Network Layer)

网络层的主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。网络层用于本地LAN网段之上的计算机系统建立通信,是可选的,当两台主机处于同一个LAN网段的情况,它们之间通信只使用LAN的通信机制就可以了。

路由器属于网络层。

路由协议包括IP,IPX,AppleTalk等。

4.传输层(Transport Layer)

传输层协议同时进行流量控制或是基于接收方可接受数据的快慢程度规定适当的发送速率。传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割,并且对每一数据片安排一序列号,以方便接收后以正确的顺序重组。

传输层的协议有TCP,UDP,SPX等。

5.会话层(Session Layer)

会话层负责在网络中的两节点之间建立、维持和终止通信。通过传输层建立数据传输的通路。主要在你的系统之间发起会话或者接收会话请求。

6.表示层(Presentation Layer)

表示层是应用程序和网络之间的翻译官,表示层将数据按照网络能理解的方案进行格式化。表示层管理数据的解密与加密,图片和文件格式信息的解码和编码。

7.应用层(Application Layer)

表示层主要负责对软件提供接口以使程序能使用网络服务。应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。

应用层的协议有很多:FTP,Telnet,SMTP,HTTP,DNS等。

HTTP协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)作为Web的规范,完成从客户端到服务器端等一系列运作流程。

HTTP协议是属于应用层的协议,它每往下走一层,都会被这层进行一次封装,打上TCP首部、IP首部、以太网首部等。而在接收端收到消息后,从下往上走的过程中又会一层层的剥下封装,最后得到HTTP的原始数据。

所以HTTP协议是依赖于很多协议的,如负责传输的IP协议(通过IP来定位、传输到接收方)、确保可靠性的TCP协议(通过三次握手确保通信的可靠性)、负责域名解析的DNS服务(使域名能够解析成IP地址)。

URI和URL

1.URI,URL,URN

URI(Uniform Resource Identifier)统一资源标识符。

URL(Uniform Resource Locator)统一资源定位符。

URN(Uniform Resource Name)统一资源名。

三者都是用来定位网络资源的,URI用字符串标示网络资源,URL表示资源的地点,URN则用名称定位资源。URL与URN都是URI的子集,但是目前URN没有推广,进度太慢。所以目前我们说的URI基本就等于URL。

2.URL格式

接下来我们研究下URL的格式:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

基本不会有URL包含了上面的所有组件。URL最重要的3个部分是方案(scheme)、主机(host)、路径(path)。

组件描述默认值
方案访问服务器以获取资源时要使用哪种协议
用户某些方案访问资源时需要的用户名匿名
密码用户名后面可能要包含的密码,中间由冒号(:)分隔
主机资源宿主服务器的主机名或点分IP地址
端口资源宿主服务器正在监听的端口号。很多方案都有默认端口号(HTTP的默认端口号为80)每个方案特有
路径服务器上资源的本地名,由一个斜杠(/)将其与前面的URL组件分隔开来。
路径组件的语法是与服务器和方案有关的
参数某些方案会用这个参数来指定输入参数。参数为名/值对。
URL中可以包含多个参数字段,它们互相之间以及与路径的其余部分之间用分号(;)分隔
查询某些方案会用这个组件传递参数以激活应用程序
(比如数据库、公告板、搜索引擎以及其他英特网网关)。
查询组件的内容没有通用格式。用字符“?”将其与URL的其余部分分隔开来
片段一小片或一部分资源的名字。
引用对象时,不会将frag字段传送给服务器,这个字段是在客户端内部使用的。
通过字符“#”将其与URL的其余部分分隔开来

比如说:

http://blog.csdn.net/huilan_same?viewmode=contents

其中http就是方案,blog.csdn.net就是主机,/huilan_same就是路径,viewmode=contents就是查询,这里不需要用户名密码,都省略,端口默认是80,省略,没有参数与片段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值