【Linux】应用层之HTTP协议

这篇具有很好参考价值的文章主要介绍了【Linux】应用层之HTTP协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

应用层协议

在应用层,需要我们传递应用层所需特殊的数据格式,这种数据可能是连续数据,例如int类型的整形变量,也可能是string类型的字符串,也可能是多个变量构成的结构体,那么就意味着我们发送的数据可能是连续的,也可能是不连续的,这时为了统一数据的解析方法,我们对数据在发送前进行序列化,在接收后进行反序列化。那么无论使用序列化还是反序列化,都需要对数据格式进行约定,以便于一端能够正常进行解析。
而对数据进行约定,使之能够正常的进行构造和解析,这种约定就是应用层协议

应用层的作用:为应用程序提供网络服务

序列化的意义、为什么要将数据序列化?

序列化本质是将离散存储的数据转换为连续的数据,由于大量的数据存储并非连续的,例如一个结构体中嵌套一个指针,而这个指针所指向的是一另一个结构体对象,那么此时当前结构体在存储角度来看就是一个不连续的数据,如果我们贸然当当前的数据进行发送,对方接收到之后,其内部的指针指向的地址就无效了,因此我们需要将数据进行序列化,之后才可以进行存储或者通过网络发送出去。

HTTP协议概述

虽然应用层协议是程序员定的,但是为了方便大量的程序员使用,大佬们已经定义了现成的应用层协议可以直接使用,就比如HTTP协议

HTTP协议是无连接,无状态,工作在应用层的协议。
其中无连接表示HTTP协议本身不维护连接信息,但是HTTP的数据会交给传输层的TCP协议,而TCP是面向连接的。
无状态是指:HTTP本身不会对数据的请求和响应状态进行保存。

HTTP的协议格式

协议格式分为:请求和响应

请求中包含:请求首行,请求头部,空行,请求体
响应中包含:响应首行,响应头部,空行,响应体

【Linux】应用层之HTTP协议,linux,linux,http

请求

【Linux】应用层之HTTP协议,linux,linux,http
【Linux】应用层之HTTP协议,linux,linux,http
注意:GET类型的请求没有请求体

请求首行:[方法] + [url] + [版本]

请求方法主要有:GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法,但常用的只有前两个。

请求头部:为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔

常见请求头部如下:

请求头 说明
Host 接受请求的服务器地址,可以是IP:端口号,也可以是域名
User-Agent 发送请求的应用程序名称
Connection 指定与连接相关的属性,如Connection:Keep-Alive
Accept-Charset 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式
Accept-Language 通知服务端可以发送的语言

请求体:GET没有请求体
【Linux】应用层之HTTP协议,linux,linux,http
请求体:POST请求体
【Linux】应用层之HTTP协议,linux,linux,http

响应

【Linux】应用层之HTTP协议,linux,linux,http

响应首行: [版本号] + [状态码] + [状态码解释]

常见的状态码及其含义

状态码 含义
200 响应成功
301 永久重定向,删除源地址,保留重定向地址
302 临时重定向
400 客户端请求有语法错误,无法被服务器识别
403 服务器收到请求,但是拒绝提供服务
404 请求资源不存在
500 服务器内部错误

响应头部:与请求头部类似,为响应报文提供一些附加信息
常见的响应头部如下:

响应头部 说明
Server 服务器应用程序软件的名称和版本
Content-Type 响应正文的类型(是图片还是二进制字符串)
Content-Length 响应正文长度
Content-Charset 响应正文使用的编码
Content-Encoding 响应正文使用的数据压缩格式
Content-Language 响应正文使用的语言

GET方法和POST方法的出现的场景和区别?

GET方法是最常见的请求方法,一般出现于以下几种场景:
1.在浏览器输入URL后点击回车,实际上只要是网址,点击之后都会触发GET请求
2.一些图片的src属性,也会被构造出一个URL

POST方法也比较常见,一般出现于输入用户名和密码之后,点击登录会触发POST请求

GET方法和POST方法的区别?
1.没有本质的区别,可以互相替换
2.语义不同,GET习惯于从服务器获取数据,POST是向服务器提交数据
2.格式不同,GET方法一般没有请求体,而POST方法有,所以GET习惯用URL传递数据,POST习惯用请求体传递数据
3.长度不同:GET方法一般有长度限制,POST请求没有长度限制
4.后续维护不同:GET请求方法返回的内容可以被浏览器缓存起来,而POST方法不会缓存返回的内容
5.读写不同:GET主要是对数据查询,而POST主要对数据进行修改文章来源地址https://www.toymoban.com/news/detail-650087.html

到了这里,关于【Linux】应用层之HTTP协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 应用层协议 HTTP

    我们已经学过 TCP/IP , 已然知道数据能从客户端进程经过路径选择跨网络传送到服务器端进程。 我们还需要知道的是,我们把数据从 A 端传送到 B 端, TCP/IP 解决的是顺丰的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关心应用

    2024年02月06日
    浏览(32)
  • 【网络】应用层——HTTP协议

    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言: 你只管努力,剩下的交给时间! 上篇文章中,本喵带着大家对HTTP有了一个初步的认识,今天就来详细讲解一下这个应用层协议。 如上图所示的 url (网址),里面包含有 / 以及 ? 等字符。 像这样的字符,已经被url当做 特殊

    2024年02月15日
    浏览(26)
  • 【JavaEE】HTTP应用层协议

    HTTP应用层协议 超文本传输协议(Hyper Text [Transfer Protocol](https://baike.baidu.com/item/Transfer Protocol/612755?fromModule=lemma_inlink),HTTP) 是一个简单的请求-响应协议 ,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以

    2024年02月07日
    浏览(43)
  • 网络协议(七)应用层-HTTP

    上篇文章介绍了传输层的TCP、UDP协议,在TCP/IP协议中,下三层(网络接口层,网络层,传输层)都是计算机系统联合其他硬件设备自己在干的事,身为程序员的我们平时对其感知不大。而应用层却是与程序开发息息相关的一层,如HTTP,HTTPS,DNS,FTP,SMTP等等,针对不同应用场

    2024年02月03日
    浏览(31)
  • JavaEE & HTTP应用层协议

    HTTP应用层协议 超文本传输协议(Hyper Text [Transfer Protocol](https://baike.baidu.com/item/Transfer Protocol/612755?fromModule=lemma_inlink),HTTP) 是一个简单的请求-响应协议 ,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以

    2024年02月06日
    浏览(71)
  • 【计算机网络】应用层协议 -- HTTP协议

    协议。网络协议的简称,网络协议是通信计算机双方必须共同遵守的一组约定,比如怎么建立连接,怎么互相识别等。 为了使数据在网络上能够从源头到达目的,网络通信的参与方必须遵守相同的规则,我们称这套相同的规则为协议(protocol),而协议最终都需要通过计算机

    2024年02月15日
    浏览(34)
  • 【应用层】网络基础 -- HTTP协议

    协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的,这里便与表述使用\\\"字符串\\\") 如果我们要传输一些\\\"结构化的数据\\\" 怎么办呢? 那么我们(TCP)在收到一个报文的时候,如何保证你收到了一个完整的报文?

    2024年02月11日
    浏览(33)
  • 计算机网络 - 应用层http协议 - http报文格式介绍(1)

    本篇认识和理解应用层中的http协议,了解抓包工具并进行使用,认识请求报文与响应报文,了解报文中基本键值对意思例如:Set-Cookie, 状态码等,如有错误,请在评论区指正,让我们一起交流,共同进步! 本文开始 ① 根据输入的url,在域名系统DNS中进行解析获取对应的服务

    2024年02月12日
    浏览(35)
  • 【应用层协议】初始Http,fiddler的使用

    Http全称是超文本传输协议,是一种常用的应用层协议。它是Web的基础,用于在客户端和服务器之间传递数据和请求网页资源。 例如 :当我们搜索一个网站时,就相当于向网站的服务器发送一个http请求,当网站的服务器收到请求后就会进行响应。 HTTP 往往是基于传输层的 T

    2024年02月07日
    浏览(27)
  • 【Java】应用层协议HTTP和HTTPS

    HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议. HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于 UDP 实现) 当我们在浏览器中输入一个 搜狗搜索的 “网址” (URL) 时, 浏览器就给搜狗的服务器发送了一个 HTTP 请 求, 搜狗的服

    2024年02月07日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包