TCP/IP协议详解

文章目录

    • TCP/IP协议概述
    • 基于TCP/IP协议的应用工具
    • 协议
      • 协议的必要性
    • TCP/IP协议
      • TCP/IP协议族
      • 协议的分层
    • 传输方式的分类
    • 报文、帧、数据包等的区别
    • TCP 和 UDP的区别

TCP/IP协议概述

TCP/IP(Transmission Control Protocol/Internet Protocol)是一组通信协议,用于在互联网上进行数据传输和通信,它是互联网的基础架构之一,支持全球范围内的数据通信。它是互联网的核心协议族,由多个不同的协议组成,每个协议负责不同的网络功能。
TCP/IP 协议族是互联网通信的基础,它提供了一种可靠的、灵活的、开放的通信框架,支持各种不同类型的数据传输和应用。
TCP/IP 的一些关键特点和组成部分:
分层架构:TCP/IP 协议族采用分层的设计,分为四个层次:应用层、传输层、网络层和数据链路层。每个层次都有不同的功能和责任,从而实现了协议的模块化和可扩展性。
面向连接的协议:TCP(Transmission Control Protocol)是 TCP/IP 中的传输层协议之一,它提供了可靠的、面向连接的数据传输服务。通过 TCP 协议,数据可被分割成数据包,并确保它们按顺序到达目的地,并且无错误。
无连接的协议:UDP(User Datagram Protocol)是另一个传输层协议,它是无连接的,不保证数据的可靠性和顺序性。UDP 通常用于需要低延迟和更高性能的应用,如实时音频/视频传输。
IP 地址和路由:IP(Internet Protocol)是 TCP/IP 协议族中的网络层协议,它负责定义和管理网络设备的 IP 地址,以及确定数据包从源到目的地的路径。IP 地址是用于在网络中唯一标识设备的数字标识符。
数据封装:在 TCP/IP 中,数据在传输过程中被封装为数据包,每个数据包包含了目标地址、源地址以及其他必要的控制信息。数据包的封装和解封装是通过各层的协议来完成的,从应用层到数据链路层依次进行。
开放性和标准化:TCP/IP 协议族是开放的标准,由许多组织和机构共同维护和发展。它的开放性和标准化使得不同厂商和组织可以基于 TCP/IP 进行互操作,从而实现了互联网的全球化和普及。
此外,TCP/IP 协议族还包括其他一些协议,如 ICMP(Internet Control Message Protocol)、ARP(Address Resolution Protocol)等,用于网络管理、地址解析和错误报告等功能。
TCP/IP 协议族的设计目标是实现可靠、灵活和互操作的网络通信。它已经成为全球互联网的基础,并被广泛应用于各种网络设备和应用程序中。

基于TCP/IP协议的应用工具

  1. Kafka: Kafka 是一个分布式流处理平台,基于 TCP/IP 自定义了一套协议用于高效地进行消息传递和数据处理。
  2. Redis: Redis 是一个开源的内存数据库,它使用 TCP/IP 自定义了一套协议用于客户端与服务器之间的通信,实现了高效的数据存储和访问。
  3. Memcached: Memcached 是一个分布式的内存对象缓存系统,也使用了自定义的 TCP/IP 协议来实现客户端与服务器之间的通信。
  4. Cassandra: Cassandra 是一个分布式的 NoSQL 数据库,它使用了 TCP/IP 自定义协议用于节点之间的通信和数据同步。
  5. Thrift: Thrift 是一个跨语言的远程过程调用(RPC)框架,它定义了一种自定义的 TCP/IP 协议用于不同语言之间的通信。
  6. ZooKeeper: ZooKeeper 是一个分布式的协调服务,它使用了 TCP/IP 自定义协议来实现客户端与服务器之间的通信和数据同步。
  7. Elasticsearch: Elasticsearch 是一个分布式的搜索和分析引擎,它使用了自定义的 TCP/IP 协议用于节点之间的通信和数据交换。
    有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能。
    这些工具都使用了 TCP/IP 自定义协议来实现不同的功能,例如消息传递、数据存储、分布式计算等,为开发者提供了丰富的选择来构建各种不同类型的应用程序。

协议

在计算机网络与信息通讯领域里,人们经常提及 “协议” 一词。互联网中常用的协议有HTTP、TCP、IP等。

协议的必要性

简单来说,协议就是计算机与计算机之间通过网络通信时,事先达成的一种 “约定”。这种“约定”使不同厂商的设备、不同的CPU以及不同操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。这就好比一个中国人说汉语一个外国人说英语使用不同的国家语言进行沟通,怎么也无法理解。如果两个人约定好 都说中文或英文,就可以互相沟通通信。协议分为很多种,每一种协议都明确界定了它的行为规范。两台计算机必须能够支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信。

TCP/IP协议

TCP/IP 是用于因特网 (Internet) 的通信协议。 TCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复 用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、 流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。 TCP支持的应用协议主要有:Telnet、FTP、SMTP等; UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。 TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点

TCP/IP协议族

TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合
在这里插入图片描述

协议的分层

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。 传统上来说 TCP/IP 被认为是一个四层协议, 而ISO(国际标准化组织),制定了一个国际标准OSI七层协议模型,OSI协议以OSI参考模型为基础界定了每个阶层的协议和每个阶层之间接口相关的标准。
在这里插入图片描述

分层的作用
在这里插入图片描述

应用层
应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。
表示层
将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式。数据的表示、安全、压缩。
会话层
负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理。
传输层
管理两个节点之间的数据传输。负责可靠传输(确保数据被可靠地传送到目标地址)。
网络层
地址管理与路由选择, 在这一层,数据的单位称为数据包(packet)(路由器)。
数据链路层
互连设备之间传送和识别数据帧(交换机)。
物理层
以"0"、 "1"代表电压的高低,灯光的闪灭,在这一层,数据的单位称为比特(bit),(中继器、集线器、还有我们通常说的双绞线也工作在物理层)。
七层通信
在这里插入图片描述

发送方由第七层到第一层 由上到下按照顺序传送数据,每个分层在处理上层传递的数据时,附上当前层协议所必须的 "首部"信息。接收方由第一层到第七层 由下到上按照顺序传递数据,每个分层对接收到的数据进行 "首部"与"内容"分离,在转发给上一层。最终将发送的数据恢复为原始数据。

传输方式的分类

网络通信科根据数据发送方法进行多种分类,分类方法很多,下面列举几种常见的:

  1. 面向有连接型和面向无连接型
    1.1 面向有连接型

在这里插入图片描述
发送数据之前,需要在收发主机之间建立一条通信线路,在通信传输前后,专门进行建立和断开连接的处理,如果与对端之间无法通信,可避免发送无谓的数据
1.2面向无连接型
在这里插入图片描述

报文、帧、数据包等的区别

报文(message)是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。
应用层:报文(message),一般指完整的信息,传输层实现报文交付,位于应用层的信息分组称为报文; 传输层:报文段(segment),组成报文的每个分组; 网络层:分组(packet)是网络传输中的二进制格式单元,数据包(datapacket)是TCP/IP通信协议传输中的数据单位;通过网络传输的数据基本单元,包含一个报头和数据本身,其中报头描述了数据的目的地及其与其他数据之间的关系,可以理解为数据传输的分组,我们将通过网络传输的基本数据单元称为数据报(Datagram); 链路层:帧(frame),数据链路层的协议数据单元,为了保证数据的可靠传输,把用户数据封装成帧; 物理层:PDU(bit),协议数据单元; 抓包,抓到的是传输层的包,packet/frame/Datagram/segment是存在于同条记录中的,这些是基于所在协议层的不同取了不同的名字。

TCP 和 UDP的区别

TCP 和 UDP的区别

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

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

相关文章

《图解HTTP》笔记2:http的构成

1,查看浏览器上面一个具体的http请求 浏览器地址栏输入网址:https://news.baidu.com/ 使用浏览器的开发者工具,查看网络中发送和接受的数据。 可以看到输入一个网址,浏览器和服务器进行了很多的交互。(绿色部分&#…

python + selenium/appnium

Selenium 的自动化原理: selenium 自动化流程: 自动化程序调用Selenium 客户端库函数(比如点击按钮元素)客户端库会发送Selenium 命令 给浏览器的驱动程序浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令浏览器执行命令浏览器驱动程序获取命令执行的…

ubuntu环境下openssl库的简单使用

安装 sudo apt-get install libssl-devaes算法demo 编译&#xff1a;gcc aes.c -lssl -lcrypto -o aes 运行&#xff1a;./aes #include<stdio.h> #include<stdlib.h> #include<string.h> #include<openssl/aes.h>#define AES_KEY_SIZE 128 // AES密…

UNI-APP_app跳转企业微信客服对话

uniapp打包app&#xff0c;app里点击客服&#xff0c;跳转企业微信客服对话。为什么是企业微信&#xff1f;因为只有微信小程序才可以通过 button 的 open-type‘share’ 打开微信客服对话框&#xff08;微信客服要在公众号平台配置&#xff09; 1、appId获取 &#xff08;1&a…

OJAC近屿智能张立赛博士揭秘GPT Store:技术创新、商业模式与未来趋势

> - [Look&#xff01;&#x1f440;我们的大模型商业化落地产品](https://www.airecruitas.com/aigc) >- &#x1f4d6;更多AI资讯请&#x1f449;&#x1f3fe;[关注](https://mp.weixin.qq.com/s/85qwuIydaaydMQz2g0rgMA) >- [Free三天集训营助教在线为您火热答疑…

C#_各式各样的参数(引用参数、输出参数、数组参数、具名参数、可选参数)

引用参数 值参数和引用参数的区别在于传参时是否会创建参数副本&#xff1a;值参数不会创建副本&#xff0c;而引用参数会创建副本。 换言之&#xff0c;值类型参数的参数与实体之间无直接关联&#xff0c;修改参数不会对实体产生影响&#xff1b;引用类型参数的参数与实体可视…

6.微格式

微格式 经典真题 知道什么是微格式吗&#xff1f;谈谈理解。在前端构建中应该考虑微格式吗&#xff1f; 微格式介绍 所谓微格式&#xff0c;是建立在已有的、被广泛采用的标准基础之上的一组简单的、开放的数据格式。 具体表现是把语义嵌入到 HTML 中&#xff0c;以便有助…

通过SSH 可以访问Ubuntu Desktop吗?

你可以在 Ubuntu Desktop 上开启 SSH 服务&#xff0c;以便其他机器可以通过 SSH 连接到你的服务器。以下是在 Ubuntu Desktop 上开启 SSH 服务的步骤&#xff1a; 打开终端 (Terminal) 应用程序。 输入以下命令安装 OpenSSH 服务器&#xff1a; sudo apt-get update sudo ap…

多任务爬虫(多线程和多进程)

在一台计算机中&#xff0c;我们可以同时打开多个软件&#xff0c;例如同时浏览网页、听音乐、打字等&#xff0c;这是再正常不过的事情。但仔细想想&#xff0c;为什么计算机可以同时运行这么多软件呢? 这就涉及计算机中的两个名词&#xff1a;多进程和多线程。 同样&#xf…

通信入门系列——锁相环、平方环、Costas环

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、锁相环 1、压控振荡…

重磅!MongoDB推出Atlas Stream Processing公共预览版

日前&#xff0c;MongoDB宣布推出Atlas Stream Processing公共预览版。 在Atlas平台上有兴趣尝试这项功能的开发者都享有完全的访问权限&#xff0c;可前往“阅读原文”链接点击了解更多详细信息或立即开始使用。 开发者喜欢文档型数据库的灵活性、易用性以及Query API查询方…

使用k-近邻算法改进约会网站的配对效果(kNN)

目录 谷歌笔记本&#xff08;可选&#xff09; 准备数据&#xff1a;从文本文件中解析数据 编写算法&#xff1a;编写kNN算法 分析数据&#xff1a;使用Matplotlib创建散点图 准备数据&#xff1a;归一化数值 测试算法&#xff1a;作为完整程序验证分类器 使用算法&…

js过滤取出对象中改变的属性和值

朋友公司的面试题 &#xff0c;取出对象中被改变的属性和值 const obj1 { a: 1, b: 2, c: 4 }; const obj2 { a: 1, b: 2, c: 5 }; 方法1 function testFun(obj1, obj2) {const diff {};const keys1 Object.keys(obj1);const keys2 Object.keys(obj2);const allKyes keys…

【深度学习】Gemini 1.0 Pro 如何让chatGPT扮演stable diffusion的提示词工程师

google也出了一个chatGPT&#xff0c;免费申请使用&#xff1a; https://aistudio.google.com/app/prompts/new_chat https://github.com/google/generative-ai-docs/blob/main/site/en/tutorials/rest_quickstart.ipynb 模型信息&#xff1a; $ curl https://generativelan…

SpringCloud(14)之SpringCloud Consul

我们知道 Eureka 2.X 遇到困难停止开发了&#xff0c;所以我们需要寻找其他的替代技术替代Eureka&#xff0c;这一小 节我们就讲解一个新的组件Consul。 一、Consul介绍 Consul 是 HashiCorp 公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置。与其它分布式…

kali xrdp

Kali Linux 使用远程桌面连接——xrdp&xfce_kali xfce桌面-CSDN博客 Ubuntu/Debian/Kali xrdp远程桌面黑屏/空屏/无画面解决办法 - 知乎 (zhihu.com) sudo apt-get install xrdp -y sudo apt-get install xfce4 -ysudo systemctl enable xrdp --now systemctl status xrd…

中级.NET开发工程师面试经历

文章目录 前言面试题目&#xff08;只记录了还记得的部分&#xff09;一.简单说下.NETCORE的生命周期&#xff1f;二.C#如何保证在并发情况下接口不会被重复触发&#xff1f;三.引用类型和值类型有什么区别&#xff1f;四.那怎样能让引用类型和值类型一样&#xff0c;在赋值的时…

【Latex】TeXstudio编译器选项修改

1、动机 编译国科大博士毕业答辩论文latex时报错 Package ctable Error: You must load ctable after tikz. 2、方法 经过搜索发现是因为这是中文模板&#xff0c;编译的选项不对&#xff0c;需要从 PDFLaTeX 调整到 XeLaTeX。于是操作如下 1&#xff09;点击选项 2&#xf…

linux 文件目录操作命令【重点】

目录 ls cd cat more tail【工作中使用多】 mkdir rmdir rm ls 作用: 显示指定目录下的内容 语法: ls [-al] [dir] 说明: -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) -l 除文件名称外&#xff0c;同时将文件型态(d表示目录&#xff0c;-表示文件)、权限…

SpringMVC POST请求传参 属性名字母大写注入失败解决方案

问题描述&#xff1a; 我现在有一个接口通过一个实体(RequestBody)去接收一系列的参数&#xff0c;前端传参为一个JSON字符串&#xff0c;但是当我的属性名以大写字母开头(有的中间还有下划线)&#xff0c;或者第二个字母是大写字母的时候&#xff0c;我发现后端接收不到参数值…