当前位置: 首页 > news >正文

HTTP、TCP、SOCKET三者之间区别和原理

7层网络模型

网络在世界范围内实现互联的标准框架
7层为理想模型,一般实际运用没有7层
详细内容

HTTP属于7层应用层

BSD socket属于5层会话层

TCP/IP属于4成传输层

TCP/IP协议

三次握手

在这里插入图片描述

笔者解析:

  1. 第一次握手:实现第一步需要客户端主动打开,服务器在监听,然后发送SYN=1 seq=x等待服务器确认
  2. 第二次握手:服务器监听到,返回确认信息:SYN=1 ask=x+1,以及发送seq=y和ACK=1等待客户端确认。
  3. 第三次握手:客户端返回确认信息:ACK=1 ask=y+1 seq=x+1。至此客户端与服务器连接上,可以进行数据传输。

四次挥手

在这里插入图片描述

笔者解析

  1. 第一次挥手:发送需确认的请求:FIN=1 seq=u
  2. 第二次挥手:发送接收到服务器请求的信息:ACK=1 seq=v 需确认的请求ack=u+1,然后等待服务器处理完信息,再进行第三次挥手确认才能完成服务器的确认。
  3. 第三次挥手:处理完信息,发送确认接收到请求FIN=1 ack=u+1,以及需要确认的请求ACK=1 和seq=w
  4. 第四次挥手:发送确认接收到请求的信息ACK=1和ask=w+1以及seq=u+1。至此服务器与客户端断开。

总结

客户端发送的需要确认的信息(请求)标志位:SYN和FIN
服务器发送的需要确认的信息(请求)标志位:ACK
两者在请求和确认时有标志数据seq和ask,两者通用:seq为请求携带的标志数据,ask为确认的标志数据,ask=上一个seq+1。

常见问题

如果建立了连接,但客户端出现故障:
服务器每收到一次客户端的请求后都会重新复位保活计时器,时间通常为两个小时,若两个小时还没收到客户端的任何信息、数据,服务器会发送一个探报文段,以后每隔75秒发一次,连发10个探测器报文仍没反应,服务器就认定客户端出了故障,接着就关闭连接。

SCOKET原理概念

socket是通信的基石,是支持TCP/IP协议的网络通讯的基本操作单元,工程师要进行TCP/IP连接通信时通过socket进行操作。
socket相当于TCP/IP或UDP的封装、调用接口

应用层HTTP协议:

Wab联网的基础,也是设计联网常用的协议之一。

SOCKET和TCP/IP让工程师实现网络客户端和服务器的数据传输,但未约定协议,所以不能对数据进行翻译解码,数据不能转换为信息,在经过应用层HTTP后才能完成通讯。

HTTP连接最显著的特点是:客户端每次请求都需要服务器回送响应,在请求结束后,会主动释放连接,从建立连接到释放连接的过程称为“一次连接”,由于HTTP的“一次连接”特性,所以HTTP属于一种“短连接”,要保持客户端程序在线状态,需要不断向服务器发送连接请求,通常做法是即使不需要获取任何数据,客户端也保持一段时间向服务器发送一次“保持连接”的请求,服务器在接收到该请求后对客户端进行返回,表明知道客户端“在线”。若服务器长时间无法收到客户端请求,则认为客户端“下线”,若客户端长时间无法接收到服务器回复,则认为网络断开。

相关文章:

HTTP、TCP、SOCKET三者之间区别和原理

7层网络模型 网络在世界范围内实现互联的标准框架 7层为理想模型,一般实际运用没有7层 详细内容 HTTP属于7层应用层 BSD socket属于5层会话层 TCP/IP属于4成传输层 TCP/IP协议 三次握手 笔者解析: 第一次握手:实现第一步需要客户端主动…...

flutter项目中常用第三方模块

flutter项目中常用第三方模块 持续更新中序言关于第三方模块安装flutter_native_splash使用方式模块配置 flutter_localizations模块配置使用方式 get_storage模块配置使用方式 get模块配置使用方式 持续更新中 序言 本章介绍项目中常用第三方模块,方便快速构建项目…...

Android 混淆使用及其字典混淆(Proguard)

1.使用背景 ProGuard能够通过压缩、优化、混淆、预检等操作,检测并删除未使用的类,字段,方法和属性,分析和优化字节码,使用简短无意义的名称来重命名类,字段和方法。从而使代码更小、更高效、更难进行逆向工程。 Android代码混淆…...

laravel 阿里云短信发送

示例 一、安装 安装:composer require mrgoon/aliyun-sms dev-master 二、打开config/app.php,添加配置代码 1、‘providers’ 配置组下添加 Mrgoon\Aliyunsms\AliyunsmsServiceProvider::class, 2、‘aliases’ 配置组下添加 Aliyunsms>Mrgoon…...

算法----LRU缓存机制

题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返…...

基于springboot+vue的旅游系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

什么是堆栈和队列?如何实现它们?

堆栈(Stack)和队列(Queue)是两种常见的线性数据结构,用于组织和管理数据。它们分别具有不同的特点和用途。本文将详细解释堆栈和队列的概念、特点以及如何实现它们。 堆栈(Stack) 什么是堆栈&…...

编译器自动生成的构造函数

背景 作为一个C小白,最近在看深度解析对象模型的时候,发现一个很久以来的认知错误:编译器会为没有定义构造函数的class生成一个默认构造函数。其实这个观点是错误的,编译器只会在四种情况下生成。 相关知识 一定要明确一个事情…...

SpringSecurity - 认证与授权、自定义失败处理、跨域问题、认证成功/失败处理器

SpringSecurity 文章目录 SpringSecurity一、 简介二、快速入门2.1 maven坐标2.2 访问请求 三、认证与授权3.1 认证3.1.1 登录检验流程3.1.2 SpringSecurity 完整流程3.1.3 认证流程详解3.1.4 校验3.1.5 要解决的问题3.1.6 准备工作3.1.7 实现3.1.7.1 数据库校验用户3.1.7.1.1 …...

自定义映射resultMap

自定义映射resultMap 自定义映射resultMap 自定义映射resultMapresultMap处理字段和属性的映射关系字段名和属性名不一致的情况,如何处理映射关系?1、为查询的字段设置别名,和属性名保持一致2、核心配置文件(mybatis-config.xml)中设置一个全局配置3、使…...

Android修行手册 - Android Studio去掉方法参数提示、变量类型提示、方法引用Usage提示

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…...

【车载开发系列】ECU Application Software程序刷新步骤

【车载开发系列】ECU Application Software程序刷新步骤 ECU Application Software程序刷新步骤 【车载开发系列】ECU Application Software程序刷新步骤一. Boot Software(引导软件)1)boot manager(启动管理器)2&…...

inject和provide的使用

官网介绍用法 V2.2.0 新增的方法 类型 provide&#xff1a;Object | () > Object inject&#xff1a;Array<string> | { [key: string]: string | Symbol | Object }介绍 这对选项需要一起使用&#xff0c;以允许一个祖先组件向其所有子孙后代注入一个依赖&#xff…...

2023年中国研究生数学建模竞赛D题

一、背景介绍 2021年9月22日&#xff0c;中共中央国务院正式发布《关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》&#xff08;以下简称《意见》&#xff09;&#xff0c;明确了中国双碳行动的顶层设计。 我国是世界上最大的发展中国家&#xff0c;为实现中华民…...

Unity制作曲线进度条

unity制作曲线进度条 大家好&#xff0c;我是阿赵。   在使用Unity引擎做进度条的时候&#xff0c;有时会遇到一个问题&#xff0c;如果进度条不是简单的横向、纵向或者圆形&#xff0c;而是任意的不规则形状&#xff0c;那该怎么办呢&#xff1f;比如这样的&#xff1a; 一…...

面试:C++ 11 智能指针

查询内存泄露方法 啥是内存泄露 内存泄露在维基百科中的解释如下&#xff1a; 在计算机科学中&#xff0c;内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&…...

设计模式——3. 抽象工厂模式

1. 说明 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建一组相关或依赖对象的方式,而无需指定它们的具体类。抽象工厂模式是工厂模式的扩展,它关注于创建一组相关的对象家族,而不仅仅是一个单一的对象。 抽象工厂模式通常涉及以下几个角…...

vscode 无法使用 compilerPath“D:.../bin/arm-none-eabi-g++.exe”解析配置。

最近在使用vscode搭建ODrive STM32开发环境,依次安装了以下内容: 1.Python3: 用于运行工程构建脚本 2.ST-Link/V2 Drivers: STLink/v2编程器的驱动 3.Visual Studio Code: 轻量级但功能强大的源代码编辑器 …...

Vue.js入门模板语法[上] 及Vue.js实现购物车---详细讲解

前言 前面我们学习了Vue的基础入门&#xff0c;接下来我们学习有关Vue的模板语法&#xff0c;学习Vue语法能提高我们的前端开发效率 Vue.js 使用了基于 HTML 的模板语法&#xff0c;允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML &a…...

windows下gvim的配置

一、vim配置文件 "查看自己的vimrc所在的目录 "在命令模式下 :echo $MYVIMRC"打开自己的vimrc文件 "在命令模式下 :e $MYVIMRC 二、排版 "查看自己当前的字体及大小 "在命令模式下 :set guifont?"设置默认的字体为仿宋_GB2312&#xff…...

基于复旦微的FMQL45T900全国产化ARM开发开发套件(核心板+底板)

TES745D是我司自主研制的一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板&#xff08;模块&#xff09;。该核心板将复旦微的FMQL45T900&#xff08;与XILINX的XC7Z045-2FFG900I兼容&#xff09;的最小系统集成在了一个87*117mm的核心板上&#xff0c;可以作为一个核心模…...

Leetcode Top100(23)环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索…...

线性代数基础-行列式

一、行列式之前的概念 1.全排列&#xff1a; 把n个不同的元素排成一列&#xff0c;称为n个元素的全排列&#xff0c;简称排列 &#xff08;实际上就是我们所说的排列组合&#xff0c;符号是A&#xff0c;arrange&#xff09; 2.标准序列&#xff1a; 前一项均小于后一项的序列…...

RT-Thread(学习)

RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知识产权。经过16个年头的沉淀&#xff0c;伴随着物联网的兴起&#xff0c;它正演变成一个功能强大、组件丰富的物联网操作系统。 RT-Thread概述 RT-Threa…...

【MySQL】 MySQL 死锁问题分析优化器特性及优化方案

MySQL 死锁问题分析优化器特性及解决方案 MySQL 锁机制介绍 1、MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表级锁&#xff0c;默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级…...

【C++面向对象侯捷】8.栈,堆和内存管理

文章目录 栈&#xff0c;堆stack object的生命周期static local object的生命周期global object的生命周期heap objects 的生命期new&#xff1a;先分配memory&#xff0c;再调用构造函数delete: 先调用析构函数&#xff0c;再释放 memory动态分配所得的内存块&#xff0c;in V…...

在比特币上使用可检索性证明支付存储费用

我们为用户开发了一种为云存储付费的新方法。 与亚马逊的 S3 等传统云存储相比&#xff0c;用户不必信任服务器。 我们使用比特币智能合约来确保支付取决于服务器的可检索性证明 (PoR)&#xff0c;该证明只能在数据仍然可用且需要时可以检索的情况下生成。 可检索性证明 (PoR)…...

使用SSE(Server-Sent Events)实现服务端给客户端发消息

首先是客户端&#xff0c;看着比较简单。但实际应用中可能要比这复杂&#xff0c;因为默认sse只支持get请求&#xff0c;而且没法携带header。所以如果默认的方法达不到需求的话可能需要额外实现&#xff0c;当然也可以引用第三方库&#xff0c;比如rangermauve/fetch-event-so…...

【Redis】使用rpm包安装redis

背景说明 公司环境处于内网&#xff0c;某同事需要安装redis&#xff0c;如果使用通过源码编译安装redis&#xff0c;很多编译工具如gcc就需要先安装&#xff0c;但处于内网安装起来不太方便&#xff0c;当然也不是不可以。我们此处就选用通过redis的rpm包进行安装。 rpm包查…...

论文阅读-Group-based Fraud Detection Network on e-Commerce Platforms

目录 摘要 1 Introduction 2 BACKGROUND AND RELATED WORK 2.1 Preliminaries 2.2 Related Works 3 MODEL 3.1 Structural Feature Initialization 3.2 Fraudster Community Detection 3.3 Training Objective 4 EXPERIMENT 4.1 Experimental Setup 4.2 Prediction …...

重庆市住房和城乡建设部网站/深圳正规seo

1.什么是编码 &#xff0c;为什么要编码 先前从没有思考这么深入的问题&#xff0c;觉得一切理所当然&#xff0c;直到有一天java的乱码让我跪了&#xff0c;他不在听我的话&#xff0c;到处是乱码&#xff0c;这次我不打算放过它&#xff0c;我要收拾了它。 大家都知道&#x…...

专业建站流程/营销模式和营销策略

最近学习51单片机&#xff0c;使用Keil进行汇编编写代码时很多关键字没有高亮显示很不习惯&#xff0c;本身Keil鼠标选择字段操作就让人很无语&#xff0c;因此编辑ASM汇编文件都是用自己比较喜欢的EditPlus。EditPlus支持强大的、可自定义的语法高亮功能&#xff0c;可以创建自…...

wordpress搭建多少钱/上海专业seo服务公司

。。。。。。。。...

上海市建设安全协会网站特种工/b站推广网站入口mmm

zipinfo在不解压的情况下&#xff0c;获取zip压缩文件的的详细信息。zipinfo列出了ZIP档案中有关文件的技术信息&#xff0c;最常见的是在MS-DOS系统上。这些信息包括文件访问权限、加密状态、压缩类型、版本和操作系统或压缩程序的文件系统等。默认的行为(没有选项)是列出存档…...

wordpress hooks/优化关键词的方法正确的是

【实例简介】android 校园教务管理系统&#xff0c;内有课程表&#xff0c;选课等等一系列功能【实例截图】【核心代码】Android教务选课成绩管理系统└── 双鱼林安卓Android教务选课成绩管理系统├── AndroidManifest.xml├── libs│ └── android-support-v4.jar├…...

网上下载的asp网站源码 放在本地如何做测试/友链互换平台推荐

css text-indent属性用于规定文本块中首行文本的缩进&#xff1b;语法为text-indent : length | % 。该属性允许使用负值&#xff1b;如果使用负值&#xff0c;那么首行会被缩进到左边。css text-indent属性怎么用&#xff1f;text-indent 属性规定文本块中首行文本的缩进。语法…...