【嵌入式软件工程师面经】Socket,TCP,HTTP之间的区别

news2024/11/25 20:44:24

目录:

目录

目录:

一、Socket原理与TCP/IP协议

1.1 Socket概念:

1.2 建立Socket连接:

1.3 SOCKET连接与TCP/IP连接

二、HTTP连接:

2.1 HTTP原理

三、三者的区别和联系


前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能教程

一、Socket原理与TCP/IP协议

1.1 Socket概念:

        套接字是网络上的通信节点,可以看做是为实现TCP/IP网络数据传输而提供的一个接口。在网络中进行数据交换时,套接字扮演着端点的角色,并且封装了通信所需要的若干关键信息:所应用的通信协议类型(比如TCP或UDP),本机的网络地址(即IP地址),运行在本机的程序指定的端口号,以及对应的远程计算机的网络地址和其上相应程序的端口号。这些信息共同定义了网络中的一个通信链路,确保数据能正确从一个端点传输到另一个端点

        当应用层利用传输层进行数据交换时,TCP协议需要处理同时服务多个应用进程的挑战。在这种情况下,多个TCP连接或应用进程可能尝试使用同一个TCP端口来发送数据。为了识别这些不同的通信流并确保它们能够并发处理,操作系统通常提供了一个套接字接口。通过这个套接字接口,应用层和传输层能够区分不同应用进程或网络连接之间的通信,从而实现并发数据传输服务。简而言之,套接字接口允许系统在共享同一端口的同时,精确地管理并区分各个独立的通信会话

1.2 建立Socket连接:

        建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket

        套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认

        1. 服务器监听服务器端的套接字进入一种等待状态,监听网络上的连接请求。这意味着服务器准备好接受来自任何客户端的连接尝试,但尚未与任何特定的客户端建立连接。

        2. 客户端请求客户端的套接字发起一个连接请求,指定服务器端的套接字地址和端口号。这个请求表明客户端希望与服务器建立通信。

        3. 连接确认服务器端在接收到客户端的连接请求后,会确认这个请求。这通常涉及到服务器创建一个新的线程或进程来处理这个连接,并将服务器端套接字的信息发送回客户端。一旦客户端确认了这些信息,双方就正式建立了连接。此时,数据可以在客户端和服务器之间传输。

1.3 SOCKET连接与TCP/IP连接

        在网络通信中,"Socket连接"和"TCP/IP连接"这两个术语经常被使用,但它们指的是不同的概念:

        1. Socket连接:

        Socket(套接字)是一个抽象概念,它提供了一种标准的接口,允许应用程序通过网络进行通信。在操作系统中,Socket通常被实现为一种编程接口,允许开发者创建、使用和销毁网络连接。

        一个Socket连接通常涉及到两个端点:一个在客户端,另一个在服务器端。这两个端点通过网络地址(IP地址和端口号的组合)来标识。

         Socket连接可以基于不同的网络协议,如TCP、UDP等。因此,Socket连接是一个更广泛的概念,它可以使用TCP/IP协议,也可以使用其他协议。

        2. TCP/IP连接:

        TCP/IP(传输控制协议/互联网协议)是一组网络通信协议,它们定义了数据如何在网络中传输和接收。TCP/IP协议族中的TCP协议特别提供了可靠的、面向连接的数据传输服务

        当提到TCP/IP连接时,通常指的是使用TCP协议建立的连接。这种连接是面向连接的,意味着在数据传输之前,客户端和服务器之间需要建立一个连接,并且在数据传输完成后,这个连接会被关闭。

        TCP/IP连接确保了数据的顺序传输和无差错传输,它通过握手过程(三次握手)来建立连接,并通过确认机制来保证数据的可靠传输

        Socket连接是一个更通用的概念,它可以通过TCP/IP协议或其他协议来实现。而TCP/IP连接特指使用TCP协议建立的连接,这种连接提供了可靠的数据传输服务。在实际应用中,Socket编程通常用于创建基于TCP/IP的连接,但Socket的概念并不局限于TCP/IP协议。        

        3.数据传输:

        在数据传输过程中,虽然可以仅依赖传输层的TCP/IP协议来确保数据的可靠传输,但若缺乏应用层的支持,我们将无法理解传输的数据内容。为了确保数据传输的实际意义和有效性,必须结合应用层协议。应用层协议种类繁多,包括HTTP、FTP、TELNET等,同时也可以根据特定需求自定义应用层协议。例如,在Web通信中,我们使用HTTP作为应用层协议来组织和封装文本信息,随后通过TCP/IP作为传输层协议,将这些封装好的HTTP信息发送到网络中,确保信息的正确传递和解析。

      我们提到的socket实际上是一种编程工具,它提供了一个接口(API),开发人员通过这个接口能够在应用程序中实现网络通信的功能。虽然socket常与TCP/IP协议结合使用来进行网络数据传输,但它本身并非一个网络协议。(协议抽象出来就是格式和速度Socket作为一个编程接口,其实是独立于具体网络协议的;它能够支持不同的协议族,例如TCP/IP、IPX/SPX等。因此,Socket编程实际上是利用这个接口来调用底层网络协议栈的功能,它为应用程序提供了创建网络连接、发送数据、接收数据等能力。

二、HTTP连接:

2.1 HTTP原理

        HTTP,全称为超文本传输协议,构成了Web浏览和手机网络访问的核心技术基础,它是一种位于TCP协议之上的应用层协议。HTTP的主要特征在于它采用的是“请求-响应”模式,即每当客户端发起一个请求时,服务器都需要给予相应的回应。而且,这种协议在请求完成并得到响应后会自动断开当前的连接,这个从连接建立到断开的全过程称作“一次会话”。

        1) 在HTTP 1.0协议中,客户端每发起一个请求,都需要与服务器建立一个新的连接。一旦该请求被服务器处理并响应完毕,这个连接就会立即被关闭。

        2) 相比之下,HTTP 1.1协议引入了持久连接的概念,允许在一次连接中处理多个请求。这意味着客户端可以在同一连接上连续发送多个请求,而不必等待前一个请求完全处理完毕后再发送下一个。这种机制支持请求的重叠处理,        提高了效率。

        HTTP通常使用所谓的“短连接”,这意味着每次请求处理完成后连接会自动关闭。为了维持客户端的在线状态,客户端需要频繁地重新建立与服务器的连接。即使在没有数据交换需求的情况下,为了保持连接的活性,客户端通常每隔一定时间就会向服务器发送一个“保活”请求。当服务器接收到这种请求时,它会向客户端发回一个相应的响应以维持连接的持续性。 

        在HTTP协议中,为了确保客户端的在线状态,即使没有实际的数据请求,客户端也会定期向服务器发送“保持活跃”的请求。(属于心跳包的功能)这种请求的目的是让服务器知道客户端仍然在线。服务器在接收到这样的请求后,会发送一个回复,确认它已经注意到客户端的存在。如果服务器在一段时间内没有收到来自客户端的任何请求,它会假设客户端已经离线。同样,如果客户端在一段时间内没有收到服务器的任何响应,它也会判断网络连接可能已经中断。

三、三者的区别和联系

        两个计算机进行网络通信,用TCP/IP协议就够了,就能发数据,双方也能收到各自发来的数据,可是,仅仅收到了数据,无法解析数据,比如http协议就是解决服务器与浏览器之间的一个通信协议数据格式的一个解析。

        浏览器B和server约定的格式是HTTP协议,底层通过TCP来传输数据,socket是程序员能够进行TCP/IP编程的最小单位,对TCP的一个封装。

OSI层级协议举例
7. 应用层HTTP, SMTP, SNMP, FTP, Telnet, SIP, SSH, NFS, RTSP, XMPP, Whois, ENRP
6. 表示层XDR, ASN.1, SMB, AFP, NCP
5. 会话层ASAP, TLS, SSH, ISO 8327/CCITT X.225, RPC, NetBIOS, ASP, Winsock, BSD sockets
4. 传输层TCP, UDP, RTP, SCTP, SPX, ATP, IL
3. 网络层IP, ICMP, IGMP, IPX, BGP, OSPF, RIP, IGRP, EIGRP, ARP, RARP, X.25
2. 数据链路层以太网, 令牌环, HDLC, 帧中继, ISDN, ATM, IEEE 802.11, FDDI, PPP
1. 物理层线路, 无线电, 光纤, 信鸽

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

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

相关文章

光伏电站在线监测智能诊断系统:开启无人值守新纪元

光伏电站在线监测智能诊断系统:开启无人值守新纪元 大家都知道光伏电站是通过汲取着太阳的光芒,为人类提供源源不断的电能源。然而,随着光伏电站规模的扩大和复杂性的增加,如何有效提高发电效率、减少人工维护成本,实…

力扣Hot100-73矩阵置零(标记数组)

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2: 输入&…

3、md5比较绕过

青少年ctf:EasyMD5 1、页面是一个上传页面 2、上传两个txt文件,bp抓包 3、go发现提示要PDF文件 4、将文件类型改成PDF类 5、改文件类型提示MD5,也看出它是将文件里的内容读取比较 6、改成s878926199a和QNKCDZO 猜测后端源码: if…

水下哨兵 智能守护——北斗人员落水报警与快速应急响应方案

随着科技的不断发展,人们对于安全的需求也越来越高,尤其是在水域活动中,落水事故时有发生,给人们的生命和财产安全带来了很大威胁。为了更好地保障水域活动者的安全,北斗短报文技术被广泛应用于落水报警系统中&#xf…

SpringBoot 实现私钥解密 前端的公钥加密内容

目录 一、前端公钥加密 二、后端私钥解密 一、前端公钥加密 Nextjs 前端实现RSA公钥加密 JSEncrypt加载问题解决-CSDN博客 二、后端私钥解密 import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.…

重新夺回控制权!原创始人从Synk回购FossID,致力于解决开源许可合规风险

FossID 于 2022 年 9 月被其原始创始人从 Snyk, Inc. 重新收购。为什么 Snyk 在 2021 年收购了 FossID,又在 2022 年将其分拆,以及为什么 FossID 的创始人(Oskar Swirtun 和 Jon Aldama)后来又回购了该公司? 公司背景 …

word-表格疑难杂症诊治

一、用表格进行排版图片、制作公文头 可以在插入图片时固定列宽 二、表格中的疑难杂症 问题一:表格超过页面,右侧文字看不见 解决:表格窗口-布局-自动调整-根据窗口自动调整表格 问题二:表格底部文字被遮挡 解决:布…

舵机(结构,原理,控制方法)

介绍 舵机,全称为伺服马达(Servo Motor),是一种能够精确控制角度或位置的电动机。它广泛应用于模型制作、机器人技术、工业自动化等领域。舵机通过接收控制信号,将其转化为机械运动,从而实现精确的控制。 …

Day38 贪心算法part05

LC435无重叠区间(未掌握) 思路:先对数组进行排序,找到非重叠的区间的个数,然后区间的总数减去非重叠区间的个数即是需要移除的区间的个数与LC452用最少数量的箭引爆气球类似,但是不同的是[1,2]和[2,3]在此题并不是重叠区间但是在…

Substrate 优秀学员专访|从前端到高级测试工程师,他坚定奔赴 Web3 红海

4 月 29 日,第 14 期「Substrate 区块链开发入门课」课程圆满毕业收官,课程涌现了新一批优秀毕业学员,他们即将带着自己在课程中学习的新知识、新经验,奔赴 Web3 行业各个赛道。在这些学员中,有这样一位开发实力突出、…

JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解

文章目录 1. 查看默认GC2. Serial GC : 串行回收3. ParNew GC:并行回收4. Parallel GC:吞吐量优先 1. 查看默认GC -XX:PrintCommandLineFlags:查看命令行相关参数(包含使用的垃圾收集器)使用命令行指令:ji…

【每日刷题】Day48

【每日刷题】Day48 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 872. 叶子相似的树 - 力扣(LeetCode) 2. 114. 二叉树展开为链表 - 力扣&…

域名解析服务器(DNS)

目录 简介 DNS 域名 域名结构 域名服务器类型 相关指令 实验内容 软件 实验准备 正向解析实验 服务端操作 客户端操作 逆向解析实验 服务端操作 客户端操作 简介 DNS DNS(Domain Name System)时互联网上的一项服务,作为将域名和IP地址互相映射的一个分布式数据…

VUE2 tab切换导航 展示页面内容(父级子级独立)

VUE2 tab切换导航 展示页面内容 父级子级独立 图片示例代码 图片示例 代码 <template><div class"center"><!-- 一级导航 --><div class"menu"><div class"menu_list"><div v-for"item of List" :k…

elementUI使用el-tabs加el-form导致页面崩溃以及el-form里的input事件丢失问题

elementUI使用el-tabs加el-form导致页面崩溃以及el-form里的input事件丢失问题 解决 el-form外面包一层el-row和el-col&#xff0c;el-tabs也包一层 el-fom e-tabs

SpringBootWeb 篇-深入了解 Mybatis 概念、数据库连接池、环境配置和 Lombok 工具包

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文件目录 1.0 Mybatis 概述 2.0 数据库连接池 2.1 数据库连接池的主要作用包括 2.2 如何切换数据库连接池&#xff1f; 3.0 配置环境 4.0 Lombok 工具包 4.1 如何导入到项目中呢…

IDEA 上方添加左右箭头按钮

IDEA 版本&#xff1a;2021.3.3 按钮&#xff1a; 左箭头&#xff08;Back&#xff09;&#xff08;快捷键&#xff1a;Ctrl Alt 左箭头&#xff09; 右箭头&#xff08;Forward&#xff09;&#xff08;快捷键&#xff1a;Ctrl Alt 右箭头&#xff09; 日常写代码中经常…

Predictable MDP Abstraction for Unsupervised Model-Based RL

ICML 2023 paper code Intro 文章提出了一种用于无监督基于模型强化学的方法&#xff0c;称为可预测MDP抽象&#xff08;Predictable MDP Abstraction, PMA&#xff09;。在MBRL中&#xff0c;一个关键部分是能够准确建模环境动力学动态模型。然而&#xff0c;这个预测模型误…

【传知代码】transformer-论文复现

文章目录 概述原理介绍模型架构 核心逻辑嵌入表示层注意力层前馈层残差连接和层归一化编码器和解码器结构 数据处理和模型训练环境配置小结 本文涉及的源码可从transforme该文章下方附件获取 概述 Transformer模型是由谷歌在2017年提出并首先应用于机器翻译的神经网络模型结构…

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…