【Java】网络原理初识

在这里插入图片描述

目录

一. 网络初识

  1.1 计算机网络
  1.2 网络编程

二. 网络通信基础

  2.1 IP地址
  2.2 端口号
  2.3 协议

三. 协议分层

四. TCP/IP五层(或四层)模型

五. 封装和分用

一. 网络初识

1.1 计算机网络

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

1.2 网络编程

在网络通信协议下,实现网络互联的不同计算机上运行的程序可以进行数据交换。

二. 网络通信基础

网络互连的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据。

2.1 IP地址

要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识。简单说,IP地址用于定位主机的网络地址。

IP地址分为两大类:

  • IPv4:是给每个连接在网络上的主机分配一个32bit地址。按照TCP/IP规定,IP地址用二进制来表示,每个IP地址长32bit,也就是4字节。例如一个采用二进制形式的IP地址是"11000000 10101000 00000001 01000010",这么长的地址,但由于不好处理。于是为了方便使用,IP地址经常被写成十进制的形式,中间使用符号".“分隔不同的字节。于是,上面的IP地址可以表示为"192.168.1.66”。IP地址的这种表示法叫做”点分十进制表示法”,这显然比1和0容易记忆。
  • IPv6:由于互联网的快速发展,IP地址的需求量越来越大,但是网络地址资源有限,使得IP的分配越发紧张。为了扩大地址空间,通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,这样就解决了网络地址资源数量不够的问题。

常用命令:
使用win+R打开运行窗口。
在这里插入图片描述

  • ipconfig:查看本机IP地址。
    在这里插入图片描述

  • pingIP地址:检查网络是否连通
    在这里插入图片描述
    特殊IP地址:

  • 127.0.0.1:是回送地址,可以代表本机地址,一般用来测试使用。

2.2 端口号

网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。简单说,端口号用于定位主机中的进程。
端口号用两个字节表示的整数,它的取值范围是0 ~ 65535。在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数
据。其中,0 ~ 1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败

2.3 协议

通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。常见的协议有UDP协议和TCP协议。

UDP协议

  • 用户数据报协议(User Datagram Protocol)
  • UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
    由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输。
  • 例如视频会议通常采用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响,但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议

TCP协议

  • 传输控制协议(Transmission ControlProtocol)
  • TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”
  • 三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠
      第一次握手,客户端向服务器端发出连接请求,等待服务器确认
      第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求
      第三次握手,客户端再次向服务器端发送确认信息,确认连接
  • 完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛。例如上传文件、下载文件、浏览网页等
    在这里插入图片描述

三. 协议分层

在网络通信中,需要约定的协议是非常复杂的。于是就可以对协议进行分层。相当于是约定了层级和层级之间的调用关系,上层协议调用下层协议;下层协议给上层提供支持,不能跨层调用
以公司职位分布为例:
在这里插入图片描述
分层的好处
分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务):

  • 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可。
  • 对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。

在这里插入图片描述

四. TCP/IP五层(或四层)模型

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

  • 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
  • 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。(不考虑中间路径,只关注起点和终点)
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。(主要负责两个遥远的节点之间的路径规划)
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层。(主要关注的是两个相邻节点之间的传输)
  • 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
    在这里插入图片描述
    OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地实现。
    实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以 TCP/IP 五层(或四层)模型来实现。

五. 封装和分用

  • 发送方发送数据,要把数据从上到下,依次交给对应的层次的协议,进行封装。
  • 接收方收到数据,要把数据从下上到,依次交给对应的层次的协议,进行解析。

以下使用QQ消息为例,介绍封装分用的过程:
发送过程:张三在输入框输入一条消息:你吃饭了吗?
1.应用层(QQ应用程序)拿到上述用户数据,进行封装,封装成应用层数据包。(本质上就是字符串拼接)
在这里插入图片描述
2.传输层
以UDP协议为例,对上述数据包再进行封装。
在这里插入图片描述
3.网络层
以IP协议,对上述UDP数据报进一步进行封装。
在这里插入图片描述
4.数据链路层
以以太网协议为例,封装为以太网数据帧

在这里插入图片描述
mac地址,也叫物理地址,也是描述一个主机,在网络上的位置。它与IP功能很相似,但是这两个地址分别用于不同的用途。IP用来进行网络层的路径规划。mac用来描述数据链路层,两个即将进行传输的相邻节点。

5.物理层
物理层把上述二进制数据转换成光信号/电信号/电磁波信号进行传输。

接收过程:
1.物理层
网卡收到高低电平二进制数据就会对这里的信号进行解析,还原成0101这样的二进制序列。

2、数据链路层
将上述0101这系列数据当做一个以太网数据帧。
在这里插入图片描述
把帧头帧尾去掉,取出中间的载荷,交给网络层。
以太网数据帧帧头中会有一个消息类型,根据这个类型可以得知网络层是IP协议。

3.网络层
由IP协议进行解析数据报,去掉IP报头,同时会做一些工作。最重要的是取出载荷交给传输层协议。
在这里插入图片描述
IP数据报报头中也有一个字段,标识当前传输层用的是哪个协议。

4.传输层
由UDP协议来解析处理,去掉报头,取出载荷,把数据交给应用层。
在这里插入图片描述
借助端口号来区分具体的应用程序。

5.应用层
由QQ这个程序,进行解析应用层数据报。
取出下列字段,放到程序界面中,完成通信。
在这里插入图片描述
注意:

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器,它只实现了物理层;
    以上说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值