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

目录:

目录

目录:

一、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. 物理层线路, 无线电, 光纤, 信鸽

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ICRA 2024: NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院等研究人员开发了精细操作的手术机器人

英伟达(NVIDIA)正与学术研究人员合作,研究手术机器人。 NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院和佐治亚理工学院的研究人员开发了 ORBIT-Surgical,一个训练机器人的模拟框架,可以提高手术团…

什么是物联网通信网关?-天拓四方

在信息化、智能化的时代,物联网技术的广泛应用正在逐渐改变我们的生活方式。物联网通过各种传感器和设备,将现实世界与数字世界紧密相连,从而实现智能化、自动化的生活和工作方式。作为物联网生态系统中的重要组成部分,物联网通信…

IDEA连接达梦数据库

1.pom.xml添加达梦数据库依赖&#xff08;会自动下载jar包&#xff09; <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.3.62</version> </dependency> 2.dataSource添加达…

5.22R语言初步学习-1

今天上课讲R语言&#xff0c;要干什么没讲&#xff0c;分析什么&#xff0c;目的是什么没讲。助教基本上就是让我们打开窗口&#xff0c;按要求抄代码指令&#xff0c;代码原理也没讲......再加上最近正好在学概率论与数理统计&#xff0c;肯定是有用的&#xff0c;所以还是学习…

2024.05.24 学习记录

1、面经复习&#xff1a; js基础、知识深度、js垃圾回收 2、代码随想录刷题&#xff1a;动态规划 完全背包 all 3、rosebush 完成 Tabs、Icon、Transition组件

Java基础的语法---String

Java的String类是不可变的&#xff0c;意味着一旦创建&#xff0c;其值就不能被改变。String类提供了丰富的API来操作字符串。 以下是一些常用的方法&#xff1a; 构造方法&#xff1a; 有以下几种常见的&#xff1a; public class stringlearn {public static void main(S…

CTF-web-WP-攻防世界-1

1、view_source&#xff1a;打开开发者工具F12就能看到flag 2、robots (1)、使用目录扫描工具 工具&#xff1a;dirsearch命令&#xff1a;python dirsearch.py -u http://61.147.171.105:55644/ -e * (2)、看到下面有robots.txt文件&#xff0c;在URL后面输入&#xff0c…

mdm 推送证书制作教程

第一步点击获取&#xff0c;点击以后会下载一个zip压缩包 解压以后&#xff1a;会得到四个文件&#xff0c;请务必保存好&#xff0c;待会需要使用 登录apple开发者官网 https://developer.apple.com/account/resources/certificates/list 点击添加证书 找到mdm csr 然后点击…

利用边缘计算网关的工业设备数据采集方案探讨-天拓四方

随着工业4.0时代的到来&#xff0c;工业设备数据采集成为了实现智能制造、提升生产效率的关键环节。传统的数据采集方案往往依赖于中心化的数据处理方式&#xff0c;但这种方式在面对海量数据、实时性要求高的工业场景时&#xff0c;往往显得力不从心。因此&#xff0c;利用边缘…

跟TED演讲学英文:Do schools kill creativity by Sir Ken Robinson

Do schools kill creativity? Link: https://www.ted.com/talks/sir_ken_robinson_do_schools_kill_creativity Speaker: Sir Ken Robinson Date: February 2006 文章目录 Do schools kill creativity?IntroductionVocabularySummaryTranscriptAfterword Introduction Sir…

Win10【无线显示器】安装失败(无法添加)解决中。。。

目录 ■失败现象 ■解决方法 【服务启动1】 【服务确认】 【服务启动2】 参考 ■查看电脑是否支持【Miracast无线投屏功能】 参考2 ■解决方法&#xff08;对我的这台电脑有效&#xff09; ■解决后的效果 ■连接时&#xff0c;出现【无法在此设备上查看受保护内容。…

查看目录或文件的磁盘使用情况

在排查问题过程中&#xff0c;会遇到磁盘占满&#xff0c;需要排查具体哪个文件占用比较大&#xff0c;此时可以使用du 命令 du [选项] [文件或目录...] 常用的选项包括&#xff1a; -h 或 --human-readable&#xff1a;以人类可读的格式&#xff08;如 K、M、G&#xff09;…

<MySQL> 【数据类型】

目录 一、数据类型一览 二、整型 &#xff08;一&#xff09;INT &#xff08;二&#xff09;BIT 三、浮点数 &#xff08;一&#xff09;FLOAT &#xff08;二&#xff09;DECIMAL &#xff08;三&#xff09;如何选择 四、字符 &#xff08;一&#xff09;CHAR &a…

hive初始化失败报错:Error: Duplicate key name ‘PCS_STATS_IDX‘ (state=42000,code=1061)

意思是key name ‘PCS_STATS_IDX’ (state42000,code1061)重复了&#xff0c;问题出在不是第一次初始化&#xff0c;因为我们在hive-site.xml中配置了 javax.jdo.option.ConnectionURL jdbc:mysql://192.168.200.137:3306/metastore?createDatabaseIfNotExisttrue JDBC conne…

Windows DNS 服务器配置转发器

DNS服务器转发器 在企业中由于自身条件的限制&#xff0c; 可能本身的DNS新能并不是很好&#xff0c;这个时候通过使用转发器功能&#xff0c; 将收到的DNS请求转发给另外一台高性能的DNS服务器&#xff0c;让其做后面的迭代查询。 1. 选择DNS服务器&#xff0c; 右击选择属性…

【知识蒸馏】deeplabv3 logit-based 知识蒸馏实战,对剪枝的模型进行蒸馏训练

本文将对【模型剪枝】基于DepGraph(依赖图)完成复杂模型的一键剪枝 文章中剪枝的模型进行蒸馏训练 一、逻辑蒸馏步骤 加载教师模型定义蒸馏loss计算蒸馏loss正常训练 二、代码 1、加载教师模型 教师模型使用未进行剪枝&#xff0c;并且已经训练好的原始模型。 teacher_mod…

Java+Spring+ MySQL + MyCat云HIS有哪些优势?智慧医疗云(HIS)低成本与安全保障的完美结合

JavaSpring MySQL MyCat云HIS有哪些优势&#xff1f;智慧医疗云(HIS)低成本与安全保障的完美结合 云HIS的优点包括节省成本、便捷高效、稳妥安全等。通过云HIS&#xff0c;医疗机构无需在本地建立机房、购买服务器和应用软件&#xff0c;降低了硬件和人力成本。同时&#xff0…

spring-boot-starter-mail 发送带附件的邮件信息

背景 项目使用的事ruoyi低代码开发平台ruoyi中有常见的web端下载excel的方式&#xff0c;但是这种方式是直接把输出流写到一个response中&#xff0c;而不是给一个outputstream&#xff0c;如果是给一个outputstream的话&#xff0c;就可以写入到一个固定的文件中去了 解决思路…

普源精电收购耐数电子——用“钞能力”拿下“量子”?

「量子市界」聚焦量子前沿&#xff0c;揭秘市场动态┃2024年4月30日&#xff0c;普源精电新增“量子科技”概念。 似乎一夜之间&#xff0c;新增“量子科技”概念的上市企业如雨后春笋般登场——普源精电就是其一。普源精电本就持有耐数电子32.26%股权&#xff0c;于4月2日发布…

飞天发布时刻|阿里云可观测全速演进

在数字化转型的浪潮中&#xff0c;云计算的深化应用不断推动着技术边界的扩展&#xff0c;而可观测性作为确保系统稳定运行与高效迭代的关键支撑&#xff0c;正逐渐成为现代云原生架构不可或缺的一部分。5 月 22 日 10:00&#xff0c;阿里云飞天发布时刻&#xff0c;阿里云应用…