一篇文章让你掌握计算网络的HTTP协议!!

HTTP

    • 浏览器的服务原理
    • http协议
    • web
    • TCP/IP协议族
      • TCP/IP协议族分层
        • 应用层
        • 传输层
        • 网络层
        • 链路层
    • 数据包的封装过程
    • HTTP数据传输过程
      • 传输层——TCP三次握手
        • 第一次握手
        • 第二次握手
        • 第三次握手
        • 三次握手的目的
    • DNS域名解析
    • HTTP完整事务处理过程
    • HTTP协议的特点
      • 支持客户/服务器模式
      • 简短快速
      • 灵活
      • 无连接
      • 无状态
    • URI与URL
    • HTTP报文结构分析-请求报文
      • HTTP报文头
        • 通用报文头
          • Connection
        • 请求报文头
          • ACCEPT
          • Accept-Encoding
          • Accept-Language
          • Host
          • Referer
          • User-Agent
        • 响应报文头
        • 实体报文头
          • Content-Type
    • HTTP报文结构分析-响应报文
    • HTTP请求方法剖析
      • GET获取资源
      • POST提交请求
      • PUT请求(不常用)
      • HEAD/DELETE
      • OPTIONS
      • TRACE/CONNECT

浏览器的服务原理

输入一个url地址,浏览器是如何找到对应的页面的呢?

当我们输入一个url地址,输入一个地址进行提交的时候。第一步就是根据域名寻找目标服务器对应的ip地址,这个过程依靠的是一个叫做dns服务器的东西进行解析。然后我们通过dns服务器查询出域名所映射的ip地址。浏览器就会根据我们查询到的ip地址跟我们的web服务器进行通信。而通信的协议就是http协议。
在这里插入图片描述

那浏览器中的界面是如何出现的?

首先web服务器收到请求,自然会到后端来执行,然后我们的执行结果以响应报文的形式回传到浏览器,然后由浏览器进行渲染响应报文。渲染引擎是根据html文件描述对应相对应的数据模型,调用浏览器的各个零部件,从而把网页资源的一些源代码展示为图像结果。

http协议

超文本传输协议(HTTP)是一种属于应用层的面向对象的通信协议,它允许将超文本标记语言(HTML)文档从web服务器传送到客户端的浏览器。简单来说,http就是用来在网页传输html的一种规则。

web

web是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。,是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面。

TCP/IP协议族

HTTP协议是构建在TCP/IP协议之上的,是TCP/IP协议的一个子集。

TCP/IP协议其实是一系列与互联网相关联的协议集合起来的总称。

分层管理是TCP/IP协议的重要特征。

TCP/IP协议族分层

TCP/IP协议族是由一个四层协议组成的系统,这四层分别为:应用层、传输层、网络层、数据链路层。
在这里插入图片描述

应用层

应用层一般是我们编写的应用程序,决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。如:ftp、dns、http等。

传输层

传输层通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。

在传输层有两个性质不同的协议:TCP(面向连接,比较可靠,但是由于需要先建立连接,所以效率比较低)和UDP(无连接,所以效率较高,但是可靠性较低)

网络层

网络层是用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传输给对方。

链路层

链路层用来处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动、NIC(网络适配器)以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。

数据包的封装过程

那么上层协议数据到底如何是转变为下层协议数据的?

应用程序的数据在发布到我们的数据网络之前,会沿着协议站从上往下进行传递。每层协议都将在我们的上层协议的基础之上加上自己的头部信息,链路层还会加上尾部信息,以此来实现所有层的一个数据封装。在这里插入图片描述

HTTP数据传输过程

发送端发送数据时,数据会从上层传输到下层,且每经过一层都会被打上该层的头部信息。而接收端接收数据时,数据会从下层传输到上层,传输前会把下层的头部信息删除

传输层——TCP三次握手

使用TCP协议进行通信的双方必须先建立连接,然后才能开始传输数据。未来确保连接双方可靠性,在双方建立连接时,TCP协议采用了三次握手策略。
在这里插入图片描述

第一次握手

客户端发送带有SYN标志的连接请求报文段&#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/46857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钡铼Modbus TCP耦合器BL200实现现场设备与SCADA无缝对接

前言 深圳钡铼技术推出的Modbus TCP耦合器为SCADA系统与现场设备之间的连接提供了强大而灵活的解决方案,它不仅简化了设备接入的过程,还提升了数据传输的效率和可靠性,是工业自动化项目中不可或缺的关键设备。本文将从Modbus TC、SCADA的简要…

Apache网页优化(企业网站结构部署与优化)

本章结构 一、Apache网页优化 在使用 Apache 作为 Web 服务器的过程中,只有对 Apache 服务器进行适当的优化配置,才能让 Apache 发挥出更好的性能。反过来说,如果 Apache 的配置非常糟糕,Apache可能无法正常为我们服务。因此&…

Java8的新特性

Java8的新特性 一、函数式接口1、Java内置的函数式接口 二、Lambda表达式1、Lambda作用2、语法3、Lambda表达式的六种使用3.1、抽象方法:无参、无返回值3.2、抽象方法:需要传一个参数、无返回值3.3、抽象方法:需要传一个参数(类型…

【iOS】OC类与对象的本质分析

目录 前言clang常用命令对象本质探索属性的本质对象的内存大小isa 指针探究 前言 OC 代码的底层实现都是 C/C代码,OC 的对象都是基于 C/C 的数据结构实现的,实际 OC 对象的本质就是结构体,那到底是一个怎样的结构体呢? clang常用…

IDEA实现SpringBoot项目的自打包自发布自部署

目录 前言 正文 操作背景 自发布 自部署 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ningbo China📫 You can reach…

qt 创建一个左侧边线拖拽的矩形

1.概要 2.代码 2.1 代码第一版 在Qt中&#xff0c;要创建一个可以向左侧拖拽边线的矩形&#xff0c;你需要自定义一个QGraphicsRectItem的子类&#xff0c;并重写其事件处理函数来响应鼠标的拖拽动作。以下是一个简单的实现示例&#xff1a; #include <QApplication>…

设计模式——装饰者模式

设计模式——装饰者模式 1.问题1.1 方案一1.2 方案二 2.装饰者模式2.1 基本介绍2.2 结构2.3 代码实现 3.小结 1.问题 咖啡订单项目&#xff1a; 咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolat…

GB35114控制信令认证流程

GB35114控制信令认证说明&#xff1a; 注册成功后,信令发送方与信令接收方进行交互时,采用基于带密钥的杂凑方式保障信令来源安 全&#xff61;对除REGISTER消息以外的消息做带密钥的杂凑&#xff61;启用Date字段,扩展信令消息头域,在头域中 增加 Note 字 段 (值 为 Digest…

项目经理到底要不要考PMP?

在接待PMP学员中我惊讶地发现&#xff0c;不仅是项目经理&#xff0c;连开发、测试、产品、运营、销售、甚至财务团队的朋友们也都在积极备考。他们考证的原因主要有这几点&#xff1a; 1&#xff0c;职业发展&#xff1a;希望在职业生涯中晋升或转型到项目管理角色的朋友来说…

Spring MVC 全注解开发

1. Spring MVC 全注解开发 文章目录 1. Spring MVC 全注解开发2. web.xml 文件 的替代2.1 Servlet3.0新特性2.2 编写 WebAppInitializer 3. Spring MVC的配置3.1 Spring MVC的配置&#xff1a;开启注解驱动3.2 Spring MVC的配置&#xff1a;视图解析器3.3 Spring MVC的配置&…

SourceTree rebase(变基)的使用

参考资料 【Sourcetree】コミットを一つにまとめる【Sourcetree】リベースする 目录 前提0.1 merge与rebase0.2 merge合并分支0.3 rebase合并分支0.4 &#x1f4a5;超级注意事项&#x1f4a5; 一. 代码已提交&#xff0c;未推送&#xff0c;交互式变基1.1 通过SourceTree操作1…

【NLP实战】基于TextCNN的新闻文本分类

TextCNN文本分类在pytorch中的实现 基于TextCNN和transformers.BertTokenizer的新闻文本分类实现&#xff0c;包括训练、预测、数据加载和准确率评估。 目录 项目代码TextCNN网络结构相关模型仓库准备工作项目调参预测与评估 1.项目代码 https://github.com/NeoTse0622/Te…

怎么选流量套餐最划算呢,这篇文章建议收藏!

据小编了解&#xff0c;现在大多数用户手上都不止一张SIM卡&#xff0c;大部分都是双卡&#xff0c;甚至三卡了&#xff0c;那么&#xff0c;这些卡槽你真的利用对了吗&#xff1f; 这篇文章就告诉大家&#xff0c;如何更好的利用这两个卡槽&#xff0c;让你即省钱&#xff0c…

(02)Unity使用在线AI大模型(调用Python)

目录 一、概要 二、改造Python代码 三、制作Unity场景 一、概要 查看本文需完成&#xff08;01&#xff09;Unity使用在线AI大模型&#xff08;使用百度千帆服务&#xff09;的阅读和实操&#xff0c;本文档接入指南的基础上使用Unity C#调用百度千帆大模型&#xff0c;需要…

十五、C++11常用新特性—Lambda表达式

1.基本 这个好像是很好用的&#xff0c;其有以下有点&#xff1a; 声明式的编程风格&#xff1a;直接匿名定义目标函数或函数对象&#xff0c;不需要额外写一个命名函数或函数对象。简洁&#xff1a;避免了代码膨胀和功能分散&#xff0c;让开发更加高效。在需要的时间和地点…

Sentieon应用教程 | 唯一分子标识符(UMI)

介绍 本文介绍了使用Sentieon工具处理下一代测序数据的方法&#xff0c;同时利用分子条码信息&#xff08;也称为唯一分子索引或UMI&#xff09;。分子条码可以在测序之前在模板DNA分子的末端引入唯一标签&#xff0c;从而大大减少PCR重复和测序错误对变异调用过程的影响。 S…

影视迷必备:揭秘高效影视app开发幕后

影视迷必备的高效影视APP开发幕后涉及多个关键环节&#xff0c;从需求分析、规划设计、技术开发到测试上线&#xff0c;再到后续的运营与维护&#xff0c;每一个环节都至关重要。 一、需求分析 在开发影视APP之前&#xff0c;首要任务是进行深入的需求分析。这一阶段的主要目标…

CSS选择器(1)

以内部样式表编写CSS选择器&#xff0c;其主要编写在<head></head>元素里&#xff0c;通过<style></style>标签来定义内部样式表。 基本语法为&#xff1a; 选择器{ 声明块 } 声明块&#xff1a;是由一对大括号括起来&#xff0c;声明块中是一个一个的…

python-矩阵加法(赛氪OJ)

[题目描述] 输入两个 n 行 m 列的矩阵 A 和 B &#xff0c;输出它们的和 AB。矩阵加法的规则是两个矩阵中对应位置的值进行加和&#xff0c;具体参照样例。输入&#xff1a; 输入共 2⋅n1 行&#xff0c;第一行包含两个整数 n 和 m&#xff0c;表示矩阵的行数和列数 (1≤n,m≤1…