职业生涯知识回顾-基础篇之网络传输协议

2024-03-03 01:52

本文主要是介绍职业生涯知识回顾-基础篇之网络传输协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

协议的本质也就是彼此之间的约定和规则。

HTTP

HTTP 是一个承载于 TCP 协议上的超文本传输协议,明文,无状态。由客户端发起请求,服务器返回响应。

无状态是指协议对于事务处理没有记忆,不会保留之前请求的任何信息,也不会对后续请求进行关联。

为了弥补无状态带来的不便,产生了 Cookie 和 Session 技术。

Cookie

Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向服务器请求资源时携带并发送到服务器上,通常用于告知服务端两个请求是否来自同一浏览器,比如用户的登录状态。

Cookie 一般用于以下方面:

  1. 会话状态管理(用户登录状态等)
  2. 个性化设置(主题、自定义设置等)
  3. 浏览器行为跟踪(跟踪分析用户行为等)

Session

Session 是基于 Cookie 实现的,在服务器进行存储,也是一种会话跟踪技术。

一个 Session 独占一个浏览器,在浏览器关闭前,Session 一直存在。

Session 的使用场景:

  1. 用户身份验证
  2. 购物车功能
  3. 长表单或多步骤操作缓存

HTTP 的三次握手和四次挥手

三次挥手是指建立一个 TCP 连接时,需要客户端和服务器发送 3 个包,来确认双方的接收能力和发送能力是否正常。

四次挥手是客户端先发送释放报文并且停止发送数据,但是还可以接受数据,服务端收到后先发送确认信息,但是可能还有数据在发送,所以要等数据发完再发送释放报文,客户端收到后再次确认。

响应状态码

1xx:提示信息
2xx:成功
3xx:重定向
4xx:客户端报文错误
5xx:服务器有误

HTTPS

HTTPS 是 HTTP 的加密版本,通过 SSL/TLS 协议对数据进行加密和身份验证。HTTP 直接和 TCP 通信,使用 SSL 后就变成先和 SSL 通信,再由 SSL 和 TCP 通信,所谓的 HTTPS,就是身披 SSL 协议这层外壳的 HTTP;

HTTP 和 HTTPS 的区别

  1. HTTP 是明文传输,容易被抓包泄漏信息,HTTPS 通过 CA 证书对数据进行加密;
  2. HTTP 无状态,不进行身份校验,HTTPS 做身份验证;
  3. HTTP 直接和 TCP 通信,HTTPS 通过 SSL 与 TCP 通信;

Socket 和 WebSocket

以前一直以为 WebSocket 就是在 web 端使用的 Socket,所以才叫这个名字,今天重新看资料才发现原来 Socket 和 WebSocket 是两个不同的东西……

具体区别:

  1. 协议不同
    1. Socket 是基于传输层 TCP 协议的,WebSocket 基于 HTTP 协议
    2. Socket 通信通过 Socket 套接字实现, WebSocket 通信通过 HTTP 握手实现
  2. 持久化连接
    1. Socket 通信是短连接,通信完就断开
    2. WebSocket 是长连接
  3. 双向通信
    1. Socket 只支持单向通信,即客户端发送请求,服务器响应
    2. WebSocket 支持双向通行
  4. 效率
    1. Socket 通信效率更高,因为不需要 HTTP 的协议头信息
    2. WebSocket 除了 HTTP 协议头,还需要发送额外的数据,效率会相对较低

虽然高赞回答屁话很多,但是讲的还算透彻:
WebSocket 是什么原理?为什么可以实现持久连接?
WebSocket详解(六):刨根问底WebSocket与Socket的关系

这篇关于职业生涯知识回顾-基础篇之网络传输协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与