99.套接字-Socket网络编程2 (网络协议)

目录

1.TCP协议

2.UDP协议 

3.IP协议 

4.以太网帧协议 

5.HTTP协议 


       网络协议就是一组网络规则的集合,是我们共同遵守的约定或标准。常见的协议:
◼ HTTP:超文本传输协议
◼ FTP: 文件传输协议
◼ TELNET : 是 internet 远程登陆服务的标准协议。
◼ TCP : 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可
靠的、基于字节流的传输层通信协议
◼ UDP :用户数据报协议
◼ IP : Internet Protocol 简称 IP,又译为网际协议或互联网协议
◼ ICMP :因特网控制报文协议
◼ ARP : 地址解析协议,是根据 IP 地址获取 MAC 地址的协议
◼ RARP : 逆地址解析协议

以下是一些常见的网络协议的具体解释:

1.TCP协议

        TCP是一种面向连接的、可靠的、基于字节流的传输层协议。它是互联网协议套件(TCP/IP)的核心之一,用于在网络上可靠地传输数据。以下是TCP协议的一些关键特点:

  1. 面向连接: 在进行数据传输之前,需要在通信的两端建立连接。这是通过三次握手来实现的。

  2. 可靠性: TCP提供可靠的数据传输。它使用序列号和确认机制来确保数据的正确性、完整性和顺序性。如果数据包丢失或损坏,TCP会自动进行重传。

  3. 流控制: TCP使用滑动窗口机制进行流量控制。接收方可以通知发送方其可接受的数据量,以避免因接收方处理不及时而导致的数据丢失。

  4. 拥塞控制: TCP通过拥塞窗口和慢启动等算法来处理网络拥塞。当网络出现拥塞时,TCP会降低发送速率,以避免网络的过度负荷。

  5. 全双工通信: TCP支持全双工通信,即数据可以在两个方向上同时传输。每个TCP连接都是双向的,允许在同一连接上同时进行发送和接收。

  6. 面向字节流: TCP将数据视为字节流而不是消息。它不关心应用层的消息边界,而是负责将字节流传输到目的地。

  7. 可靠的错误检测和纠正: TCP使用校验和机制来检测传输中的错误,并通过重新发送丢失或损坏的数据来进行纠正。

  8. 连接的释放: 在数据传输完成后,通过四次挥手来释放连接。这是通过发送FIN(Finish)标志来实现的。

TCP协议适用于对数据可靠性和顺序性有较高要求的应用,例如文件传输、电子邮件传输和Web浏览。

2.UDP协议 

        UDP是一种无连接的、不可靠的传输层协议。与TCP不同,UDP不会在通信前建立连接,也不保证数据的可靠传输。它主要用于那些对实时性要求较高、能够容忍一定数据丢失的应用。

以下是UDP协议的一些关键特点

  1. 无连接: UDP是无连接的,通信双方在传输数据前不需要建立连接,也不会维护连接状态。

  2. 不可靠性: UDP不提供数据的可靠传输。它不使用像TCP那样的确认和重传机制,因此可能会导致数据包的丢失或乱序。

  3. 面向数据报: UDP是面向数据报的,每个UDP数据包(数据报)都是一个独立的消息单元,与其他数据包无关。每个数据包都包含了完整的目标地址信息。

  4. 较低的开销: 由于不需要建立连接、不需要进行可靠性保证,UDP的开销相对较低,传输速度较快。

  5. 适用于广播和多播: UDP支持广播(一对多)和多播(一对多)通信方式,适用于一次向多个接收者发送相同数据的场景。

  6. 无流量控制和拥塞控制: 与TCP不同,UDP不提供流量控制和拥塞控制。这意味着UDP会尽力发送数据,不会根据网络状况进行调整。

  7. 应用场景: 适用于对实时性要求较高的应用,例如音视频流、在线游戏等。在这些应用中,实时性比数据的可靠性更为重要。

由于UDP的不可靠性,它通常用于那些对数据传输延迟较为敏感,且能够容忍一定数据丢失的场景。

3.IP协议 

        IP是互联网上数据通信的基础协议之一,它负责在网络中寻址和路由数据包。IP协议定义了在网络上如何寻址和路由数据,使得数据能够从源主机传输到目标主机。

关键特点和概念包括:

  1. IP地址: 每个连接到互联网的设备都有一个唯一的IP地址,用于标识该设备在网络上的位置。IPv4和IPv6是两个常见的IP地址版本。

  2. 数据包: IP负责将数据分割成小的数据包,每个包包含一部分原始数据、源和目标IP地址以及其他控制信息。

  3. 路由: IP协议通过路由来确定数据包从源到目标的路径。路由器是负责将数据包从一个网络节点传输到另一个网络节点的设备。

  4. 数据报: IP数据包也称为数据报。每个数据报都是一个独立的、自包含的单元,可以独立地在网络上传输。

  5. IPv4和IPv6: IPv4是较早的IP地址版本,使用32位地址,已经耗尽。IPv6是新一代的IP地址版本,使用128位地址,提供了更多的地址空间。

  6. 分组交换: IP是一个分组交换协议,意味着它将数据分割成小的块,并在网络上逐个发送这些块。这与电路交换不同,电路交换需要在通信开始之前建立一个物理连接。

  7. 面向无连接: IP是无连接的协议,每个数据包在网络上独立传输,没有事先建立的连接。

IP协议通常与其他协议一起使用,最常见的是与TCP(传输控制协议)和UDP(用户数据报协议)结合使用,形成TCP/IP协议栈,以提供可靠的、面向连接的或无连接的通信。

4.以太网帧协议 

        以太网帧是在以太网网络上传输数据的基本单位。以太网是一种常见的局域网(LAN)技术,它使用了一种特定的帧格式来封装和传输数据。

以下是以太网帧协议的主要特点:

  1. Preamble(前导码): 以太网帧以一个7字节的前导码开始,用于同步接收方的时钟。

  2. Start Frame Delimiter(起始帧定界符): 紧跟在前导码后,用于标识数据帧的开始。

  3. 目标MAC地址(Destination MAC Address): 6字节,指示数据帧的目标设备的物理地址。

  4. 源MAC地址(Source MAC Address): 6字节,指示数据帧的发送设备的物理地址。

  5. Type或Length字段: 如果值大于0x05DC,则表示数据帧的类型,表明上层协议是什么(例如,IPv4、IPv6等)。如果小于0x05DC,则表示数据帧的长度。

  6. 数据(Payload): 实际的数据部分,长度最小46字节,最大1500字节。

  7. FCS(Frame Check Sequence,帧检验序列): 4字节,用于帧的错误检测。

  8. 帧的最小和最大长度: 以太网帧的最小长度为64字节,如果数据部分不足46字节,则需要填充。最大长度为1518字节(不包括前导码和帧检验序列)。

  9. CSMA/CD(Carrier Sense Multiple Access with Collision Detection): 以太网使用CSMA/CD协议来处理多个设备共享同一链路时的冲突。设备在发送前会检测信道是否空闲,如果发现冲突,设备会等待一段随机时间后重新发送。

以太网帧协议是在以太网技术中用于在网络中传输数据的标准格式。在局域网中,设备通过以太网帧进行通信,这种协议是现代网络中最为常见的之一。

5.HTTP协议 

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议。它是互联网上应用最为广泛的协议之一,通常用于在Web浏览器和Web服务器之间传递文本、图像、音频、视频等资源。

以下是HTTP协议的一些关键特点:

  1. 无连接: HTTP是无连接的协议,每个请求/响应都需要在建立连接后独立传输。连接建立后,请求被发送,然后服务器响应,之后立即关闭连接。这样的机制降低了服务器的负载,但也增加了每个请求的延迟。

  2. 无状态: HTTP是无状态的协议,每个请求都是独立的,服务器不会保留任何关于客户端状态的信息。这导致了每个请求都需要携带足够的信息,以便服务器能够理解和处理请求。

  3. 请求方法: HTTP定义了多种请求方法,其中最常见的是GET和POST。GET用于请求获取特定资源,而POST用于提交数据给指定的资源,例如提交表单数据。

  4. 状态码: 服务器在响应中返回一个状态码,用于指示请求的成功、失败或其他状态。常见的状态码有200(OK,请求成功)、404(Not Found,未找到请求的资源)、500(Internal Server Error,服务器内部错误)等。

  5. 头部信息: HTTP消息包括请求头和响应头,这些头部包含了关于消息的元信息,如内容类型、长度、请求的来源等。

  6. URL(Uniform Resource Locator): HTTP使用URL来定位和标识网络上的资源。URL由协议、主机名、端口号、路径等组成。

  7. Cookie和Session: HTTP协议本身是无状态的,为了实现跨请求的状态保持,引入了Cookie和Session机制。服务器可以在响应头中设置Cookie,客户端将其保存并在后续请求中发送,以维护用户状态。

  8. 安全性: HTTP本身是不安全的,数据传输是明文的。为了增加安全性,常常使用HTTPS(HTTP Secure),它在HTTP上层加入了TLS/SSL协议,实现了加密和身份验证。

HTTP协议是现代互联网中最为基础和常用的协议之一,支撑了Web应用的开发和数据传输。

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

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

相关文章

webpack优化打包速度

webpack打包速度太慢 优化 1.多线程打包 js压缩和loader 2.优化启动速度 hard-source-webpack-plugin 3.删除无用的 分析类插件 4.DllPlugin通道打包 1.webpack多线程打包 loader loader 使用 thread-loader 将他放置你要使用的loader前面就行,不过这个lorder例如s…

基于51单片机的数字电压表设计

1.设计任务 利用AT89C51单片机为核心控制元件,设计一个简易的数字电压表,设计的系统实用性强、操作简单,实现了智能化、数字化。 基本要求:利用单片机AT89C51设计数字电压表,能对模拟信号进行检测,能将所…

STC15-串口通信打印输出数据printf函数与sprintf函数

STC15-串口通信打印输出数据printf函数与sprintf函数 1.打印输出数据有二种printf函数与sprintf函数,不同之处有:(1)函数的声明不同(2)函数的功能不同(3)用法举例 该问题引用百度知道…

2的幂运算

2的幂 描述 : 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 题目 : LeetCode 231.2的幂 : 231. 2 的幂 分…

SpringBoot中的部分注解

1.SpringBoot/spring SpringBootApplication: 包含Configuration、EnableAutoConfiguration、ComponentScan通常用在主类上; Repository: 用于标注数据访问组件,即DAO组件; Service: 用于标注业务层组件; RestController: 用…

中国毫米波雷达产业分析3——毫米波雷达市场分析(四、五、六)

四、康养雷达市场 (一)市场背景 1、政府出台系列政策提升智慧健康养老产品供给和应用 康养雷达是一种以老年人为主要监测对象,可以实现人体感应探测、跌倒检测报警、睡眠呼吸心率监测等重要养老监护功能的新型智慧健康养老产品。 随着我国经…

商家门店小程序怎么做?门店小程序的优势和好处

生活服务类商家在当前数字化时代,越来越认识到门店小程序的重要性。门店小程序不仅为商家提供了一个在线展示的窗口,更为其打造了一个与消费者直接互动的平台。有了门店小程序,商家可以更加便捷地管理商品信息、订单流程,同时还能…

HX3002入耳检测光感驱动调试-感0x08 寄存器溢出,不变化错误问题解决方法

是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 读取光感0x08 寄存器溢出,不变化错误问题?原因 原因:没有读取到0x08数据,没有读0x…

【数据结构和算法】确定两个字符串是否接近

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1操作 1 的本质:字符可以任意排列 2.2操作 2 的本质:出现次数是可以交换的 2.…

传统算法:使用Pygame实现SVM(支持向量机)算法

使用 Pygame 演示了支持向量机(SVM)在二维数据上的分类过程。以下是代码的主要步骤和原理解释: 1、初始化和基本设置 Pygame 初始化: 通过 pygame.init() 初始化 Pygame。 定义颜色和屏幕大小: 定义了一些颜色常量(WHITE, BLACK, RED, BLUE)和屏幕的宽度和高度。 创建…

C语言二叉树与堆的实现(一)

目录 二叉树 二叉树的分类(目前只谈两种) 满二叉树 完全二叉树 二叉树的性质(其余的可以自己总结) 选择练习 二叉树的存储结构 顺序存储方式 链式存储方式 一种完全二叉树:堆 堆的概念 堆的性质 建堆的时…

QtCMake工程提升类后找不到头文件

我们都知道qt6版本现在主推用cmake进行构建工程,但是使用Qt的ui文件后想要自己定义一个类然后提升界面的控件为这个类,通常会提示找不到头文件,出现问题的原因是Qt creator通过ui文件生成的程序和存放头文件的目录不在一起,但是生…

python第2天之变量类型及其对应的方法整合

前言 查看变量类型:type(变量) Python是一种动态类型语言,它具有丰富的变量类型和对应的方法。在Python中,我们可以根据变量的类型来选择合适的方法来操作这些变量。 下面将介绍一些常见的变量类型及其对应的方法。 一、整型(…

JAVA调优

1 JAVA虚拟机 1.1 基本组成 通常来说Java平台标准版(Java SE)包括 Java SE开发工具包(JDK)和Java SE运行时环境(JRE)。 JRE提供了运行以Java编程语言编写的applet和应用程序所必需的库,Java虚…

Microsoft Expression Web - 网页布局

在本章中,我们将介绍网页的基本布局。在创建我们的网页布局之前,我们需要考虑我们的内容,然后设计我们希望如何呈现该内容,因为它是在我们的网站上可见的内容。 由我们如何呈现我们的内容,以便我们的观众找到我们的网…

pdfjs,pdf懒加载

PDF.js是一个使用JavaScript实现的PDF阅读器,它可以在Web浏览器中显示PDF文档。PDF.js支持懒加载,也就是说,它可以在用户滚动页面时才加载PDF文档的某些部分,从而减少初始加载时间和内存占用。 注意点:如果要运行在多留…

Python教程 – 简单代码实现HTML 转Word

之前文章分享过如何使用Spire.Doc for Python库将Word文档转为HTML格式,反过来,该库也能实现HTML到Word文档的转换。通过代码进行转换,避免了手动复制粘贴费时间,并且可能会出现错误或格式混乱等问题。 Spire.Doc for Python库能…

拥抱未来:大语言模型解锁平台工程的无限可能

01 了解大型语言模型 (LLM) 大型语言模型(LLM)是一种人工智能(AI)算法,它使用深度学习技术和海量数据集来理解、总结、生成和预测新内容。凭借合成大量信息的能力,LLM 可以提高以前需要人类专家的业务流程的…

每日一题 - 231201 - Divisibility by Eight

Divisibility by Eight TAG - 整除特性、枚举 整除特性、枚举 整除特性、枚举时间复杂度 - O ( N 3 ) O(N^3) O(N3) // #include<bits/stdc.h> using namespace std; // #define int long long void solve() {string s;cin>>s;for( int i0;i<s.size();i )if(…

基于ASP.Net的图书管理系统的设计与实现

摘 要 图书馆管理系统是一整套高科技技术与书本管理知识结合的产物。它把传统书籍静态的服务这个缺陷完美化&#xff0c;完成多媒体数据的交互、远程网络连接、检查搜索智能化、多数据库无障碍联系、跨时空信息服务。图书管理系统用计算机程序替代了传统手工记录的工作模式&am…