数据通信与网络(二)

2024-06-14 07:20
文章标签 网络 数据通信

本文主要是介绍数据通信与网络(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何构建网络协议

这些协议采用分层的结构,每层协议实现特定功能,同时也需要依靠低层协议所提供的服务。

网络协议可以理解为三部分组成:

1、语法:通信时双方交换数据和控制信息的格式,是对通信时采用的数据结构形式的一种规定。

2、语义:由通信过程的说明构成,它规定了需要发出何种控制信息完成何种动作以及做出何种应答。

3、时序(同步):通信如何发起,再收到一个数据后,下一步要做什么。

HTTP协议是应用层协议,是浏览器和Web服务器通信时使用的协议,当浏览器访问服务器时,会向服务器发出请求报文,报文的语法格式:GET/HTTP/1.1。

“GET”的语义是要获取文件;“/”的含义是指要访问网站的主页;“HTTP1.1”表明浏览器使用的协议是HTTP1.1版本。  

当Web服务器收到请求后,如果主页存在服务器的应答语法格式:HTTP/1.1 200 OK  data data ……。200 是状态码,代表成功;OK是文字说明, data是文件数据。

如果主页不存在,服务器的应答是:HTTP/1.1 404 NOT Found ,告诉浏览器没有找到对应的文件。

不同主机上的同一层次称为对等层

每一层中实现功能的协议元素称为实体,实体既可以是软件,也可以是硬件。

对等层内的实体称为对等实体。

每一层都有特定的功能,使用下一层为它提供的服务,同时也为自己的高层提供服务。

数据传递过程

数据从发送端的最高层开始,层层向下,层层封装,直到发送方的最底层,转换为电磁信号后经过物理链路到达接收端的最底层,再层层向上,层层解封装,最后到达接收方的最高层,整个通信过程是垂直

高层使用了低层的服务,低层向高层提供服务,高层通过低层提供的服务接口访问低层的服务。

数据的传递在概念上可以认为通信是水平的,数据高翔由对等层的一端直接到达了另一端。

通信的目的就是要实现对等层之间的水平通信,虽然事实上水平通信要依赖垂直通信来实现。

协议分层的优点:

1、每个层次都可以单独实现。

2、层次明确也更有利于标准化。

计算机网络体系结构

各个层次的所有协议也被称为协议栈

采用不同体系结构的两个网络之间很难通信

为使所有的网络都能互连互通,国际标准化组织ISO提出了开放系统互连参考模型(Open Systems Interconnection Reference Model,OSI/RM),简称OSI参考模型。

1~3层称为低层功能(LLF):通信传送功能——网络和终端具备的功能

第4~7层称为高层功能(HLF):通信处理功能——终端具备的功能

TCP/IP协议体系

应用层:相当于OSI参考模型的应用层,具体的协议有超文本传输协议(HTTP)、文件传输协议(FTP)等。

运输层: TCP协议:为应用程序提供面向连接的可靠的通信,具有流量控制和拥塞控制的功能。 UDP协议:提供无连接的不可靠通信,但是效率较高。

互联网层:相当于OSI参考模型的网络层,要为数据找到一条正确的路到达目的地,主要的协议是IP。

网络接口层:相当于OSI参考模型的数据链路层和物理层。

TCP/IP的应用层

应用层协议为文件传输、电子邮件、远程登录、网络管理、Web浏览等应用提供了支持。有些协议的名称与以其为基础的应用程序同名。

TCP/IP的传输层

传输层的主要功能:提供进程间可靠的传输服务。

传输层包括TCP和UDP两种传输协议:

TCP是面向连接的传输协议。 在数据传输之前建立连接; 把报文分解为多个段进行传输,在目的站再重新装配这些段; 必要时重新传输没有收到或错误的段,因此它是“可靠”的。

UDP是无连接的传输协议。 在数据传输之前不建立连接; 对发送的段不进行校验和确认,因此它是“不可靠”的; 主要用于请求/应答式的应用和语音、视频应用。

TCP和UDP都用端口(port)号来设别应用层实体,以便准确地把信息提交给上层对应的协议(进程)。

TCP/IP的网络层

主要功能是把数据报通过最佳路径送到目的端。

- 寻址(IP地址)、路由选择、封包/拆包

网络层的核心协议 --- IP,提供了无连接的数据报传输服务(不保证送达,不保证序,不保证无错)

        -传输前不需建立连接

        -提高了传输效率

网络层是网络转发节点(如路由器)上的最高层。

        -网络节点设备不需要传输层和应用层

网际层的其他重要协议:

ICMP(Internet Control Message Protocol)

传递控制信息

        - 可达性测试

        - 传送路由状态信息

        - 超时通知

        - 不可达通知

封装在IP中进行传输

ARP(Address Resolution Protocal)

为已知的IP地址确定相应的MAC地址

RARP (Reverse Address R二solution Protocal)

为已知的MAC地址确定相应的IP地址

IGMP(Internet Group Management Protocol)

多播组管理

TCP/IP的网络接口层

没有定义任何实际协议,仅定义了网络接口

任何已有的数据链路层协议和物理层协议都可以用来支持TCP/IP

典型的例子:

- Ethernet、Token Ring、HDHL、X.25、ATM

优点:适应性强、灵活

缺点:不能利用已存在的某些有用的功能

- TCP/IP总是认为其下层是不可靠的(尽管可能已经足够可靠)

TCP/IP协议栈

主机和路由器的协议栈

对于端系统(主机和服务器)而言,因为包括具体的网络应用,所以四层协议都具备。

对于通信子网中的分组交换设备(路由器),其作用是转发分组,并不关心高层数据,所以协议栈只包括下两层协议(互联网层和网络接口层)。

OSI参考模型和TCP/IP参考模型比较

相同之处:

1、两者都采用层次型的模型。

2、都以协议栈的概念为基础,且协议栈中的协议是彼此相互独立的。

3、两个模型中各层的功能大体相似。

不同之处:

1、服务、接口和协议这三个概念,OSI非常明确,TCP/IP没有区分三者间的差异。前者的协议隐蔽性比后者好,这有利于协议的更新。

2、OSI是模型在先协议在后,这意味着该模型具有通用性,而TCP/IP模型却相反,模型只有已有协议的一个描述,但未必适合其他的协议栈。

3、两种模型层的数目不同。

4、OSI的网络层同时支持面向连接和无连接服务,但远输层只支持面向连接服务。而TCP/IP的网络层只有一种无连接服务模式,但在远输层同时支持两种服务模式

5、TCP/IP较早就有较好的网络管理。OSI后来才考虑网管问题。

这篇关于数据通信与网络(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059741

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依