通讯协议详解

2023-05-16

1,概念

网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。

网络上的计算机之间是如何交换信息的呢?就像我们说话用某种语言一样,在网络上的各台计算机之间也有一种语言,这就是网络协议,不同的计算机之间必须使用相同的网络协议才能进行通信。

  • 负责在网络上建立通信通道和控制通过通道的信息流的规则
  • 协议依赖于网络体系结构,由硬件和软件协同实现
  • 网络体系结构:指通信系统的整体设计方案,是计算机之间相互通信的层次、以及各层次中的协议和层次之间接口的集合,它为网络硬件和软件、协议、存取、控制和网络图普提供标准。

本层内的沟通是通过协议 本层与上层之间的通信是通过接口

2,组成要素

网络协议是由三个要素组成:  

(1) 语义。

语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。

(2) 语法。

语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。

(3) 时序。

时序是对事件发生顺序的详细说明。(也可称为“同步”)。  

人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。

 

3,层次划分

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:

应用层(Application Layer)软件

表示层(Presentation Layer)

会话层(Session Layer)

传输层(Transport Layer)

网络层(Network Layer)

数据链路层(Data Link Layer)

物理层(Physics Layer)

 

物理层

链路层

只有物理层远远不够,0和1究竟会怎样去组合,不用的划分代表了什么意思,这就需要链路层来处理,将0和1划分为具有意义的数据帧进行传送。

一组电信号为一个数据包,一个数据包包含了标、 data、结束祯。

 

 

数据包的传输就是一块一块网卡之间的传输。

网卡的MAC地址很重要(类似人的身份证,修改不了),网卡想要知道局域网内另一个网卡的位置,要使用广播的方式。发送给本局域网内所有的网卡,网卡自己去判断要这个信息还是不要。

网络层

广播是低效的。而且局限在发送者的自网络,那么要想找到别的子网络MAC地址,就需要Internet将他们相互链接一起。网络层就出现了,让每一台主机都有一个除了MAC地址外的另外一个重要的东西:IP地址。IP地址能帮助我们确定计算机所在的子网络。

  • IP地址 1-255 IPv4 23位的整数。每8位一组 2进制的8位 , 只有2的23次方个ip地址。一台机子一般通过ip和MAC地址去找另外一台机子。 IPv6
  • 子网掩码:可以判断是不是需要同一个子网。
  • DNS是属于应用层的,属于域名,DNS可以定位于ip。
  • ARP:地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
  • IP数据包

 

传输层

有了以上三层就可以建立通信了,可是那些数据究竟如何给电脑里面的应用程序呢?这是就需要端口(port)

TCP/IP 是传输层协议,主要解决数据如何在网络传输HTTP 是应用层协议,主要解决如何包装数据

传输层可选择TCP 或UDP协议:

  • TCP 是一种面向连接的、可靠的协议,可类比打电话:双方拿起电话互通身份后就建立了连接,然后说话就行了,双方说的话都保证能听到,并且是按说话的顺序听到的,说完话挂机断开连接。即TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠数据流,通讯之后关闭连接。
  • UDP 协议不面向连接,也不保证可靠性,可类比寄信:写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。

会话层

会话层是建立在传输层之上,利用传输层提供的服务,是应用建立和维持绘画,并能是绘画获得同步。会话层使用检验点可使通信绘画在通信失效时从校验点继续恢复通信。

  • 建立会话
  • 保持会话
  • 断开会话

 

表示层

应用层

http协议

就是软件与软件之间通信,应用层之间的通信。

http协议的原理

http请求的消息结构

  • 客户端请求消息。客户端发送一个http请求消息包含一下格式:请求行,请求头,空行和请求数据四个部分
  • 服务端响应消息。HTTP响应也由四个部分组成:状态行,消息报头,空行、响应报文

 

get请求报文

post请求报文

响应报文

get请求和post请求的区别

  • get请求参数拼接在url后面;post请求是放在请求体中
  • get请求参数类型不能是二进制流,内容大小1024;post可以,内容大小,2M。
  • get请求可以缓存,书签,历史记录,post不可以
  • get请求刷新,数据没有变无反应,post会重新发送
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通讯协议详解 的相关文章

随机推荐

  • PyQT在ui界面新建Label控件

    PyQT通过自定义外部函数 xff0c 在ui界面新建Label控件 写在前面的废话 xff1a 如果你想要在ui界面创建一个Label xff08 或者其他控件 xff09 xff0c 最快捷的当属在QTdesigner里找到你需要的控件
  • ubuntu克隆ue4源码

    ubuntu克隆ue4源码 1 进入ue官网 xff0c 登陆自己账号 xff0c 进入个人账户界面 xff0c 点击连接 xff0c 账户 xff0c 关联github Epic Games 2 之后按照操作进行 xff0c 关联自己的g
  • Windows环境跑通清华开源通用时间序列分析模型TimesNet

    1 需要按照给定配置准备python3 8环境与相关依赖包 xff0c 全程在windows环境下进行 2 github thuml Time Series Library A Library for Advanced Deep Time
  • 嵌入式工程师职业生涯该怎样规划

    嵌入式工程师分布在各行各业 xff0c 包括消费电子 工业电子 汽车电子和军用电子等 从功能上面看 xff0c 嵌入式本身包括了51 mcu soc soc 43 baseband等很多形式 从开发的结构上看 xff0c 有些同学专注于底层
  • 使用ros实现c++与python通信

    创建工作空间 选择在桌面创建 cd mkdir p my workspace src 编译工作空间 cd my workspace catkin make source一下新生成的setup bash文件 xff1a source deve
  • C++输出系统时间

    编译软件 xff1a dev5 4 0 程序功能 xff1a 输出系统时间 xff0c 输出格式 2018 08 10 15 14 40 方法 xff1a 使用time t获取系统时间 xff0c 再使用strftime 函数对日期和时间进
  • 该博客已搬家至 博客园

    由于CSDN不支持metaweblog xff0c 该博客今日起停止更新 所有内容移至博客园 我的博客园博客地址 xff1a 戳我 https www cnblogs com wittxie CSDN写文章真的难受 xff0c 具体原因你们
  • Kernel Based Progressive Distillation for Adder Neural Networks:基于核的渐进式蒸馏的加法神经网络

    2020 NeurIPS AdderNet基于核的渐进式的蒸馏加法神经网络 一 简介二 问题解决2 1问题提出2 2初步解决方案2 3具体分析2 4问题解决 用核方法来解决这个问题2 5渐进式学习 三 实验结果分析3 1基于MNIST数据集
  • 人脸识别 灰度化

    人脸识别 灰度化 欢迎使用Markdown编辑器 你好 xff01 这是你第一次使用 Markdown编辑器 所展示的欢迎页 如果你想学习如何使用Markdown编辑器 可以仔细阅读这篇文章 xff0c 了解一下Markdown的基本语法知
  • 基于STM32F103的红外遥控小车

    本人小白一个 xff0c 利用空闲时间 xff0c 做了一些小东西 xff0c 跟大家分享一下自己的代码 如有不对的地方 xff0c 还请各位前辈指正 话不多说 xff0c 先上干货 include 34 remote h 34 inclu
  • 关于realsense d435i的安装步骤及问题总结

    一 realsense的安装过程 参考链接 xff1a 1 Ubuntu18 04 安装D435i ROS 2 Ubuntu下Realsense SDK的安装 3 Realsense D435i 在ubuntu上安装SDK与ROS Wrap
  • ROS编译catkin_make的时候报错找不到xxx.h头文件

    报错内容 xff1a home firefly eai ws src square square goal service src service server cpp 3 53 fatal error square goal servic
  • Ubuntu下安装GParted并分区,进行虚拟机内存扩展

    首先对于虚拟机下的Ubuntu系统安装Gparted 直接使用sudo apt get install gparted 关机先进行内存分配后 xff0c 再进行下面操作 网上还有其他适合的教程 xff0c 我的16 04这样安装是没问题的
  • PIP版本过低,更新无用,Command “python setup.py egg_info“ failed with error code 1 in报错

    Ubuntu下pip install 时候python2 7总是报错 Complete output from command python setup py egg info Traceback most recent call last
  • 小觅双目相机进行ROS标定

    安装image pipeline包 使用ROS官方提供的 camera calibration 包对双目相机进行标定 详情可见官网camera calibration Tutorials StereoCalibration ROS Wiki
  • ubuntu18.04安装ORB_SLAM3以及遇到的问题

    目录 1 安装c 43 43 11 2 安装Pangolin a xff09 安装依赖 b xff09 编译pangolin 切换到pangolin下载包里面 3 安装opencv 4 eigen3安装 5 boost安装 6 编译ORB
  • 【论文写作】Word中公式快捷输入方式

    环境 Win10 64位 用到软件 Mirsoft Word MathType Mathpix snipping tool Quicker 说明 xff1a 点击链接可以直达官网 一 前言 针对Word中公式输入效率低的问题 xff0c 本
  • 练习7-10 查找指定字符 (15分)

    本题要求编写程序 xff0c 从给定字符串中查找某指定的字符 输入格式 xff1a 输入的第一行是一个待查找的字符 第二行是一个以回车结束的非空字符串 xff08 不超过80个字符 xff09 输出格式 xff1a 如果找到 xff0c 在
  • 用cropper.js裁剪图片并上传到服务器,解析base64转存图片到本地

    今天要写上传图片功能 xff0c 研究了一下cropper 将图片上传服务器并保存到本地 html lt html gt lt head gt lt title gt 基于cropper js的图片裁剪 lt title gt lt met
  • 通讯协议详解

    1 xff0c 概念 网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合 网络上的计算机之间是如何交换信息的呢 xff1f 就像我们说话用某种语言一样 xff0c 在网络上的各台计算机之间也有一种语言 xff0