Java网络编程-第一节1:网络编程必备网络知识1之网络初识和网络协议
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java网络编程-第一节1:网络编程必备网络知识1之网络初识和网络协议相关的知识,希望对你有一定的参考价值。
文章目录
注意:本节会总结一些必要的网络知识,便于我们的网络编程,如果你对计算机网络完全是零基础,强烈建议对计算机网络进行系统学习
一:计算机网络基本概念
计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统
因此,计算机网络是互连的、自治的计算机集合
- 互连:通过通信链路互联互通
- 自治:无主从关系
二:计算机网络发展
独立模式:起初,计算机是被设计为了一个独立的设备,每个计算机相互独立,需要传输数据时可借助外部设备间接传送
网络互连:随着社会的发展,人们对于数据的传输需求变得更高。因此,设计者将一个个计算机连接在一起,形成一个计算机网络。根据网络规模的不同分为局域网和广域网
局域网LAN: 一般用微机或工作站通过高速线路相连,覆盖范围较小,约为几十米到几千米。局域网在计算机配置的数量上没有太多限制。局域网组建网络的方式有
-
基于网络直连
-
基于集线器组建
-
基于交换机组建
-
基于交换机和路由器组建
广域网WAN: 其任务是提供长距离通信,运送所要发送的数据,覆盖范围为几十千米到几千千米的区域,因此有时也会称其为远程网,是因特网的核心部分
三:网络协议
(1)生活中的协议
如下,有三个人,A只会说汉语,B只会说英语,C会说汉语和英语。
- 汉语和英语可以理解为协议
- 两个人之间说话可以理解为通信
- 讲话的内容可以理解为数据
如果让A和B交流,那肯定不行,因为他们各自用各自的协议
但是如果让A和C交流就没有问题,因为A采用汉语这种协议,而C在众多协议中也选择汉语这种协议,因此他们可以理解彼此的意思
(2)网络协议
人类具有掌握知识的能力,而且可以根据特定的情况灵活应用这些知识,,但是对于计算机就不可以,计算机只认识0和1,人们之间交流只要能准确表达意思即可,不用规定你的发音是什么,吐字清不清晰。但是在计算机中,即便对一个比特位的产生歧义也会导致很大的错误
于是在计算机通信中,事先达成一个详细的约定,让计算机在发送数据和接受数据的时候都按照这种约定去封装或解析,就能顺利通信了,这就是协议
在现实生活中,假如我们网上买了一本书,最终收货时不可能只会收到一本书,除了书之外,往往还会有一个快递盒子,快递盒子上贴有一些信息,例如姓名,地址和单号等
快递单号,姓名和联系电话等的作用就类似于协议,其目的为了准确定位,将物品送到你的手上,即便中间出现了错误,也能通过快递单号追根溯源查清问题。这就好于我们使用微信等软件发送消息,消息内容实则是被协议封装过的,目的也是为了准确无误的进行发送,即便有的时候发送失败,也可以通过点击重传按钮进行重传。这就是我们经常听到的数据报文
(3)协议是谁制定的
自计算机网络出现以来,各家公司都想要制定自己的协议标准,因此出现了很多的协议,比如现在互联网中使用的TCP/IP协议(它是很多协议的集合)
1974年,IBM公司发布了SNA,将本公司的计算机通信技术作为系统化网络体系结构公之于众,自从各大计算机厂商也开始发布自己的网络体系结构,这样导致的问题就是不同厂商的计算机无法完成通信,对于用户来说非常不方便,更换设备的代价也很高
为了解决上面的问题,ISO(国际标准化组织,Internatioal Organization for Standards
)制定了一个国际标准OSI(开放式通信系统互联参考模型,Open Systems Interconnection
),虽然OSI所定义的协议未得到普及,但是其指导方针却常被应用于网络协议的制定当中
TCP/IP并非ISO所指定的标准,而是由IETF所建议的,致力于推进其标准化作业的一种协议,TCP/IP作为互联网上的一种标准,也作为业界标准,俨然成为全世界广泛应用的通信协议。
以上是关于Java网络编程-第一节1:网络编程必备网络知识1之网络初识和网络协议的主要内容,如果未能解决你的问题,请参考以下文章
Java网络编程-第一节2:网络编程必备网络知识2之网络协议分层
Java网络编程-第一节2:网络编程必备网络知识2之网络协议分层
Java网络编程-第一节3:网络编程必备网络知识3之IP地址端口号