计算机网络】应用层协议----HTTP

应用层负责应用程序间的沟通,即定义了位于不同主机中的多个应用进程之间通信的协议。满足我们日常的网络需求,比如SMTP(电子邮件传输)、FTP(文本传输协议)、HTTP(超文本传输协议)
上面提到了协议二字,简单来说,协议就是一种“约定”,比如我们一会儿在哪见面,我们会提前约定好地点。应用层中应用最广泛的协议就是HTTP协议了。

HTTP协议

客户端和服务器的通信,必须要通过请求和响应的交换来达成通信,HTTP协议规定:客户端先发出请求建立通信,服务器在没有接收到请求时是不会响应的

HTTP的特点:
1.HTTP基于TCP/IP协议
2.通常使用的场景是基于CS/BS
3.无状态无连接协议(后面有具体解释)

HTTP的组成

由HTTP请求和HTTP响应组成
客户端request:请求行、请求报头、空行、请求正文
服务器response:响应行、响应报头、空行、响应正文
在这里插入图片描述
请求行中:URI 、 version(版本号)比如:HTTP/1.1
响应行中:
状态码:比如200(状态码解释:OK//客户端请求成功)
400 (状态码解释:Bad Request//客户端请求有语法错误,不能被服务器所理解)

报头中放的是键值对(比如键:小闻,值:12345;小闻:12345就是一个键值对)
HTTP常见的Header
Content-Type:数据类型(比如text/html等)
Content-Length:Body的长度
Host:客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
User-Agent:声明用户的操作系统和浏览器版本信息
referer:当前页面时从哪个页面跳转过来的
location:搭配3XX状态码使用,告诉客户端接下去要去哪里访问
Cookie:用于在客户端存储少量信息,通常用于实现会话(session)的功能

HTTP的方法
请求资源的常见方法:GET方法通过请求行的URL传参,POST方法通过请求正文传参,下面更具体点:

方法说明支持HTTP协议版本
GET获取资源1.0、1.1
POST传输实体主体1.0、1.1
PUT传输文件1.0、1.1
HEAD获得报文首部1.0、1.1
DELETE删除文件1.0、1.1
OPTIONS询问支持的方法1.1
TRACE追踪路径1.1
CONNECT要求用隧道协议连接代理1.1
LINK建立和资源之间的关系1.0
UNLINE断开连接关系1.0

HTTP的状态码

类别原因短语
1XXInformational(信息性状态码)接收的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

常见的状态码:
200 (OK) 请求成功[一般用于Get和Post请求]
404 (Not Found) 服务器无法根据客户端请求的内容特性完成请求
403 (Forbidden) 服务器收到请求,但拒绝服务
301 (Moved Permanently) 永久重定向(请求的资源被永久移动到新的URI)
302 (Redirect) 临时重定向(资源被临时移动。客户端应继续使用原有的URI)
500 内部服务器错误(代码有错)
504 (Bad GateWay) 充当代理服务器,未及时从远端服务器获取请求
505服务器不支持请求的HTTP协议的版本,无法完成处理

URI 和 URL
URI统一资源标识符,是用来唯一标识一个资源
URL(Uniform Resource Locateor)统一资源定位器,每个网页都有一个唯一的名称标识,这个标识就叫做URL,简单的说,URL就是Web地址,俗称“网址”
它是具体的URI,不仅标识了一个资源,还知道如何定位这个资源,具有全球唯一性

URL格式由三部分组成:
协议、存放该资源的主机IP地址(有时也包括端口号)、主机资源的具体地址
在这里插入图片描述
Windows主机不区分URL大小写,但是,Unix/Linux主机区分大小写

无连接无状态:简化了服务器,不会造成不必要的连接占用,但请求可能会传输重复信息

无连接:每次连接只处理一个请求。请求时建连接,请求完断连接(服务器处理完客户端的请求,并收到客户端的应答后,断开连接)这种方式不仅节约传输时间,还可尽快把资源释放出来服务其它客户端

无状态:指协议对事物处理没有记忆能力(也就是服务器并不知道客户端是什么状态,每个请求都是独立的)。不过也有缺点:假如你后面要继续处理前面的,那就必须要重传了,这类情况就会导致连接传送的数据量大。但是如果不需要之前信息时,应答就比较快了)

Cookie\Set-Cookie

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值