【嵌入式软件工程师面经】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. 物理层线路, 无线电, 光纤, 信鸽

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

头歌openGauss-存储过程第1关:创建存储过程

编程要求 1、创建第1个存储过程,并调用; 1)创建存储过程,查询emp表数据; 2)调用存储过程; --创建存储过程,获得计算机(cs)系学生选课情况并将结果写入临时表t…

Excel插入多行VBA实现

我们还可以利用 VBA(Visual Basic for Applications)宏语言,在 Excel 中写一个 VBA 宏来自动插入多行数据。这种方法可以方便我们自定义需要插入的行数和插入位置。下面是编写 VBA 宏的步骤: 1、按下Alt F11快捷键,打…

JavaScript表达式和运算符

表达式 表达式一般由常量、变量、运算符、子表达式构成。最简单的表达式可以是一个简单的值。常量或变量。例:var a10 运算符 运算符一般用符号来表示,也有些使用关键字表示。运算符由3中类型 1.一元运算符:一个运算符能够结合一个操作数&…

忍の摸头之术游戏娱乐源码

本资源提供给大家学习及参考研究借鉴美工之用,请勿用于商业和非法用途,无任何技术支持! 忍の摸头之术游戏娱乐源码,抖音上面非常火的摸头杀画面,看得我眼花缭乱,源码拿去玩吧; 目录说明 忍の摸头之术:域…

物理服务器介绍

物理服务器介绍 概述分类按服务器应用分类按服务器结构分类塔式服务器机架式服务器刀片式服务器机架式服务器与刀片式服务器的对比按处理器个数分类按处理器架构分类 主板概述工作原理物理结构技术参数 CPU概述工作原理指令集相关技术技术参数主流产品 内存概述类型相关技术技术…

【linux特殊符号】

文章目录 学习目标一、Linux的特殊符号1.系统变量2.引号 总结 学习目标 1.学会查看系统变量 2.学会各种引号 3.一、Linux的特殊符号 1.系统变量 windows系统变量:echo %path% linux系统变量:echo $PATH2.引号 " " 双引号,换行…

Vue3路由配置

路由其实就是一组对应关系,将一个路径与一个组件对应起来,当路径发生变化,路由器就可以通过路由规则,找到当前路径对应的组件,并将该组件呈现到页面上 使用路由步骤: 1.终端输入 npm i vue-router 2.在App…

解耦:哪些方法可以用来解耦代码

目录 1.引用 2.为何解耦如此重要 3.如何判断代码是否需要解耦 4.如何给代码解耦 5.思考题 1.引用 前面我们曾经讲到,重构可以分为大型重构和小型重构。小型重构的主要目的是提高代码的可读性,大型重构的主要目的是解耦。本节讲解如何对代码进行解耦…

es问题汇总--待完善

1. 查询某个索引库中数据总量 方式一: CountRequest 鄙人喜欢这种方式 public long getTotalNum(String indexName) throws IOException {CountRequest countRequest new CountRequest(indexName);// 如果需要,你可以在这里添加查询条件// countReques…

MySQL之架构设计与历史(一)

架构设计与历史 概述 和其他数据库系统相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥好的作用,但同时也会带来一点选择上的困难。MySQL并不完美,却足够灵活,能够适应高要求的环境,例如…

【全开源】班级管家微信小程序(FastAdmin+ThinkPHP)

班级管家微信小程序 班级管家微信小程序,作为一款专注于家校沟通、作业管理、成绩发布等方面的工具,凭借其丰富的特色功能和显著的优势,已经成为广大教师、家长和学生日常学习生活中不可或缺的一部分。 一、特色功能 家校沟通便捷&#xff…

高效利用键盘上的 caps lock(大写键)实现中英切换

先看效果 在中文输入环境中,Caps Lock 键经常被忽视,占据了键盘上的黄金位置却很少派上用场。接下来,我将介绍如何将这个闲置的键合理利用,让它变得更加实用。 第一步 设置: 我以五笔为例: 1.输入法默认…

CCF20230301——田地丈量

CCF20230301——田地丈量 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n,a,b;cin>>n>>a>>b;int x1,x2,y1,y2,x,y,sum0;for(int i0;i<n;i){cin>>x1>>y1>>x2>>y2;xmin(x2,a)-max(x1,…

基础3 探索JAVA图形编程桌面:逻辑图形组件实现

在一个宽敞明亮的培训教室里&#xff0c;阳光透过窗户柔和地洒在地上&#xff0c;教室里摆放着整齐的桌椅。卧龙站在讲台上&#xff0c;面带微笑&#xff0c;手里拿着激光笔&#xff0c;他的眼神中充满了热情和期待。他的声音清晰而洪亮&#xff0c;传遍了整个教室&#xff1a;…

k8s 1.28.10 浏览器访问6443查看api,需要证书

添加证书 使用client-certificate-data和client-key-data生成一个p12文件 1.生成client-certificate-data grep client-certificate-data ~/.kube/config | head -n 1 | awk {print $2} | base64 -d >> kubecfg.crt2.生成client-key-data grep client-key-data ~/.kub…

【每日刷题】Day48

【每日刷题】Day48 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 872. 叶子相似的树 - 力扣&#xff08;LeetCode&#xff09; 2. 114. 二叉树展开为链表 - 力扣&…

字符函数:分类函数与转换函数

字符函数 一.字符分类函数二.字符转换函数 在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了方便操作字符和字符串&#xff0c;C语⾔标准库中提供了一系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 一.字符分类函数 C语言中有⼀系列的函数是专门…

前端请求超时截断,axios timeout设置未生效情况记录

问题描述 前端请求超时截断&#xff0c;axios timeout设置未生效情况记录 timeout设置方式&#xff1a; 表现&#xff08;前端超过5min报错500&#xff0c;直接访问接口超过5min能够正常响应&#xff09;&#xff1a; 问题原因 上面的配置设置时间为1000min&#xff0c;明显…

如何一键生成多个文本二维码?excel表格批量生码的方法

现在很多人会将文本信息做成二维码来展示&#xff0c;当有同类型内容生成大量二维码时&#xff0c;可以使用将文本导入excel表格的方式&#xff0c;将表格中的每条数据批量生成二维码&#xff0c;可以有效提升二维码制作的速度和效率。下面就让小编来将具体的操作步骤分享给大家…

人类交互2 听觉处理和语言中枢

人类听觉概述 人类听觉是指通过耳朵接收声音并将其转化为神经信号&#xff0c;从而使我们能够感知和理解声音信息的能力。听觉是人类五种感觉之一&#xff0c;对我们的日常生活和交流至关重要。 听觉是人类交流和沟通的重要工具。通过听觉&#xff0c;我们能够听到他人的语言…