MEC@JavaSE@实战篇@笔记05@计算机网络技术基础

一、计算机网络技术基础

1、计算机网络的基本定义

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统中,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

“实现资源共享和信息传递”是计算机网络的最终功能和目的。

2、网络通信协议

网络通信协议是一种通信语言,为连接不同的操作系统和不同的硬件体系结构的互联网络提供通信支持,是一种网络通用语言。

网络通信协议主要有三个部分构成:

语义(要做什么):解释控制信息每个部分的意义。它规定了需要发送何种控制信息、完成什么样的动作以及做出什么样的回应。

语法(要怎么做):用户数据与控制信息出现的结构与格式,以及数据出现的顺序。

时序(做的顺序):对事件发生顺序的详细描述

常见网络通信协议:TCP/IP协议、IPX/SPX、NetBEUI协议等。

3、网络体系结构

计算机网络是大复杂系统。在计算机网络的设计和构建过程中,人们应用“分而治之”的工程原则,将其分解成不同层次的结构。结构中的每一层功能相对独立,各层之间是调用和被调用关系。

最著名的两种体系结构:ISO的OSI和TCP/IP。

OSI的计算机网络体系结构【百度百科】:

https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/7162913?fr=aladdin

为把在一个网络结构下开发的系统与在另一个网络结构下开发的系统互联起来,以实现更高一级的应用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1984年形成了开放系统互连参考模型OSI/RM(Open Systems Interconnection Reference Model,简称OSI)的正式文件。

OSI从逻辑上,把一个网络系统分为功能上相对独立的7个有序的子系统,这样OSI体系结构就由功能上相对独立的7个层次组成,如图1所示。它们由低到高分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

图1 OSI七层模型

图1 OSI七层模型

(1)物理层(Physical,PH)传递信息需要利用一些物理传输媒体,如双绞线、同轴电缆、光纤等。物理层的任务就是为上层提供一个物理的连接,以及该物理连接表现出来的机械、电气、功能和过程特性,实现透明的比特流传输。在这一层,数据还没有组织,仅作为原始的比特流提交给上层——数据链路层。

(2)数据链路层(Data-link,D)数据链路层负责在2个相邻的结点之间的链路上实现无差错的数据帧传输。每一帧包括一定的数据和必要的控制信息,在接收方接收到数据出错时要通知发送方重发,直到这一帧无差错地到达接收结点,数据链路层就是把一条有可能出错的实际链路变成让网络层看起来像不会出错的数据链路。实现的主要功能有:帧的同步、差错控制、流量控制、寻址、帧内定界、透明比特组合传输等。

(3)网络层(Network,N)网络中通信的2个计算机之间可能要经过许多结点和链路,还可能经过几个通信子网。网络层数据传输的单位是分组(Packet)。网络层的主要任务是为要传输的分组选择一条合适的路径,使发送分组能够正确无误地按照给定的目的地址找到目的主机,交付给目的主机的传输层。

(4)传输层(Transport,T)传输层的主要任务是通过通信子网的特性,最佳地利用网络资源,并以可靠与经济的方式为2个端系统的会话层之间建立一条连接通道,以透明地传输报文。传输层向上一层提供一个可靠的端到端的服务,使会话层不知道传输层以下的数据通信的细节。传输层只存在端系统中,传输层以上各层就不再考虑信息传输的问题了。

(5)会话层(Session,S)在会话层以及以上各层中,数据的传输都以报文为单位,会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立以及维护应用之间的通信机制。如服务器验证用户登录便是由会话层完成的。

(6)表示层(Presentation,P)这一层主要解决用户信息的语法表示问题。它将要交换的数据从适合某一用户的抽象语法,转换为适合OSI内部表示使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩、加密和解密等工作都由表示层负责。

(7)应用层(Application,A)这是OSI参考模型的最高层。应用层确定进程之间通信的性质以满足用户的需求,以及提供网络与用户软件之间的接口服务。 [2] 

TCP/IP的计算机网络体系结构【百度百科】:

https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84/7162913?fr=aladdin

20世纪70年代初期,美国国防部高级研究计划局(ARPA)为了实现异种网之间的互联与互通,大力资助网络技术的研究开发工作。ARPANET开始使用的是一种称为网络控制协议(network control protocol,NCP)的协议。随着ARPANET的发展,需要更为复杂的协议。

1973年,引进了传输控制协议TCP,随后,在1981年引入了网际协议IP。1982年,TCP和IP被标准化成为TCP/IP协议组,1983年取代了ARPANET上的NCP,并最终形成较为完善的TCP/IP体系结构和协议规范。

TCP/IP(transmission control protocol/internet protocol,传输控制协议/网际协议)由它的2个主要协议即TCP协议和IP协议而得名。TCP/IP是Internet上所有网络和主机之间进行交流时所使用的共同“语言”,是Internet上使用的一组完整的标准网络连接协议。通常所说的TCP/IP协议实际上包含了大量的协议和应用,且由多个独立定义的协议组合在一起,因此,更确切地说,应该称其为TCP/IP协议集。

TCP/IP共有4个层次,它们分别是网络接口层、网际层、传输层和应用层。TCP/IP层次结构与OSI层次结构的对照关系如图2所示。

图2 图2

(1)网络接口层TCP/IP模型的最底层是网络接口层,也被称为网络访问层,它包括了可使用TCP/IP与物理网络进行通信的协议,且对应着OSI的物理层和数据链路层。TCP/IP标准并没有定义具体的网络接口协议,而是旨在提供灵活性,以适应各种网络类型,如LAN、MAN和WAN。这也说明,TCP/IP协议可以运行在任何网络上。

(2)网际层是在Internet标准中正式定义的第一层。网际层所执行的主要功能是处理来自传输层的分组,将分组形成数据包(IP数据包),并为该数据包在不同的网络之间进行路径选择,最终将数据包从源主机发送到目的主机。在网际层中,最常用的协议是网际协议IP,其他一些协议用来协助IP的操作。

(3)传输层传输层也被称为主机至主机层,与OSI的传输层类似,它主要负责主机到主机之间的端对端可靠通信,该层使用了2种协议来支持2种数据的传送方法,它们是TCP协议和UDP协议。

(4)应用层在TCP/IP模型中,应用程序接口是最高层,它与OSI模型中高3层的任务相同,都是用于提供网络服务,如文件传输、远程登录、域名服务和简单网络管理等。 [2] 

模型比较:

 

4、TCP/IP协议

TCP/IP协议并非一个协议,它是由两个大的协议家族——IP协议族和TCP协议族组成的。IP协议工作在互联网层,TCP协议工作在传输层。

4.1面向连接和面向无连接

TCP协议中的两个重要协议:TCP协议和UDP协议。

TCP协议为面向连接,是保证质量的数据传输。对于出现的错误情况,会尽力处理,要求重传、整理数据包等等。

UCP协议为面向无连接,是不保证质量的数据传输。对于数据传输的误差不进行纠正(重传),收到什么就是什么。

不同的应用场景,选择不同的数据传输方式:

对于要求每一个子节都不能做的场景,使用面向连接的数据传输方式,即使用TCP协议。

对于速度要求更高的场景,可以选择面向无连接的数据传输方式,即,UDP协议。

IP协议也是面向无连接的输出传输协议。

4.2MAC协议和IP地址

MAC(Media Access Control),俗称“网卡”。现在的计算机,网卡基本都已经内置在主板上了。每一台联网设备上的每一个=快网卡,都有一个全世界唯一的6字节编号,这个编号就是MAC地址,也称局域网地址(LAN Address)、以太网地址(Ethernet Address)或物理地址(Physical Address)。

连入网络的设备能够相互通讯,就必须知道对方的MAC地址。

但是,MAC地址很难记,同时,如果网卡可以拆卸,那么,MAC地址也会发生变化。这些对于网络通讯而言都是很棘手的问题,问了解决这个问题,TCP/IP协议提出了IP地址的概念。

IP地址有两个版本,v4版本和 v6版本。v4版本的IP地址为4字节,v6版本的IP地址为16字节。在局域网上,通常使用的是v4版本的IP地址。IP地址是可以通过操作系统设定的,操作系统会将IP地址和 MAC地址绑定,这就避免了MAC地址的变化带来的麻烦。IP协议族中,有专门的协议负责IP地址和 MAC地址之间的转换,分别是ARP协议和 RARP 协议。对于Internet,即,全球联网,每台联网设备的IP地址必须唯一;对于局域网,IP地址也必须唯一。综上,IP地址成为了联网设备在网络通信时能唯一识别通信对方的标志。

以下讲述的IP地址以IPv4为主。

IP地址以“点分十进制"的形式表示,比如:192.168.1.2、202.145.6.201

4个十进制数分别表示IPv4地址4个字节的每一个字节取值,因此,其取值范围在0到255 之间。

5、网址与IP——DNS

IP地址依然是难以记忆的。为了方便大家记住某个网站服务器的地址,人们使用“网址"这种表示网络节点地址的方法。

比如,百度的网址是www.baidu.com,相信这个网址对大家而言并不陌生吧。

网址也是层次结构的,百度网址的全称是:http://www.baidu.com。

前面的http://表示协议,即,超文本传输协议。除了http外,还有ftp(文件传输)、ws (Web Socket)等。

后面是层次结构的主机地址。后缀com表示商业,如果是教育行业,用edu表示,等等。

网址对人而言是容易接受,容易记忆的,但是,对于计算机而言,网址是读不懂的,必须转换成IP地址。

DNS(Domain Name Service),域名服务,将网址转换成IP地址。有一类专门的服务器,负责将域名转换成IP地址。这样我们上网就可以使用网址而不是IP地址了。
上面只是对 DNS最基础的介绍。

5.1两个特殊的IP地址

局域网IP地址:192.168.X.X和10X.XX:一般情况下,局域网用前者。

回送地址:127.X.XX,后二付不能全通党田197001.回送地址可以在网络编程中代替localhost,即本地地址。

5.2 子网掩码

192.168.X.X通常用作局域网地址,后面两个字节的取值可以从0.1到255.254,即,可以支持拥有65534(256*256-2,因为主机号的各位不能同时为0,1)台主机的局域网。

由于一般局域网不太可能有这么多主机,而且,往往还要分成多个独立的局域网,所以,需要一种技术能完成这个要求。

IP地址是分层的。

意思是说,IP地址就像邮政编码。邮政编码是6位数字,前两位表示省市(地区),再两位是区/县,最后两位是街道/村镇。在邮局邮件投递/分发工作中,先根据前两位定位省市,并发往相关省市邮局总局;在目的总局,再根据区县编号分发到下一层邮局单位…..

计算机网络的IP寻址也是基本相同的模式:先寻址相关IP所在子网,再向该子网投递报文。

通常情况,192.168.X.X默认前三个字节是子网编号最后一个字节是网内主机编号。为了能让程序方便的从IP地址中取得子网编号,就提出了子网掩码的概念。

子网掩码也是4B二进制信息,通过与IP地址“按位相与”的位运算,就能够从IP地址中取出子网编号。所以,子网掩码通常都是最后几位都为0的形式。

如果子网掩码是三个255,转换成二进制应该是:1111 1111 11111111 11111111 0000 0000

用这样的二进制值与IP地址192.168.1.2按位相与,将得到:192.168.1.0,这就是子网编号了。

这等于在说,IP地址192.168.1.0中的1.不能随便乱写!如果有多台计算机想要连接成局域网,除了要有集线界、网线(通常是双绞线)外,在设置IP地址时,IP地址的前三个数字一定要相同,否则,这些计算机将分处于不同的子网中!这是很多学生在宿舍联网失败的原因之一。

5.3 TCP协议是端对端的通信协议

通过IP地址和IP协议,计算机可以互联互通,进行信息通信。即,可以过IP地址找到通信对方。那么,这就可以编程完成网络通信了么?答案是否定的。

IP协议通过“路由”确实能找到通信对方,这叫点对点连接。这里的点指的是连入网络的通信设备(包括计算机)。但是,在找到了通信对端的计算机后还要继续找具体是哪个进程在进行本次通信。

前面我们多次说过,Window 系统、Linux 系统、Unix 系统等操作系统,是多任务系统,“同时”有多个进程在运行。在众多进程中,到底应该把通信息传输给哪个进程,这就是TCP协议层要进步处理的问题。

为解决这个问题,TCP提出了“端”的概念,也就是端口号的概念。

端口号是一个2B无符号编号,其取值从0到65535.不同的通信双方(软或进程),需要事先指定一个端口号,以便能将网络通信信息准确传输给特定进程或者应用程序。在java的net包中有一个socket类,专门负责TCP通信端口号的管理。

6、P2P——对等网络模式

P2P的意思是Peer toPeer,又称为:对端到对端。这是一种对 等网络通信形式。在P2P网络中,各个联网节点的身份都是一 一样的,没有高低之分,没有权限差异。

要实现P2P通信,通信双方必须知道对方的IP,并且事先确定端口号。因为这种方式不存在管理者和被管理者,通信方法也比较自由,所以其编程实现的逻辑也相对简单。

当然,这种简单不利于集群管理。比如对于聊天室类的软件,需要有一个“总控”方,能够统一管理各个接入聊天室的终端,以便完成诸如“群发消息”、“屏蔽消息”、“强制下线”等管理性操作。
DatagramPacket是Java 提供的P2P网络通信类。

7、C/S——服务器/客户机模式

与P2P工作模式不同,C/S对接入网络的终端分成服务器和客户机两种,它们的身份不同,权限不同,有主有次。服务器是“控制端”,是C/S模式的核心节点,负责管理事务。客户机是“受控端”,是接入网络的“客户”,享用服务器所提供的服务。对于服务器和客户机这两个概念,很多童鞋是存在认识上的误区的。很多人认为,服务器和客户机指的是硬件。这是错误的。
服务器和客户机指的都是软件。

一台运行着服务器软件的计算机,就是服务器:一台运行着客户机软件的计算机,就是客户机。一台计算机上,同时运行了服务器软件和客户机软件,那么,这台计算机既是服务器,也是客户机。

7.1 服务器

服务器是网络的核心,如果服务器没有运行,或者服务器出现故障,或者服务器崩溃了,整个网络就会因此而瘫痪。

服务器必须是“众所周知”的。服务器的IP地址和端口号必须公之于众,否则,客户机将无法找到服务器所在。

服务器需要响应客户机的联网请求。服务器需要不断“侦听”来自客户机的联网请求,并将客户机接入服务器,才能形成网络。

服务器与多个客户机连接并通信。对于每一个客户机连接,服务器要用一个独立的线程实现与这个客户机的通信工作。也就是说,服务器要用多线程才能实现对多个客户机的管理。

服务器负责处理来自客户机的信息,包括处理客户机的资源请求,转发一个客户机与另一个客户机的信息等工作。

服务器也可以主动与客户机通信,实现对客户机的主动管理。比如,强制某个客户机下线。通知一个客户机有关其他客户机的状态,比如,在聊天室软件中,服务器要将某个客户机上线的信息,告知其他所有在线的客户机,或者,将某一个客户机下线的信息,告知其他所有在线的客户机等。

服务器一旦终止工作,则,整个网络服务就会终止。

7.2 客户机

客户机需要知道服务器的IP地址及端口号,以便向服务器发出连接请求,这称为上线。客户机必须先连接服务器,否则,不能得到服务器所提供的服务。

客户机只能从服务器那里得知其它客户机的存在及当前联网状态。

客户机只能与服务器通信。如果一个客户机要与另一个客户机,或者,所有其他客户机通信,则,必须通过服务器转发这个信息。

客户机可以随时断开与服务器的连接,这称为下线。

下线的客户机可以再次与服务器连接,只要服务器依然正常工作。

 

7.3 一个系统,两套程序

开发一个C/S工作模式的APP,需要同时开发两套程序,一套是服务器程序一套是客户端 (客户机)程序,而且,这两套程序之间存在着密切的逻辑关系.

为使所有客户机知道服务器的IP地址和端口号,往往把服务器的IP地址和端口号写到客户端程序中,或者用配置文件的方式,告知客户端程序。

一个能良好工作的C/S网络APP,必须能安善处理包括服务器和客户端在:的所有联网节点的上线、下线、异常下线(突然断电造成的断网等)情况,并用合理的方式通知APP使用者。

服务器和客户端是通过“通信道”进行通信的。通信信道有“输入通信信道和"输出通信信道“两种。这两种通信信道都开启时,称为"双工”(即,同时双明通信方式)。

服务器的输入通信信道一定与客户端的输出通信道连接:服务器的输出送传值谢定与客户端的输 入通信道选接。就像打电话那样,通话的话简问该与另端的耳机连接,另一端也是如此。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值