基础知识总结

概念概述

计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统。而网络编程就是编写程序使联网的两个或多个设备(比如计算机)之间进行数据传输。Java语言对网络编程提供了良好的支持,通过其提供的接口可以很方便地进行网络编程。接下来将介绍网络的一些基础知识,然后讲解如何通过Java语言进行网络编程。

计算机网络

计算机网络出现于20世纪60年代,并在20世纪70年代到90年代之间得到了快速发展。在21世纪,计算机网络成为信息社会的基础设施,深入到了人类社会的方方面面,与人们的生活、工作、学习息息相关。

如同人们之间相互交流需要遵循一定的规则一样,计算机之间的通信也需要遵守一定的规则,即网络协议

对于计算机网络这个复杂的系统,人们按照解决复杂问题的方法,将实现的功能划分到不同的层次上,层与层之间通过接口连接通信的双方具有相同的层次,层次实现的功能由协议数据单元(PDU)来描述。不同系统中的同一层构成了对等层,对等层之间通过对等层协议来理解彼此定义好的规则和约定,并通过进行通信。所谓的计算机网络体系结构就是计算机网络层次和协议的集合,网络体系结构对计算机网络实现的功能,以及网络协议、层次、接口和服务进行了描述,但是不涉及具体的实现。接口是同一节点内相邻层之间交换信息的连接处,也叫做服务访问点(SAP)。计算机网络的基本模型如下图所示:

TIM截图20180404105608

前面介绍了计算机网络体系结构的概念,那么究竟计算机网络是如何进行分层的?接下来我们首先介绍OSI参考模型。

世界上第一个网络体系结构是由IBM公司于1974年提出的SNA,之后其他公司也相继提出了自己的网络体系结构,比如:Digital公司的DNA,美国国防部的TCP/IP等。多种网络体系结构并存,其结果就是若采用IBM的结构,只能选择IBM的产品,因为只能于同种结构的网络互联。

为了促进计算机网络的发展,国际标准化组织ISO于1977年成立了一个委员会,在现有网络的基础上,提出了不基于具体机型、操作系统或公司的网络体系结构,称为开放系统互连参考模型,即OSI/RM(Open System Interconnection Reference Model)。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。如下图(OSI参考模型)所示:

TIM截图20180404110847

OSI参考模型

OSI参考模型中,各个层次的功能为:

  1. 物理层。该处于OSI的最底层,是整个开放系统的基础。物理层涉及通信信道上传输的原始比特流(bits),它的功能主要是为数据端设备提供传送数据的通路以及传输数据
  2. 数据链路层。该层的主要任务是实现计算机网络中相邻节点之间的可靠传输,把原始的、有差错的物理传输线路加上数据链路协议以后,构成逻辑上可靠的数据链路。需要完成的功能有链路管理、成帧、差错控制以及流量控制等。其中成帧是对物理层的原始比特流进行界定,数据链路层也能够对帧的丢失进行处理。
  3. 网络层。网络层涉及源主机节点到目的主机节点之间可靠的网络传输,它需要完成的功能主要包括路由选择、网络寻址、流量控制、拥塞控制、网络互连等。
  4. 传输层。传输层起着承上启下的作用,涉及源端节点到目的端节点之间可靠的信息传输。传输层需要解决跨越网络连接的建立和释放,对底层不可靠的网络,建立连接时需要三次握手,释放连接时需要四次挥手
  5. 会话层和表示层会话层主要功能是负责应用程序之间建立、维持和中断会话,同时也提供对设备和结点之间的会话控制,协调系统和服务之间的交流,并通过提供单工、半双工和全双工3种不同的通信方式,使系统和服务之间有序地进行通信表示层关心所传输数据信息的格式定义,其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式、加密等的统一表示
  6. 应用层。应用层为OSI的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。

TCP/IP参考模型

OSI参考模型的初衷是提供全世界范围的计算机网络都要遵循的统一标准,但是由于该模型存在缺陷(主要表现在两个方面:模型和协议),迟迟没有成熟的产品推出。而TCP/IP模型在实践中不断发展完善,取得了巨大的成功。该模型以TCP/IP协议作为核心,可以说没有TCP/IP协议就没有互联网的今天。

TCP/IP,全称为Transmission Control Protocol/Internet Protocol,中文译名为传输控制协议/因特网互联协议。它是Internet最基本的协议、是Internet国际互联网络的基础。

TCP/IP协议是一个开放的网络协议簇,它的名字主要取自最重要的网络层IP协议传输层TCP协议TCP/IP协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。TCP/IP参考模型采用4层的层级结构,每一层都通过它的下一层所提供的协议来完成自己的需求,这4个层次分别是:网络接口层、互联网层(IP层)、传输层(TCP层)、应用层。OSI和TCP/IP模型对比下图所示:

TIM截图20180404113523

TCP/IP各层基本介绍:

  1. 网络接口层.TCP/IP协议对网络接口层没有给出具体的描述,网络接口层对应着物理层和数据链路层。
  2. 互联网层(IP)层互联网层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。为了尽快地发送分组,可能沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。互联网层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,互联网层还需要完成拥塞控制的功能。
  3. 传输层(TCP)层。TCP层负责在应用进程之间建立端到端的连接和可靠通信,它只存在于端节点中。TCP层涉及两个协议,TCP和UDP。其中,TCP协议提供面向连接的服务,提供按字节流的有序、可靠传输,可以实现连接管理、差错控制、流量控制、拥塞控制等。UDP协议提供无连接的服务,用于不需要或无法实现面向连接的网络应用中。
  4. 应用层。应用层为Internet中的各种网络应用提供服务。

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

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

相关文章

MATLAB R2023B下载安装教程,免费使用,附安装包和工具,操作简单,小白也能轻松搞定

前言 MATLAB是一款商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分,可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等…

【正则表达式】获取html代码文本内所有<script>标签内容

文章目录 一. 背景二. 思路与过程1. 正则表达式中需要限定<script>开头与结尾2. 增加标签格式的限定3. 不限制<script>首尾的内部内容4. 中间的内容不能出现闭合的情况 三. 结果与代码四. 正则辅助工具 一. 背景 之前要对学生提交的html代码进行检查&#xff0c;在…

基于springboot招生管理系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括招生管理系统的网络应用&#xff0c;在外国招生管理系统已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步阶段。招生管理系统具有招生公告信息管理功能的选择…

2024-01-30(Hadoop_HDFS)

1.什么是大数据 狭义&#xff08;技术思维&#xff09;&#xff1a;使用分布式技术完成海量数据的处理&#xff0c;得到数据背后蕴含的价值。 广义&#xff1a;大数据是数字化时代&#xff0c;信息化时代的基础&#xff08;技术&#xff09;支撑&#xff0c;以数据为生活赋能…

win wsl2 Ubuntu-22.04 设置时间为国内时间

使用 wsl2 安装 Ubuntu-22.04 后 时间不正确&#xff0c;主要有两个原因 时区设置不正确&#xff0c;国内为京八区。 时区正确后&#xff0c;没有同步时间。&#xff08;大部分人容易忽略这一点&#xff09; Linux 默认情况下使用 UTC 格式作为标准时间格式&#xff0c;如果在…

双创竞赛项目申报:Java + Spring Boot的实战指南

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

单片机学习笔记---静态数码管显示

目录 数码管是什么&#xff1f; 一位数码管的引脚定义 四位一体的数码管引脚定义 数码管的原理图解析 数码管怎么显示数据&#xff1f;&#xff08;总结代码显示&#xff09; 今天开始学习数码管&#xff0c;它比LED和独立按键复杂一点 数码管是什么&#xff1f; LED数码…

如何获取到小程序appId

一、申请测试号 直接访问这个链接微信扫一下 微信公众平台 然后再去微信公众平台登录&#xff0c;账号的选择中就会多一个微信小程序测试号 选择登录即可获取到appid 二、注册一个微信小程序 第二种方式&#xff0c;去微信公众平台注册一个小程序。 注册完成后&#xff0c;…

ARM汇编 4.GNU伪指令、内联汇编

汇编伪指令格式 标号symbol&#xff08;label&#xff09; 注释符号&#xff1a; 整行注释&#xff1a;# 语句分离&#xff1a;&#xff1b; 立即数前缀&#xff1a;# 或 $ 分段&#xff1a;.section伪操作&#xff0c;用于自定义新的段 .text&#xff1a;代码段.data&am…

MP4格式视频怎么提取gif?一招教你在线做

MP4是一种常见的数字多媒体容器格式&#xff0c;它是一种使用最广泛的视频文件格式之一。MP4文件可以包含音频、视频和字幕等多种媒体数据&#xff0c;并且可以通过各种播放器和设备进行播放和共享。它是一种压缩格式&#xff0c;可以在保持相对较小文件大小的同时提供较高的视…

Java 的 Map 與 List

通過重新new 一個ArrayList 轉化 resTask.setList(new ArrayList<Group>(custMap.values())); 无序的Map List 有序的数据放到Map&#xff0c;就变成无序。 List排序 按照code 的字母进行排序A-Z resTask.getListData().sort(Comparator.comparing(Gmer::getCode));…

spring框架(一)

1、Spring框架&#xff1a;IoC和AOP 服务端三层开发&#xff1a;表现层、业务层、持久层 ssm, springboot, springcloud(微服务&#xff0c;治理组件) Spring框架是一个流行的Java应用程序框架&#xff0c;它提供了许多功能来简化企业级应用程序的开发。其中&#xff0c;控制反…

云服务之PaaS:它有几种类型,有什么区别?

PaaS种类繁多&#xff0c;包括公共PaaS、私有PaaS和混合PaaS&#xff0c;可以根据IT人员要求的方式提供所需工具&#xff0c;以实现更快地应用交付。 新兴科技的发展、移动端的深入应用&#xff0c;让人们对应用设备的需求不断增长&#xff0c;但在需求增长的同时&#xff0c;…

大数据-Spark-关于Json数据格式的数据的处理与练习

上一篇&#xff1a; 大数据-MapReduce-关于Json数据格式的数据的处理与练习-CSDN博客 16.7 Json在Spark中的引用 依旧利用上篇的数据去获取每部电影的平均分 {"mid":1,"rate":6,"uid":"u001","ts":15632433243} {"m…

【DC-DC】AP5165B 高端电流采样 36V/1A 高调光比LED恒流驱动IC SOT89-5

产品应用原理图 5-36V耐压 3W射灯应用线路图 产品描述 AP5165B 是一款外围电路简单的连续电流模式的降压型 LED 恒流驱动芯片。在输入电压高于LED 电压时&#xff0c;可以有效地用于驱动一颗或者多颗串联 LED。输出电流可调&#xff0c;可达 1A。适用于3-36V 电压范围的非隔离…

初始化爱情的构造之旅

初始化爱情的构造之旅 The Constructive Journey of Initializing Love 在一个名为“编程之城”的奇幻世界里&#xff0c;住着两位年轻的程序员——林浩然和杨凌芸。林浩然是Java王国中的首席对象设计师&#xff0c;擅长用代码构建复杂而精巧的对象&#xff1b;而杨凌芸则是数据…

探索云性能测试的各项功能有哪些?

云性能测试作为现代软件开发和部署过程中不可或缺的一环&#xff0c;为确保系统在各种条件下的高效运行提供了关键支持。本文将介绍云性能测试的各项功能&#xff0c;帮助您更好地了解其在软件开发生命周期中的重要性。 1. 负载测试 云性能测试的首要功能之一是负载测试。通过模…

Windows Server 2003 FTP服务器搭建

系列文章目录 目录 系列文章目录 文章目录 前言 一、FTP服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 6)再次测试网络连通性 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装FTP服务器 6)找到刚自己设定的路径下的文件夹,上传…

C语言——文件操作(看这一篇就够了)

1、为什么使用文件&#xff1f; 我们前面学习结构体&#xff0c;在写通讯录的时候会发现一个问题&#xff0c;我们向通讯录里面录入数据&#xff0c;当程序退出的时候&#xff0c;记录的数据也随之没有了&#xff0c;等下次我们在再调用通讯录时&#xff0c;又得重新录入数据&…

Java基于SpringBoot的学科竞赛系统,附源码,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…