2021-11-25

应用层

应用层协议原理

套接字是应用程序进程和运输层协议之间的接口,发送端进程将报文送入套接字,传输过后接收端套接字会接受这些报文

我们大体能从四个方面对运输层协议进行分类:可靠数据传输、吞吐量、定时和安全性

应用层协议定义了:
1、交换的报文类型,例如是请求报文或响应报文
2、各种报文类型的语法
3、字段的语义
4、确定一个进程何时以及如何发报文,对报文的响应规则

Web和HTTP

Web的应用层协议是HTTP

Web页面由对象组成,例如最基础的HTML基本文件,或者一些图片视频

HTML文件通过对象的URL地址引用页面中的其他对象,而一个URL地址由两部分组成:
1、存放对象的服务器主机名
2、对象的路径名
例如:www.someSchool.edu/someDepartment/picture.jpg,其中www.someSchool.edu是主机名,/someDepartment/picture.jpg是路径

非持续连接和持续连接

在因特网应用程序中,客户和服务器在一个相当长的时间范围内进行通信,其中客户会发出一系列请求由服务器响应,这时候应用程序的研制者需要选择,是将每个请求经一个单独的TCP连接发送,还是所有请求及响应都在同一个TCP连接发送

每个请求经单独TCP发送称为非持续连接
所有请求及响应都在同一个TCP发送称为持续连接

非持续连接

在这里插入图片描述

三次握手

在这里插入图片描述
当用户点击超链接的时候,会引起浏览器和服务器之间发起一个TCP连接,这涉及一个“三次握手”过程,即客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段作出确认和响应,最后,客户向服务器返回确认。

三次握手的前两次占用了一个往返时间(RTT),在完成三次握手的前两个部分后,用户结合第三次握手(确认)部分,向该TCP连接发送一个HTTP请求报文,服务器接收到该请求报文后,在该TCP上发送HTML文件,这占用了第二个RTT

持续连接

非持续连接有两个缺点
第一,每一次请求都需建立和维护一个全新的连接,需要在用户和服务器的TCP缓存区分配新的变量,给Web服务器带来了负担
第二,每一个对象经受两倍的RTT交付延迟,即一个RTT用于建立连接,一个RTT用于请求和接收一个对象

在采用持续连接的时候,服务器在发送响应后保持TCP的开启,在一个TCP连接超过一段时间未被使用后,服务器就关闭该连接

HTTP报文格式

HTTP报文分为两种类型:请求报文和响应报文

请求报文

下面提供一个典型的请求报文
在这里插入图片描述
报文由五行组成,每行由一个回车和换行符组成,最后一行再附加一个回车换行符。

HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行

请求行有三个字段:方法字段,URL字段和HTTP版本字段
方法字段可以取几种不同的值,包括GET、POST、HEAD、PUT和DELECT

首部行中
Connection:close 告诉服务器不需要使用持续连接
User-agent 用来指明用户的代理,即向服务器发送请求的浏览器类型

请求报文的通用格式
在这里插入图片描述
在使用GET方法时,实体体为空
HEAD方法类似GET方法,但服务器在接受到HEAD方法请求时,会用一个HTTP报文进行响应,但不返回请求对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值