【后端面经-计算机基础】HTTP和TCP的区别

news2024/11/24 15:02:55

【后端面经-计算机基础】HTTP和TCP的区别

文章目录

  • 【后端面经-计算机基础】HTTP和TCP的区别
    • 1. OSI七层模型和相关协议
    • 2. TCP协议
      • 2.1 特点:
      • 2.2 报文格式
      • 2.3 三次握手和四次挥手
    • 3. HTTP协议
      • 3.1 特点
      • 3.2 报文格式
      • 3.2 https和http
    • 4. HTTP vs TCP
    • 5. 面试模拟
    • 参考资料

1. OSI七层模型和相关协议

在计算机网络的学习中,OSI七层结构是一个很重要的概念。
七层模型从上到下如下所示:

  • 应用层:负责应用之间的通信,处理请求和响应的具体格式
  • 表示层:对于数据格式进行处理
  • 会话层:负责建立和断开通信连接,
  • 传输层:负责建立端口之间的连接,规范数据传输
  • 网络层:负责主机之间的传输和寻路
  • 数据链路层:负责传输数据帧,进行差错检测
  • 物理层:负责将数据和电信号进行转化

OSI七层模型的每一层有对应的协议和规范,如图所示:
在这里插入图片描述

2. TCP协议

TCP(Transmission Control Protocol)是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。

2.1 特点:

TCP是面向连接、可靠、基于字节流的传输协议。
传输层的另一个协议是UDP(User Datagram Protocol),
UDP是面向无连接、不可靠、基于数据报的传输协议。
TCP和UDP的区别如下表所示:
在这里插入图片描述

2.2 报文格式

TCP协议的报文格式如图所示:
在这里插入图片描述

对各字段的解释如下表所示:
在这里插入图片描述

2.3 三次握手和四次挥手

TCP的连接建立和释放是一个很重要的过程,其实重点在于三点:

  • 对连接建立和释放需要多次确认的理解
  • 相关标志位的数值
  • 端到端主机的状态改变

各位可以参考如下博客学习:
“三次握手,四次挥手”你真的懂吗?

3. HTTP协议

HTTP(HyperText Transfer Protocol)是超文本传输协议,是基于TCP协议的一个应用层协议。

3.1 特点

  • 短连接:基于TCP面向连接的特性,每次请求都需要建立连接,请求结束后断开连接。想要保持长连接,可在连接有效期内定期发送请求。
  • 无状态:由于是短连接,请求响应之后直接断开连接,因此不会进行状态存储,下次连接需要重新输入数据信息。
  • 通信使用明文:HTTP协议的通信内容都是明文,不加密,因此不安全。

http的一次连接过程如下:

  • 客户端发送请求,连接建立;
  • 服务端响应请求,返回数据;
  • 连接断开

3.2 报文格式

  1. 请求报文
    简单来说,请求报文分为头部(header)和实体(body),两者之间由一行空格相连,其中头部包含请求行和头部字段。报文格式如下图所示:
    在这里插入图片描述

其中,请求行部分可以细分为如下三个部分:
在这里插入图片描述

  • 方法字段(Method)包括常见的GETPOST,如下是对常见方法的介绍:

  • 在这里插入图片描述

  • URL字段指出了请求的目标地址。

  • 版本字段(Version)指出了HTTP协议的版本,常见的有1.01.12.0,如下是对http各个版本的解释:
    在这里插入图片描述

如下是一个请求行的实例:

GET /index.html HTTP/1.1

  1. 响应报文
    和请求报文类似,响应报文也分为头部和实体,两者之间由一行空格相连,其中头部包含状态行和头部字段。报文格式如下图所示:
    在这里插入图片描述

其中,状态行部分可以细分为如下三个部分:
在这里插入图片描述

  • 版本号(Version)在请求报文的介绍中提到过;

  • 状态码(Status Code)指出了请求的处理结果,常见的有200404500,如下是常见状态码和其含义:
    在这里插入图片描述
    更详细的信息可参考此篇博客

  • 原因字段(Reason Phrase)是对状态码的简单解释。

如下是一个状态行的实例:

HTTP/1.1 200 OK

3.2 https和http

HTTP: 超文本传输协议,是一种通信协议,用于从WWW服务器传输超文本到本地浏览器的传送协议。
HTTPS: 是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

4. HTTP vs TCP

两种的区别见下表所示:
在这里插入图片描述

5. 面试模拟

Q:HTTP和TCP了解吗?有什么关系?
A:http是应用层的超文本数据传输协议,tcp是传输层的传输控制协议。
http是基于tcp实现的,在请求的时候会建立tcp连接,但是http的连接不同于tcp的长时连接,是一种短连接。

Q:看过TCP结构吗?用什么看的?
A:看过,tcp首部包括20~60字节,包含源端口、目标端口、数据序号、确认序号、首部长度、指示位、滑动窗口大小、校验和、选项字段。
可通过wireshark抓包查看。

Q:HTTPS是什么?ssl属于哪一层协议?
A:https是基于http的超文本传输安全协议,在http的基础上增加了加密通信、身份认证等功能,从而增强传输的安全性。
SSL是传输层和应用层之间的协议。主要负责对数据通信进行加密等安全支撑。

参考资料

  1. HTTP协议 与 TCP协议 的区别,作为web程序员必须要懂
  2. 一文走进 HTTP 与 TCP 协议
  3. 面试:HTTP协议与TCP协议的区别和联系
  4. TCP报文格式
  5. HTTP 报文格式简介
  6. HTTP方法
  7. HTTP 状态码
  8. HTTP 与 HTTPS 的区别

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

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

相关文章

全网最牛,python接口自动化测试-接口sign签名(实战撸码)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般公司对外的接…

groupkfold 报错:raise keyerror(f“{not foud} not in index“)

【1】使用groupkfold 的时候出现以上报错:索引错误,groups的索引和x y 的不对应 【2】源代码: 【3】进行修改: 可以成功索引!!!

tomcat下上传html

html 最基本结构服务器xshelltomcat 下载是否可以访问到服务器上传html html 最基本结构 .html 后缀名 <!DOCTYPE HTML> <html><head><meta charset"utf-8"> <title>2306</title></head><body>大家好&#xff01;…

C++图形开发(7):能进行抛物线运动且触墙能反弹的小球

今天来实现一下触墙能反弹的小球、 我们之前所实现的都只是小球的上下&#xff0c;也就是y轴方向的运动&#xff08;详见&#xff1a;C图形开发&#xff08;6&#xff09;&#xff1a;落下后能弹起的小球&#xff09;&#xff0c;那么要使小球能够呈抛物线状运动&#xff0c;我…

Failed to start connector [Connector[HTTP/1.1-8080]]

1、解决Web server failed to start. Port 8080 was already in use 2、SpringBoot启动报错:“Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.” 3、Failed to start end point associated with Proto…

015-从零搭建微服务-远程调用(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;https://gitee.com/csps/mingyue 源码地址&#xff08;前端&#xff09;&#xff1a;https://gitee.com/csps…

如何利用Spine制作简单的2D骨骼动画

在2D游戏中&#xff0c;我们经常看到各种各样的角色动画。动画能给游戏带来生机和灵气。创作一段美妙的动画&#xff0c;不仅需要强大的软件工具&#xff0c;更需要一套完善的工作流程。 Spine就是一款针对游戏开发的2D骨骼动画编辑工具。Spine 可以提供更高效和简洁 的工作流…

【STM32智能车】寻迹模块

【STM32智能车】寻迹模块 寻迹模块 传感器原理接线说明 智能车寻迹是一种机器人控制技术&#xff0c;它通过使用传感器和程序算法&#xff0c;使汽车能够在行驶过程中识别出路径上的黑线&#xff0c;并沿着该线路行驶。 智能车寻迹常用于竞赛或教育用途&#xff0c;可以提高学生…

【学习心得】Virtual Studio Code下载安装与简单设置

一、下载 1、vs code 官网&#xff1a;https://code.visualstudio.com/ 二、安装 1、双击安装文件开始安装。 2、同意协议开始下一步。 3、选择你自己想要安装的路径。 4、勾选这三个&#xff0c;方便右键在vs code 中打开文件或文件夹。 5、安装步骤几乎没有坑&#xff0c;直…

探究低代码开发平台的价值所在,为企业带来哪些优势?

随着数字化转型的加速&#xff0c;企业和组织需要以更快的速度交付新的软件应用程序&#xff0c;以保持竞争力和创新性。然而&#xff0c;传统的软件开发模式已经不再适用于当前的快节奏商业环境。在这种背景下&#xff0c;低代码开发平台日益成为软件开发的热门趋势&#xff0…

【JavaWeb基础】三层架构

一、知识点整理 三层架构的含义 Controller: 控制层,接收前端发送的请求,对请求进行处理,并响应数据。 Service:业务逻辑层,处理具体的业务逻辑。 Dao(Data Access Object): 数据访问层(持久层),负责数据访问操作,包括数据的增、删、改、查。 二、代码实现 原EmpController.…

spring整合logBack日志框架:

1. SLF4J简介 SLF4J&#xff08;Simple Logging Facade for Java&#xff09;是一种日志规范&#xff0c;类似于JDBC&#xff0c;我们常用的日志log4j、logback等都实现了这个规范&#xff0c;所以我们可以直接使用SLF4J的规范来使用日志。 2. logback和log4j 它们是同一个作…

【hadoop】大数据的几个基本概念

大数据的几个基本概念 数据仓库的基本概念数据仓库与大数据OLTP与OLAP 数据仓库的基本概念 数据仓库&#xff0c;英文名称为Data Warehouse&#xff0c;可简写为DW或DWH。数据仓库&#xff0c;是为企业所有级别的决策制定过程&#xff0c;提供所有类型数据支持的战略集合。 本…

堆排序算法及其稳定性分析

堆排序算法及其稳定性分析 什么是堆排序&#xff1f; 堆排序是利用数据结构堆而设计的一种排序算法。 堆分为两种&#xff0c;大顶堆和小顶堆。 所谓大顶堆就是每个节点的值都大于或者等于其左右孩子节点的值。 小顶堆则是相反的&#xff0c;每个节点的值都小于或者等于其…

超全整理,接口测试实战详细(实例)一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、接口测试范围 …

Git无法上传删除 Commit里面有大文件

1.Bug描述 因为在一次提交中不小心把一个打包的aab文件弄到commit文件里了&#xff0c;于是在上传的时候push rejected 了。 因为GitHub的文件上限是100M&#xff0c;但是打的包太大了&#xff0c;有170M&#xff0c;所以是不能上传的&#xff0c;但是又是已经在Commit历史中了…

rsync增量备份工具

目录 一、概述 二、配置 rsync 源服务器 1.查看rsync配置文件位置 2.修改 /etc/rsync.conf 配置文件 3.为备份账户创建数据文件 4.保证所有用户对源目录都有读取权限 5.启动 rsync 服务 三、发起端 1.rsync命令 2.将指定的资源远程同步到本地/opt 目录下进行备份。 3.将…

【Docker】docker安装nginx及端口映射相关配置

前言&#xff1a; 最近&#xff0c;在一台新服务器上准备运行一个前端vue项目&#xff0c;服务器上安装了docker&#xff0c;想要尝试试通过docker安装nginx的并运行项目&#xff0c;以下是操作步骤 操作步骤&#xff1a; 一、安装nginx 1、拉取镜像 从docker仓库里拉取最…

unaipp打包app启动界面配置

1、配置代码 2、IOS端启动界面demo参考 iOS平台自定义storyboard启动界面 - DCloud问答

面试官当面夸奖了我,反手却把我挂了,这是什么套路?

最近几个朋友找我聊天&#xff0c;给我讲述了面试过程中遇到的一些不太理解的事情。我有个朋友作为一个技术面试官&#xff0c;今天来分享 10 个面试相关的套路。 1.自我介绍 自我介绍是一个重要的开始&#xff0c;好的开始是成功的一半。不需要太多花里胡哨的东西&#xff0…