网络编程基本概念

一、概述

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

网络编程就是编写程序使互联网的两个(或多个)设备(如计算机)之间进行数据传输。在Java中又称为Socket编程,通过其提供的接口我们可以很方便地进行网络编程。

二、软件结构

2.1 C/S两层结构

  • C/S 解析

    C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。

  • 两层结构

    第一层:客户端——表示层(界面层与逻辑层)
    第二层:服务器模式——数据库层

  • C/S 结构流程

    客户端——经过(Request)请求——服务器(即数据库)——数据库根据客户端的请求——进一步(Response)响应回去给客户机

  • C/S 概念

    C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是C/S结构。

2.2 B/S三层结构

  • B/S 解析
    B/S就是“Browser/Server”的缩写,即“浏览器/服务器”模式。

  • 三层结构
    第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能;
    第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能;
    第三层数据层:主要是接受客户端请求后独立进行各种运算。

  • B/S 常用结构流程
    客户端浏览器——经过HTTP请求——WEB服务器——经过查询——数据库服务器——响应查询后返回结果——WEB服务器——再经过HTTP响应——返回给客户端浏览器

  • B/S 概念
    B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过web Server与数据库进行数据交互。在手机或电脑上用浏览器上百度搜索、看新闻等就是在使用“B/S”结构进行数据交互。这种“B/S”结构的好处:维护和升级方式更简单,客户端是浏览器,基本不需要维护,只需要维护升级服务器端就可以。

三、什么是网络编程

上述两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。

四、网络协议

4.1 概述

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

4.2 TCP/IP 协议

传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

OSI七层模型 功能 对应得网络协议 TCP/IP四层概念模型
应用层文件传输,文件管理,电子邮件的信息处理。最小单位--apdu(应用协议数据单元)HTTP、TFTP、FTP、NFS、WAlS、SMTP应用层
表示层确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密。最小单位--ppdu(协议数据单元)Telnet、Rlogin、SNMP、Gopher
会话层负责在网络中的两节点建立,维持和终止通信,在这层协议中,可以解决节点连接的协调和管理问题。包括通信连接的建立,保持会话过程通信连接的畅通,两节点之间的对话,决定通信是否被中断,以及通信中断时决定从何处重新发送。最小单位--spdu(会话协议数据单元)SMTP、DNS
传输层定义一些传输数据的协议和端口。传输协议同时进行流量控制,或是根据接收方接收数据的快慢程度,规定适当的发送速率,解决传输效率及能力的问题。最小单位--tpdu(传送协议数据单元)TCP、UDP传输层
网络层控制子网的运行,如逻辑编址,分组传输,路由选择。最小单位——分组(包)报文IP、ICMP、ARP、RARP、AKP、UUCP网络层
数据链路层主要是对物理层传输的比特流包装,检测保证数据传输的可靠性,将物理层接收的数据进行MAC(媒体访问控制)地址的封装和解封装,也可以简单的理解为物理寻址。交换机就处在这一层。最小的传输单位——帧FDDI、Ethernet、Arpanet、PDN、SLIP、PPP、STP、HDLC、SDLC,帧中继数据链路层
物理层定义物理设备的标准,主要对物理连接方式,机械特性、电气特性、功能特性、过程特性制定统一标准,传输比特流,因此最小的传输单位——位(比特流)IEEE 802.1A、IEEE802.2到IEEE 802.11

上表中,TCP/IP协议中的四层分别是应用层、传输层、网络层和数据链路层,每层分别负责不同的通信功能。

  1. 应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

  2. 传输层:主要使网络程序进行通信,在进行网络通信时,可以采用 TCP 协议,也可以采用 UDP 协议。

  3. 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。这一层就是我们经常说的IP协议层。IP 协议是 Internet 的基础。

  4. 数据链路层:通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现
    这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路。

五、协议分类

通信的协议还是比较复杂的,java.net 包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。

java.net 包中提供了两种常见的网络协议的支持:

  • UDP

    用户数据报协议(User Datagram Protocol)。UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

    由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输,例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

    但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。UDP的交换过程如下图所示。
    UDP通信图解

    特点:数据被限制在 64kb 以内,超出这个范围就不能发送了。

    数据报(Datagram):网络传输的基本单位

  • TCP

    传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

    在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。

    • 三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。

      • 第一次握手,客户端向服务器端发出连接请求,等待服务器确认。
      • 第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。
      • 第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。

      4_tcp

    ​ 完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。

六、网络编程三要素

协议、IP地址和端口号。

6.1 协议

  • 协议:计算机网络通信必须遵守的规则,这些规则被称为协议。

6.2 IP地址

IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。

IP地址分类

  • IPv4:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d 的形式,例如192.168.65.100 。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。

  • IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。

    为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。

常用命令

  • 查看本机IP地址,在控制台输入:

    ipconfig

  • 检查网络是否连通,在控制台输入:
    ping 空格 IP地址
    举例:
    ping 192.168.37.1

特殊的IP地址

本机IP地址:127.0.0.1localhost

6.3 端口号

网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢?

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

  • 端口号:用两个字节表示的整数,它的取值范围是0~65535。其中

    • 0-1023: 系统端口,也叫公认端口,这些端口只有系统特许的进程才能使用;
    • 1024~65535为用户端口:
      • 1024-5000: 临时端口,一般的应用程序使用1024到4999来进行通讯;
      • 5001-65535:服务器(非特权)端口,用来给用户自定义端口。

    如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

  • 常用端口号

    以下均为默认端口号,即未经修改的端口号

    协议/服务名称端口号简介
    FTP20、21File Transfer Protocol 文件传输协议,20用于连接,21用于传输
    SSH22[Secure Shell](https://baike.baidu.com/item/Secure Shell) 安全外壳协议,专为远程登录会话和其他网络服务提供安全性的协议
    TELENT23不安全的文本传送
    SMTP25Simple Mail Transfer Protocol 简单邮件传输协议
    DNS53Domain Name System 域名系统,域名解析
    HTTP80Hyper Text Transfer Protocol 超文本传输协议,用于网页浏览
    pop3110Post Office Protocol
    HTTPS443Hypertext Transfer Protocol Secure 超文本传输安全协议,用于安全浏览网页
    WWW8080Apache Tomcat web server,进行网页浏览

利用协议+IP地址+端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其它进程进行交互。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江七7

感谢大佬的赏赐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值