目录
一、网络协议
1、网络协议三要素
2、层次结构
3、层次划分
二、HTTP协议
1、HTTP工作原理
2、HTTP协议特点
3、 三次握手
4、四次挥手
三、HTTP报文格式
1、请求报文
2、响应报文
一、网络协议
网络协议,简称协议 ,网络协议是通信计算机双方必须遵从的一组约定。如怎样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现在网络上传输的数据包的格式。
Internet上的计算机使用的是TCP/IP协议
1、网络协议三要素
语法:即数据与控制信息的结构或格式
语义:即需要发出何种控制信息,完成何种动作以及做出何种响应
时序(同步):即事件实现顺序的详细说明
2、层次结构
由于网络节点之间联系的复杂性,在制定协议时,通常把复杂成分分解成一些简单成分,然后再将它们复合起来。最常用的复合技术就是层次方式,网络协议的层次结构如下:
(1)结构中的每一层都规定有明确的服务及接口标准。
(2)把用户的应用程序作为最高层
(3)除了最高层外,中间的每一层都向上一层提供服务,同时又是下一层的用户。
(4)把物理通信线路作为最低层,它使用从最高层传送来的参数,是提供服务的基础。
3、层次划分
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。
其中第四层完成数据传送服务,上面三层面向用户。对于每一层,至少制定两项标准:服务定义和协议规范。前者给出了该层所提供的服务的准确定义,后者详细描述了该协议的动作和各种有关规程,以保证服务的提供。
二、HTTP协议
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCLL形式给出;而消息内容则具有一个类似MIME的格式
1、HTTP工作原理
HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理过程如下:
(1)客户与服务器建立连接(三次握手);
(2)客户向服务器提出请求;
(3)服务器接收请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接(四次挥手)。
客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。
HTTP协议是一种无状态协议,即服务器不保留与客户交易时的任何状态。
HTTP是一种面向对象的协议,允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。
HTTP支持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中,引入了保持活动机制,其中连接可以重用于多个请求。这样的持久性连接可以明显减少请求延迟,因为在发送第一个请求之后,客户端不需要重新协商TCP 3-Way-Handshake连接。另一个积极的副作用是,通常,由于TCP的缓慢启动机制,连接随着时间的推移而变得更快
HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。
2、HTTP协议特点
(1)支持客户端(浏览器)/服务器模式。
(2)简单快速:客户端只向服务器发送请求方法和路径,服务器即可响应数据,因而通信速度很快。请求方法常用的有get和post等。
(3)灵活:HTTP允许传输任意类型的数据,传输的数据类型由Content-Type标识。
(4)无连接:无连接指的是每次TC连接只处理一个或多个请求,服务器处理完客户的请求后,即断开连接。采用这种方式可以节省传输时间。
HTTP1.0版本一个请求响应之后,直接就断开了。称为短连接。
HTTP1.1版本不是响应之后直接就断开了,而是等几秒钟,这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,就会断开连接。称为长连接。
(5)无状态:HTTP协议是无状态协议。
无状态是指协议对于事务处理没有记忆能力。
3、 三次握手
第一次:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
第二次:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
4、四次挥手
第一次:当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。
第二次:主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
第三次:主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
第四次:主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。
三、HTTP报文格式
1、请求报文
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
请求行:
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔
请求方法:
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。GET和POST是最常用的请求方法
2、响应报文
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体